VBA中的奇怪错误消息,不应出现

VBA中的奇怪错误消息,不应出现,vba,Vba,我正在尝试编写一个简单的VBA代码,以在预定义范围内查找特定文本,并根据搜索字符串mykey选择大小写 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" Workshe

我正在尝试编写一个简单的VBA代码,以在预定义范围内查找特定文本,并根据搜索字符串mykey选择大小写

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 not set.,在处理所选deg的Case语句上,但每次运行代码时,都不会出现这种情况

6/10倍


为什么会发生这种奇怪的事情?

试试这个,不是真的回答,但是太长了,不能作为评论发表,很抱歉:

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

调整此选项,使其只适合所有情况下的一个声明,将其余的放在每个情况下,并可能每次添加不同的错误消息。如果在没有收到消息框的情况下仍然发生这种情况,那么您应该返回并告诉我们有关您所发现内容的更多信息。

您的查找方法实际上没有找到正确的结果

如果您使用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文本框在代码中是否有匹配项,或者执行一些验证/错误检查我无法为您执行验证,因为我不知道您的电子表格是什么样子,所以我添加了错误检查:。

Case Is=0 deg很尴尬,用例0度。否则错误意味着Find没有找到任何东西。不,同样的事情正在发生……第三个用例真的使用了不同的文本源吗?正如格斯伯格所说,这个错误意味着某些东西不存在:要么是感觉缺失,要么是没有发现射程。看,现实更复杂。。。关键字段的实际名称是topothesia,在任何情况下。。。我试图完成的是在一些表单向导中来回移动,例如,当我返回到上一个表单,然后返回到此表单时,我会收到错误消息。。。我想在这个过程中有些物体被炸了。如果我继续按“下一步”,我不会得到错误消息。是的,这确实起到了作用。。。我还是不明白为什么会这样。这与一些无法正常创建的对象有关。。。