Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.03.2010, 12:02   #1
cons
Новичок
Джуниор
 
Регистрация: 12.03.2010
Сообщений: 2
По умолчанию Автоматическая нумерация столбцов с учетом скрытых

Добрый день!

Помогите реализовать такую задумку:
Нужна автонумерация столбцов. причем при скрытии столбцов нумерация не должна прерываться, а должна продолжаться как будто этих скрытых столбцов нет.
Первый столбец с номером 1 можно считать константным и нескрываемым.
Если сделать простую формулу RC[-1]+1 , то скрытие столбцов нумерацию не меняет. т.е. если было 1,2,3. при скрытии 2го остается 1,3, а надо 1,2.
Стандартную функцию с нужным функционалом не нашел. Решил написать свою. Идея простая - если текущий столбец не скрыт, то берем для него номер предыдущего столбца + 1, если скрыт = оставляем номер не изменным (все равно его видно не будет).
Получилось такое:
Function GetNum(P, R)
If R.ColumnWidth > 0 Then GetNum = P + 1 Else GetNum = P
End Function
P - предыдущая ячейка, R - текущая
Недостатки:
1. по идее, текущую ячейку передавать не надо т.к. мы находимся в ней. недостаток не критичный.
2. не происходит автоматического пересчета при скрытии столбца. т.е. если изменить значение первого столбца, то все расчитается корректно по цепочке с учетом скрытых. а если просто выделить столбец и скрыть - ничего не происходит, нумерация остается прежней. не запускается "автопересчет". Этот недостаток критический т.к. собственно для автоматической перенумерации все и затевается.

P.S. Автоматические вычисления в параметрах Excel включены.
cons вне форума Ответить с цитированием
Старый 12.03.2010, 12:25   #2
Dophin
Форумчанин
 
Аватар для Dophin
 
Регистрация: 13.01.2010
Сообщений: 410
По умолчанию

вот пример. повесил макрос на селекшон чейнж. то есть пересчитывается при каждом изменении положения курсора.

Вообщем задумка есть, прикрутите куда надо)
Вложения
Тип файла: rar скрытие столбцов.rar (9.3 Кб, 92 просмотров)
Dophin вне форума Ответить с цитированием
Старый 12.03.2010, 12:54   #3
alex77755
Форумчанин
 
Аватар для alex77755
 
Регистрация: 14.02.2009
Сообщений: 753
По умолчанию

можно формулой
Код:
=ЕСЛИ(ЯЧЕЙКА("ширина";A1)<>0;A1+1;A1)
только в модуле листа принудительній пересчёт:
Код:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Лист1.Calculate
End Sub
помогу решить контрольные VB6, VBA (недорого)
Alex77755@mail.ru
alex77755 вне форума Ответить с цитированием
Старый 12.03.2010, 13:11   #4
cons
Новичок
Джуниор
 
Регистрация: 12.03.2010
Сообщений: 2
По умолчанию

Спасибо!
Пересчет в Worksheet_SelectionChange помогает.
Не идеально (приходится на другую ячейку "встать"), но вполне работает.

Последний раз редактировалось cons; 12.03.2010 в 13:12. Причина: граматическая ошибка
cons вне форума Ответить с цитированием
Старый 26.04.2010, 06:46   #5
SilverSmallFish
Пользователь
 
Регистрация: 10.03.2010
Сообщений: 25
По умолчанию

Здравствуйте! Извеняюсь что вклинилась в тему, но у меня почти такая же проблемка, только с учётом скрытых строк и плюс есть объединённые ячейки которые считать не надо.

Заранее спасибо!
SilverSmallFish вне форума Ответить с цитированием
Старый 26.04.2010, 08:33   #6
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Посмотрите вложение. При открытии файла, перехватываются ID команд скрытия и отображения строк и столбцов в соответствующих контекстных меню и назначается свой макрос, который скрывает и отображает строки и столбцы, а также перенумеровывает по порядку видимые строки (столбцы) во всем рабочем диапазоне листа. Попробуйте.
Вложения
Тип файла: rar AutoNum.rar (10.1 Кб, 112 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 27.04.2010, 09:14   #7
SilverSmallFish
Пользователь
 
Регистрация: 10.03.2010
Сообщений: 25
По умолчанию

SAS888 спасибо вам за помощь!

Но у меня скрытие строк, это следствие работы фильтра, и поэтому вся процедура заканчивается на Selection.Address = Selection.EntireRow.Address, оно у меня FALSE.
Возможно вы мне подскажите как выйти из этого положения, я пробовала видо изменить, ваш код, но тогда он не игнарирует объединёные ячейки и нумерует всё подряд. Вот так.

Заранее спсибо!
SilverSmallFish вне форума Ответить с цитированием
Старый 27.04.2010, 09:18   #8
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Для автофильтра (об нужно было сказать сразу), естественно, предложенный выше метод не годится.
Не хочу гадать и самостоятельно создавать файл, т.к. точно не знаю, как он должен выглядеть.
Прикрепите пример файла с Вашими объединенными ячейками. На другом листе покажите то, что Вам хотелось бы видеть после работы автофильтра (вставьте данные "вручную").
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 27.04.2010, 11:04   #9
SilverSmallFish
Пользователь
 
Регистрация: 10.03.2010
Сообщений: 25
По умолчанию

SAS888 вот файл, надеюсь будет понятно!

Заранее спасибо!
Вложения
Тип файла: zip 0907А.zip (19.4 Кб, 61 просмотров)
SilverSmallFish вне форума Ответить с цитированием
Старый 27.04.2010, 11:26   #10
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Посмотрите вложение. Что не так?
Вложения
Тип файла: rar 0907А_2.rar (16.0 Кб, 109 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Автоматическая нумерация договоров, добавление контрагентов kitten2 Microsoft Office Word 1 22.12.2009 15:24
Автоматическая нумерация строк в DBGrid Len@09 БД в Delphi 10 02.11.2009 17:41
Удаление скрытых столбцов после фильтрации. Garrison Microsoft Office Excel 7 02.09.2009 16:27
автоматическая нумерация Screame Microsoft Office Excel 4 01.08.2009 00:28
Автоматическая нумерация документов Лука Microsoft Office Excel 5 15.06.2009 21:59