错误:将变量设置为选择 - 一个或多个单元格

时间:2013-08-21 12:48:42

标签: vba excel-vba excel

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

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

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

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

1 个答案:

答案 0 :(得分:1)

原因是因为您正在使用变体而Excel正在猜测cellValue应该是什么类型的值。当你发送一个范围内的多个单元格的值时,它变成一个二维数组,当你发送一个单值时,它就像一个双重处理它。

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

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