vba运行时错误13 - 尝试执行循环时

Mik*_*lli 2 excel vba loops runtime-error excel-vba

我有这个代码

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
Run Code Online (Sandbox Code Playgroud)

但是我得到了单元格D4上的类型不匹配错误(第二个循环在单元格(4,4)之后开始.我不明白为什么我已经将速率声明为double并且当前单元格的值是双精度的(参见图像)附上)谢谢.在此输入图像描述

Bra*_*ney 5

我不能评论,因为我没有足够的代表,但我会打赌事情正在发生:

Do until ws.Columns(1) = Empty
Run Code Online (Sandbox Code Playgroud)

当我在一个新的工作簿中测试它时,我总是在测试时是否为true = column = empty.我相信这是因为"空"表示尚未分配值,并且它不是范围的属性.

我也同意R3uK.避免使用activecell和offset.如果你不知道有多少资源可以解决这个问题.通过单元格引用引用或使用数组要好得多.

最后,在没有任何错误处理或值检查的情况下减去值时,您可能还会遇到问题.因此,单元格可以包含例如字符串.如果您随后尝试减去或乘以此字符串,则会遇到错误.

我希望这有帮助!

编辑:完全错过了R3uK在我做之前处理空事的事实.