vba运行时错误13 – 当试图执行一个循环

我有这个代码

Sub fillinvalues() Dim interest As Double Dim rate As Double Dim payment As Double Dim period As Double Dim ws As Worksheet Dim i As Object Dim begbal As Double Set ws = Worksheets("Sheet1") payment = ws.Range("H3").Value rate = ws.Range("H4").Value begbal = ws.Range("E3").Value begbal = 80000 Worksheets("Sheet1").Range("A2").Value = "PaymentNumber" Worksheets("Sheet1").Range("B2").Value = "Payment/period" Worksheets("Sheet1").Range("C2").Value = "Principal" Worksheets("Sheet1").Range("D2").Value = "Interest" Worksheets("Sheet1").Range("E2").Value = "RemainingBal" ws.Range("A1:G1").Value = "Monthly Payments at effective monthy interest rate for 25-years" ws.Range("A3").Value = 0 ws.Range("A3").Select ws.Range("A3").Activate period = 0 Do Until period = 301 ' period = 0 ActiveCell.Offset(period, 0) = period ActiveCell.Offset(period, 1) = payment period = period + 1 Loop Cells(3, 2).ClearContents Cells(4, 4).Select Do Until ws.Columns(1) = Empty ActiveCell.Value = ActiveCell.Offset(-1, 1).Value * rate ActiveCell.Offset(0, -1).Value = ActiveCell.Offset(0, -2).Value - ActiveCell.Value 'For Each i In ws.Columns(4) 'i = ActiveCell.Offset(-1, 1).Value * rate 'ActiveCell.Value = i ActiveCell.Offset(0, 1).Value = ActiveCell.Offset(-1, 1).Value - ActiveCell.Offset(0, -1).Value ActiveCell.Offset(1, 0).Activate 'Next i Loop End Sub 

但是我得到了单元格D4的types不匹配错误(第二个循环在单元格(4,4)之后开始),我不明白为什么,因为我已经声明rate为double,而当前单元格的值是double(请参见图像附)谢谢。 在这里输入图像说明

我不能评论,因为我没有足够的代表,但我敢打赌,事情正在进行:

 Do until ws.Columns(1) = Empty 

当我在一个新的工作簿中testing这个时,我总是在testingcolumn = empty时得到了结果。 我相信这是因为“空”意味着一个值没有被赋值,它不是范围的一个属性。

我也同意R3uK。 避免使用activecell和偏移。 如果你不知道这个问题是否有足够的资源。 引用单元格引用或使用数组要好得多。

最后,在没有任何error handling或值检查的情况下,您可能还会遇到一个问题。 就像一个单元格可能包含一个string,例如。 如果你试图减去或乘以这个string,你会遇到一个错误。

我希望这有帮助!

编辑:完全错过了R3uK处理空的事情之前,我做的事实。