use*_*971 2 excel vba excel-vba
我有一个我完全不明白的问题:
i = 150
If ActiveWorkbook.Worksheets("foobar").Cells(i, 3).Value Like "*:*" Then
MsgBox "I found a colon!"
End If
Run Code Online (Sandbox Code Playgroud)
正如您可能猜到的那样,表格foobar在位置(150,3)处有一个包含冒号的单元格,因此会显示消息框.
现在我想这样做:
i = 150
Cell = ActiveWorkbook.Worksheets("foobar").Cells(i, 3).Value 'fails right here
If Cell Like "*:*" Then
MsgBox "I found a colon!"
End If
Run Code Online (Sandbox Code Playgroud)
这里给出了一个错误,说"对象变量或没有设置块变量.实际上说:
Sheet = ActiveWorkbook.Worksheets("foobar")
Run Code Online (Sandbox Code Playgroud)
给出了类似的信息.为什么?我究竟做错了什么?我只想要一个对象的引用,或者至少是一个refence.
底线:
Set.Sheet,Workbook,Range,都是对象.因此,Set在将它们分配给变量时需要使用.
A Range.Value返回Variant(可以是long,一个字符串等)所以,你不能使用Set.
==========================
现在,关于你的错误消息......我会说,在你的代码之前,可能Cell 会被声明为对象.尝试使用另一个变量名,或检查Cell变量类型.
要检查这一点,请右键单击它,然后单击"定义".声明它Variant可能会解决问题(但要注意它可能导致的副作用).
==========================
*我知道这些类型不是"原始的"; 为了解释清洁,我在这里作为一个例子.