我正在尝试编写一个简单的VBA代码,以根据搜索字符串(mykey)在预定义的Range和Select Case中查找特定文本。
Dim min As Integer
Dim R As Range
Dim month As String
Worksheets("MyWorkSheet").Activate
If mykey.Text <> "" Then 'mykey being a combobox
Select Case mykey.Text
Case Is = "0 deg"
Worksheets("MyWorkSheet").Range("B4:B39").Find(mykey.Text).Activate
Case Is = "30 deg"
Worksheets("MyWorkSheet").Range("B44:B79").Find(mykey.Text).Activate
Case Is = "45 deg"
Worksheets("MyWorkSheet").Range("B84:B119").Find(topothesia.Text).Activate
Case Is = "60 deg"
Worksheets("MyWorkSheet").Range("B124:B159").Find(mykey.Text).Activate
Case Is = "90 deg"
Worksheets("MyWorkSheet").Range("B164:B199").Find(mykey.Text).Activate
End Select
偶尔!当我运行代码时,我得到一个错误信息说: 对象变量或With Block Variable未设置。,在处理所选deg的Case语句上,但每次运行Code时都没有出现。
它是它的6/10倍。为什么会发生这种奇怪的事情?
答案 0 :(得分:0)
试试这个(不是真的回答,但是发表评论的时间太长,抱歉):
Dim rng As Range
Set rng = Worksheets("MyWorkSheet").Range("B4:B39").Find(mykey.Text)
If Not rng Is Nothing Then
rng.Activate
Else
MsgBox "Nothing found"
End If
使其适合所有情况(只有一个声明,在每种情况下放置其余声明,并且每次可能添加不同的错误消息)。如果在没有收到消息的消息框的情况下仍然会发生这种情况,那么您应该回来告诉我们您发现的内容。
答案 1 :(得分:0)
您的查找方法实际上并未找到正确的结果。
如果您使用Find
并且不找到匹配项,那么如果您尝试对结果执行某些操作(例如您的Activate
),则会返回该错误 - 这可能是因为文本框中的数据与B
列中的内容不匹配。
尝试这样的事情:
Dim min As Integer
Dim R As Range
Dim month As String
Worksheets("MyWorkSheet").Activate
dim result as Range
If mykey.Text <> "" Then 'mykey being a combobox
Select Case mykey.Text
Case Is = "0 deg"
set result = Worksheets("MyWorkSheet").Range("B4:B39").Find(mykey.Text)
Case Is = "30 deg"
set result = Worksheets("MyWorkSheet").Range("B44:B79").Find(mykey.Text)
Case Is = "45 deg"
set result = Worksheets("MyWorkSheet").Range("B84:B119").Find(topothesia.Text)
Case Is = "60 deg"
set result = Worksheets("MyWorkSheet").Range("B124:B159").Find(mykey.Text)
Case Is = "90 deg"
set result = Worksheets("MyWorkSheet").Range("B164:B199").Find(mykey.Text)
End Select
'notify on a lack of result
if (result is nothing) then
msgbox( "No successful match found for " & Is & "!")
end if
这有助于隔离您的问题。您可能必须以某种方式验证mykey
和topothesia
文本框在您的代码中实际上是否匹配,或进行一些验证/错误检查(我无法为您进行验证,因为我不知道您的电子表格是什么样的,所以我添加了错误检查:))。