Macro: insere uma nova linha acima de uma célula contendo um valor

0

Eu tenho uma coluna contendo os seguintes valores: A1 = 0 A2 = 1 A3 = 3 A4 = 4 A5 = 0 A6 = 1

Eu desejo selecionar a coluna A e inserir uma nova coluna acima de qualquer instância de 0.

Eu tentei o seguinte código, mas estou recebendo erros e não tenho certeza do que está errado. Eu acredito que é OFFSET que está causando o problema, não tenho 100% de certeza.

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

Diz o seguinte:

Run-time error '1004': Application-defined or object-defined error.

Em seguida, destaca c.Offset(-1, 0).EntireRow.Insert no código

    
por NeverPhased 14.10.2014 / 11:53

1 resposta

1

Não há célula em Range("A1").offset(-1) , por isso falha porque o objeto não existe. Altere A1 para outra coisa e funcionará de outra forma.

Isso é provavelmente o que você quer fazer -

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

Mas você ficará preso em um loop infinito apenas com este código. Você deveria ter algo assim em vez disso -

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
    
por 14.10.2014 / 13:58