对于excel 2010的VBA,excel不断崩溃

时间:2016-06-03 19:40:15

标签: excel vba excel-vba

使用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

1 个答案:

答案 0 :(得分:2)

根据上述评论:

三件事:

  1. loop_counter需要在If之外。否则,一旦If不解析为true,它将在同一个单元格上循环,直到用户关闭Excel。

  2. "智能行情"需要更改为常规报价。正如蒂姆·威廉姆斯所说,这通常来自于像Word这样的另一种媒体的复制和粘贴。

  3. 缺少colD_counter。如果没有这个,输出将始终放在同一个单元格中。

  4. 守则:

    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