使用Visual Basic将Excel文件导出到CSV时,为什么会出现此错误?

时间:2018-07-03 20:26:29

标签: excel vba csv

出现错误消息并单击“调试”时,它会显示我也已附加的Visual Basics中的代码。

Error Message

要解决此问题,我们必须:
1.将黄色突出显示的行退格到上一行
2.然后将其返回到原始位置。这样做会将黄色/错误突出显示“移动”到下一行。
3.继续将“黄色/错误”突出显示“推入”行1如果CICheck <>“ CI”,并且Cost> 0 Then1
4.在VBE中重新运行程序。
5.关闭VBE
6.导出的CSV应该存在于原始Excel文件的CSV标签中。

 AltContract = Cells(j, 1)
 CICheck = Cells(j, 2)


If Len(AltContract) > 0 Then 'picking CI num between CI group or Alt CI
    SetContract = AltContract

Else 'no alt contract

    For i = 1 To 1000 'loop to set CI from above
    If Cells(j - i, 2) = "CI" Then '<~~~ ERRROR HERE
    BillDsc = Cells(j - i, 7)
    BillGrp = Cells(j - i, 6)
        Exit For
    End If
    Next
End If


If CICheck <> "CI" And Cost > 0 Then


Do Until Cells(j + i, 2) <> "CI"

    If Len(Cells(j + i, 1)) > 0 Then GoTo NextIteration

   i = i + 1

1 个答案:

答案 0 :(得分:1)

您需要限定Cells对象。


您可以直接使用Thisworkbook.Sheets("Sheet1").Cells(j-1, 2)
执行此操作 (希望j是在您的代码的其他位置正确定义的整数)


一种更快的方法是使用以下方法创建资格证书的快捷方式:

Dim ws as WorkSheet
Set ws = Thisworkbook.Sheets("Sheet1")

,然后使用ws.Cells(j-1, 2)

恢复您的资格

另一种实现方法是使用With块。

Dim ws as WorkSheet
Set ws = Thisworkbook.Sheets("Sheet1")

    With ws
        .Cells(j-1, 2)
    End With

With Thisworkbook.Sheets("Sheet1")
    .Cells(j-1, 2)
End With