为什么在使用Visual Basic将excel文件导出为CSV时会出现此错误?
当出现错误消息并单击“调试”时,它会显示我附带的visual Basic中的代码 要解决此问题,我们必须:为什么在使用Visual Basic将excel文件导出为CSV时会出现此错误?,excel,vba,csv,Excel,Vba,Csv,当出现错误消息并单击“调试”时,它会显示我附带的visual Basic中的代码 要解决此问题,我们必须: 1.将突出显示的黄色行退格到上一行 2.然后将其返回到原始位置。这样做会将黄色/错误突出显示“移动”到下一行。 3.如果CICheck“CI”和Cost>0,则继续将黄色/错误突出显示“推”到第1行1 4.在VBE中重新运行程序。 5.关闭VBE 6.导出的CSV应存在于原始Excel文件的CSV选项卡中 AltContract = Cells(j, 1) CICheck = Cel
1.将突出显示的黄色行退格到上一行
2.然后将其返回到原始位置。这样做会将黄色/错误突出显示“移动”到下一行。
3.如果CICheck“CI”和Cost>0,则继续将黄色/错误突出显示“推”到第1行1
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
AltContract=单元格(j,1)
CICheck=单元(j,2)
如果Len(AltContract)>0,则“在CI组或Alt CI之间拾取CI编号”
SetContract=AltContract
其他人没有替代合同
对于i=1到1000'循环,从上方设置CI
如果单元(j-i,2)=“CI”,则“0”,则
直到单元格(j+i,2)“CI”为止
如果Len(细胞(j+i,1))>0,则转到下一个滴度
i=i+1
您需要限定单元格
对象。
您可以直接使用
此工作簿.Sheets(“Sheet1”).Cells(j-1,2)
(希望
j
这里有一个在代码中其他地方正确定义的整数)
一个更快的方法是使用以下命令创建一个资格认证快捷方式:
Dim ws as WorkSheet
Set ws = Thisworkbook.Sheets("Sheet1")
然后使用ws.Cells(j-1,2)
另一种方法是将
与
块一起使用
Dim ws as WorkSheet
Set ws = Thisworkbook.Sheets("Sheet1")
With ws
.Cells(j-1, 2)
End With
或
您应该缩进代码以排列循环。会让你更容易看到你的屏幕截图上没有错误信息。。。错误的实际文本是什么?(你的问题包括它!)-也就是说,非限定的
单元格
调用是对ActiveSheet
的隐式引用,这取决于代码的编写位置。@MathieuGuindon有一张错误的照片。它看起来只是一个链接,但实际上有两个链接。鬼鬼祟祟的操作。运行时错误1004
@urderboy-gah,明白了。固定的
With Thisworkbook.Sheets("Sheet1")
.Cells(j-1, 2)
End With