为什么分配单元格的值属性导致代码结束?
Private Sub FillRow(programCell As Range, storedProgramCell As Range) Dim counter As Integer For counter = 3 To 9 Dim cellOffset As Integer cellOffset = counter - 3 Dim currentStoredCell As Range Set currentStoredCell = storedProgramCell.Offset(0, cellOffset) Dim value As String value = currentStoredCell.value Dim currentTargetCell As Range Set currentTargetCell = programCell.Offset(0, cellOffset) MsgBox currentStoredCell.value 'Works correctly, prints correct value currentTargetCell.value = value Next counter End Sub
该行:
currentTargetCell.value = value
导致代码停止执行,没有错误。
我把表情加到了我的观察清单上,然后逐步完成了这个例程。 expression式被看作是一个Boolean
:
这使我认为expression式被看作是一个比较,程序突然结束,因为返回的Boolean
值不被存储或在任何地方使用。 我不会怀疑,如果我错了。
我是VBA新手,努力debugging我的程序,所以请原谅我,如果这是一个小错误。 我在网上找不到任何资料来解释这个问题。
用下面的代码replace你的子程序:
Private Sub FillRow(Dst As Range, Src As Range) Dim x As Integer Dim v As Variant Dim Srcx As Range Dim Dstx As Range Debug.Print "FillRow" Debug.Print Src.Address Debug.Print Dst.Address Debug.Print "Loop" For x = 0 To 6 Debug.Print x Set Srcx = Src.Offset(0, x) Debug.Print Srcx.Address v = Srcx.Value Debug.Print TypeName(v) Set Dstx = Dst.Offset(0, x) Debug.Print Dstx.Address Dstx.Value = v Next Debug.Print "Completed" End Sub
运行并发布您的问题立即窗口输出。
值是一个保留字,即使vba不会在这个名称上产生错误,您也不应该使用它。 把它命名为别的。 另外,尝试将其设置为变体。