Как добавить пустую строку в Excel VBA? - PullRequest
0 голосов
/ 08 января 2020

Я новичок в VBA и пытаюсь написать код VBA, который может добавить новую строку, если последняя строка пуста. Однако, когда я использую этот код, происходит то, что он добавляет строки в местах, которые не имеют смысла. Моя последняя строка - строка 15. Когда я пытаюсь запустить код для строки 15, она добавляет строку после строки 15 независимо от того, является ли она пустой или нет, когда я запускаю код для строки 14, она добавляет строку после строки 4, независимо от того, является ли она пусто или нет. Когда я запускаю код для строки 13, он ничего не делает, независимо от того, пустой он или нет.

'
' Add_A_Row Macro
' Adding a row to a row that is not blank
'
' Keyboard Shortcut: Ctrl+Shift+A
'
  Dim sh As Worksheet
  Dim rw As Range
  Dim RowCount As Integer

  RowCount = 0

  Set sh = ActiveSheet
  For Each rw In sh.Rows

    If sh.Cells(rw.Row, 15).Value <> "" Then
        rw.Insert Shift:=xlShiftDown, CopyOrigin:=xlInsertFormatOriginConstant
    Debug.Print ("Hit")
    Exit For
    End If

Next rw

End Sub

1 Ответ

0 голосов
/ 08 января 2020

Вы могли поменять местами строки и столбцы в вашем состоянии. Я также предложил бы использовать для l oop вместо foreach l oop - с помощью для l oop вы лучше контролируете, что именно делается и в каком порядке.

Общее решение вашей проблемы будет что-то вроде:

Sub AddRowsIfNotEmptyCell(wks As Worksheet, columnToCheck As Long)

    Dim i As Long

    'loop backwards in order not to analyze rows we just added
    For i = wks.UsedRange.Rows.Count To 1 Step -1
        If wks.Cells(i, columnToCheck).Value <> vbNullString Then
            'insert a row below
            wks.Rows(i + 1).Insert Shift:=xlShiftDown
        End If
    Next i

End Sub
...