使用VBA for excel 2010我试图检查C列中的值(由vlookup创建)是否为#N / A,然后获取相应行中A列中的值并将其放入列中D,程序显示没有错误,但每次运行时Excel都会崩溃。
这是代码:
Sub casesVsQueue()
Dim loop_counter As Integer
Dim colD_counter As Integer
loop_counter = 1
colD_counter = 2
do until isempty(Sheets("Sheet1").Range("A" & loop_counter).Value)
If iserror(Sheets("Sheet1").Range("C" & loop_counter).Value) Then
Sheets(“Sheet1”).Range("D"& colD_counter).value = Sheets(“Sheet1”).Range("A" & loop_counter).value
loop_counter = loop_counter + 1
End If
Loop
End Sub
答案 0 :(得分:2)
根据上述评论:
三件事:
loop_counter需要在If之外。否则,一旦If不解析为true,它将在同一个单元格上循环,直到用户关闭Excel。
"智能行情"需要更改为常规报价。正如蒂姆·威廉姆斯所说,这通常来自于像Word这样的另一种媒体的复制和粘贴。
缺少colD_counter。如果没有这个,输出将始终放在同一个单元格中。
守则:
Sub casesVsQueue()
Dim loop_counter As Integer
Dim colD_counter As Integer
loop_counter = 1
colD_counter = 2
Do Until IsEmpty(Sheets("Sheet1").Range("A" & loop_counter).Value)
If IsError(Sheets("Sheet1").Range("C" & loop_counter).Value) Then
Sheets("Sheet1").Range("D" & colD_counter).Value = Sheets("Sheet1").Range("A" & loop_counter).Value
colD_counter = colD_counter + 1
End If
loop_counter = loop_counter + 1
Loop
End Sub