У меня есть столбец, содержащий следующие значения: A1 = 0 A2 = 1 A3 = 3 A4 = 4 A5 = 0 A6 = 1

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

Я пробовал следующий код, но я получаю ошибки и не уверен, что не так. Я считаю, что это смещение вызывает проблему, я не уверен на 100%.

Dim c As Range
  For Each c In Range("A:A")
    If c.Value Like "0" Then
      c.Offset(-1, 0).EntireRow.Insert
    End If
  Next c

Это говорит следующее:

Ошибка времени выполнения «1004»: ошибка приложения или объекта.

Тогда это подчеркивает c.Offset(-1, 0).EntireRow.Insert в код

1 ответ1

1

В Range("A1").offset(-1) , поэтому происходит сбой, так как объект не существует. Замените A1 на что-то другое, и оно будет работать иначе.

Это, вероятно, то, что вы хотите сделать -

Sub test()
Dim c As Range
  For Each c In Range("A:A")
    If c.Value Like "0" Then
      Rows(c.Row).Insert shift:=xlDown
    End If
  Next c
End Sub

Но вы просто застряли в бесконечном цикле только с этим кодом. У вас должно быть что-то вроде этого -

Sub test()
Dim d As Integer
d = Range("A:A").End(xlDown).Row
Dim c As Range
  For i = d To 1 Step -1
    If Cells(i, 1).Value Like "0" Then
      Rows(Cells(i, 1).Row).Insert shift:=xlDown
    End If
  Next
End Sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .