为什么分配单元格的值属性导致代码结束?

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不会在这个名称上产生错误,您也不应该使用它。 把它命名为别的。 另外,尝试将其设置为变体。