Автоматическое заполнение следующего числа в строке vba

У меня есть VBA ниже, который заполняет следующий номер в строке. Но у меня есть проблема, я продолжаю получать сообщение об ошибке, когда автоматически подставляется следующий номер. Данные находятся в таблице, и я получаю следующую ошибку:

Таблица начинается с одной строки в строке 2. Я ввожу данные в H2, которые заполняются нормально, но отображается ошибка, я делаю то же самое для строки 3 и снова в порядке. Затем я делаю строку 4, и формула начинает копировать значение строки 3, а затем я ввожу строку 5, и она копирует значение строки 3. Ошибка, которую я получаю в I3,

formula refers to an empty cell

Я проследил его, и он говорит, что H2 пуст (это не так).

Код:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rng As Range, cel As Range
    Set rng = Intersect(Target, Range([H2], Cells(Rows.Count, "H").End(xlUp)))

    If rng Is Nothing Then Exit Sub
    Application.EnableEvents = False

    For Each cel In rng.Offset(, 1)
        cel.FormulaR1C1 = "=IF(RC[-1]<>"""",R1C[6] & ""-"" &" & _
            "TEXT(COUNTA(R2C[-1]:RC[-1]),""0000"") & ""-"" & R1C[7],"""")"
    Next

    Application.EnableEvents = True
End Sub

Может кто поможет исправить ошибку?

Благодарность!

Я не могу воспроизвести вашу проблему. Если я использую ваш код и начинаю вводить данные в столбце H вниз, он начинает записывать -0001-, -0002- и так далее в столбце I. Я не могу произвести ошибку в этих формулах, даже если я опустошу H2, он просто удалит счетное число из I2 и вместо этого начинает отсчет с I3.

Pᴇʜ 10.09.2018 09:44

Обратите внимание, что вместо всего цикла For Each вы можете сделать это за один шаг, используя rng.Offset(, 1).FormulaR1C1 = "=IF(RC[-1]<>"""",R1C[6] & ""-"" &" & "TEXT(COUNTA(R2C[-1]:RC[-1]),""0000"") & ""-"" & R1C[7],"""")".

Pᴇʜ 10.09.2018 09:49

спасибо за проверку и предоставление обновления. Теперь я заметил, что код работает вне таблиц. как только я помещаю его в таблицу, он делает то же самое. спасибо, что изучили это!

DMO 10.09.2018 10:43

В «таблице» вам нужно будет изменить свой код, чтобы он работал с Range внутри ListObject.

Rik Sportel 10.09.2018 15:17
0
4
41
0

Другие вопросы по теме