Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование, связанное с MS Office > Про макрос


Автор: voDizz 25.3.2009, 09:56
Добрый день, форумчане!

Есть такая тема - я написал макрос, который заполняет столбец (А) номерами по порядку, причем если во втором столбце (В) строка пустая, то в заполняемом тоже пропускается место, а дальше продолжает нумеровать. Вот как это выглядит:


Код

№  |  A   |    B
-----------------------
1   |   1   |   asd
2   |   2   |   fdgh
3   |        |   
4   |   3   |   ptyi
5   |   4   |   fglk
6   |        |   
7   |        |   
8   |        |   
9   |   5   |   ityu
10 |   6   |   poyiu



А вот сам код

Код

Function NextNPP(cellData As Range)
    r = cellData.Row - 1
    c = Selection.Column
    
        If Len(cellData.Value) > 0 Then
            For i = 0 To r
                If Len(Cells(r - i, c).Value) > 0 Then
                    NextNPP = Cells(r - i, c).Value + 1
                    Exit For
                End If
            Next
        Else
            NextNPP = ""
        End If
End Function



Этот код я написал в модуле и файл сохранил с расширением xla, типа надстройка, а дальше подключил его в экселе и работаю как со стандартными функциями.
Но вот в чем проблема... Когда я меняю колонку В, то колонка А автоматически естественно не меняется, остается как было. 
Что нужно дописать, чтобы колонка А менялась в зависимости от изменений колонки В?

Автор: Naghual 25.3.2009, 11:21
Цитата(voDizz @  25.3.2009,  09:56 Найти цитируемый пост)
чтобы колонка А менялась в зависимости от изменений колонки В? 

Это будет не целесообразно, так-как при ЛЮБОМ изменении данных или формата ячейки будет в цикле изменен весь столбец Б.
При необходимости внести ряд изменений в данные в А вы столкнетесь с проблемой торможения вашей работы вашим-же макросом.

Я предлагаю Вам вынести на панель инструментов кнопку для запуска данного мастера, и нажимать на нее по окончании редактирования.

Автор: RockClimber 30.3.2009, 09:36
Тут макрос вообще не нужен.
В столбец А пишем: в первую строчку - 1, во вторую - формулу: "=ЕСЛИ(B2="";"";МАКС($A$1:A1)+1)" и растягиваем ее до конца столбца.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)