VBA динамическая нумерация в столбце - PullRequest
0 голосов
/ 07 января 2019

Я пытаюсь написать код для динамической нумерации в столбце. Я вставляю данные с помощью пользовательской формы сверху вниз (поэтому новые данные всегда находятся во второй строке (первая строка для заголовков).

Для столбца A мне нужна нумерация для каждого ввода данных. Позвольте привести пример:

        Numeration   Columns2   Column3     
Row1         2       Value      Value        
Row2                 Value      Value
Row3                 Value      Value
---------------------------------------------------
Row4         1       Value      Value        
Row5                 Value      Value       

Теперь я хочу короткий макрос, который всегда вставляет в ячейку A2 следующий номер. Это должно быть динамично, потому что иногда я добавляю 3 строки данных, а иногда больше или меньше строк. Поэтому он должен найти в столбце A следующий номер, добавить +1 к нему и вставить его в ячейку A2.

Надеюсь, понятно, что я хочу сделать.

Ответы [ 2 ]

0 голосов
/ 07 января 2019

Если ваш "-----" также добавлен, вы можете использовать следующее.

Это моя таблица, начинающаяся с А1

=IF(ROW()=1,1,IF(RIGHT(OFFSET(A1,-1,0),1)="-",MAX(OFFSET($B$1,0,0,ROW()-1,1))+1,""))

Вы также можете расширить проверку right, скажем, 3 символа = "---", чтобы охватить любые значения -ve, если это необходимо.

0 голосов
/ 07 января 2019

Используйте метод WorksheetFunction.Max , чтобы найти максимум в столбце A и добавить + 1.

With Worksheets("SheetName")
    .Range("A2").Value = WorksheetFunction.Max(.Columns("A")) + 1
End With

Обратите внимание, что WorksheetFunction.Max создает исключение, если, например, формулы, содержащие ошибки в столбце A, поэтому вы можете захотеть отловить ошибку, используя Обработка ошибок .


Альтернативное решение (в соответствии с предложением Zac)

  1. Выберите значение A2 до того, как добавите строки.
  2. Добавить строки
  3. Написать выбранное значение + 1
* 1 028 * Пример:
Dim PickValue As Long
PickValue = Worksheets("SheetName").Range("A2").Value

'add your rows here now

Worksheets("SheetName").Range("A2").Value = PickValue + 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...