0

我有以下代码,在更改受监控的工作表时调用该代码:

Public Sub selectionCallback(tag As String, ByVal target As Range)
    Set cellAddress = target
    Set cellValue = Nothing
    cellValue = target.Value
End Sub

当我尝试检索时,cellValue(1, 1)我没有问题 - 除非我只选择了一个单元格 - 然后我得到类型不匹配。

我正在使用这些值来比较新输入的数据,从而跟踪要通过电子邮件发送的更改。

4

1 回答 1

1

原因是您使用的是变体,而 Excel 正在猜测 cellValue 应该是什么类型的值。当您向它发送一个范围内多个单元格的值时,它会变成一个二维数组,当您向它发送单个值时,它会将其视为双精度数。

A a double 它没有索引值。一个简单的解决方法是使用以下代码,但这不是最佳实践,最好测试单元格值是否是单独函数中的数组。

Public Sub selectionCallback(tag As String, ByVal target As Range)

    Dim cellAddress As Range
    Dim cellValue As Variant

    Set cellAddress = target
    cellValue = target.Value

    On Error Resume Next
    MsgBox CStr(cellValue(1, 1))
    MsgBox cellValue
    On Error GoTo 0

End Sub
于 2013-08-21T13:08:38.303 回答