初学者的简单代码错误 - Excel VBA

时间:2016-07-14 09:03:43

标签: vba excel-vba if-statement find runtime-error

我的问题是:

  • 我在“Crono”表上有两列显示事件及其发生的位置。我需要添加两个包含事件开始日期和结束日期的列

该信息全部在另一张纸上(“Projetos Novo”)。 事件的数量是可变的,这就是我创建变量i的原因。

当我运行代码时,它显示为Run-time error '91': Object variable or With block variable not set

它实际上复制了前六个日期然后崩溃。

我需要你的帮助!!

Sub Datas()

Dim w As Long
Dim t As Long
Dim i As Long


t = Sheets("Crono").Cells(Rows.Count, "A").End(xlUp).Row


For i = 8 To t

w = Sheets("Projetos NOVO").Range("C:C").Find(Sheets("Crono").Range("A" & i).Value).Row


If Sheets("Projetos NOVO").Range("D" & w).Find(Sheets("Crono").Range("C" & i).Value).Row Then


Sheets("Crono").Range("F" & i).Value = Sheets("Projetos NOVO").Range("R" & w).Value
Sheets("Crono").Range("G" & i).Value = Sheets("Projetos NOVO").Range("S" & w).Value

Else

End If

Next i

End Sub

`

1 个答案:

答案 0 :(得分:0)

您应该使用Range变量,然后测试是否找到了来自 Crono 的值(如果找不到,您将收到您当前看到的错误);

Sub Datas()

Dim rng1 As Range
Dim t As Long
Dim i As Long

t = Sheets("Crono").Cells(Rows.Count, "A").End(xlUp).Row

For i = 8 To t

Set rng1 = Sheets("Projetos NOVO").Range("C:C").Find(Sheets("Crono").Range("A" & i).Value)
If Not rng1 Is Nothing Then
    MsgBox rng1.Row
Else
    MsgBox Sheets("Crono").Range("A" & i).Value & " not found"
End If