5

リストからユーザーID番号を探しています。ただし、一部のユーザーはもう存在しません。私はそのtest方法、on error go to方法、そしてif err.number<> 0 then方法を試しました。私はまだ受け取りますRun-time error '91': object variable or with block variable not set。その番号はリストにありません。以下は、2、3の無駄な試みをした私のコードです

On Error GoTo errorLn

If Err.Number <> 0 Then
 GoTo errorLn
End If
Cells.Find(What:=uSSO, After:=ActiveCell, LookIn:=xlFormulas, _
    LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
    MatchCase:=False, SearchFormat:=False).Select

他にどのようなオプションがありますか?それとも、「エラー」の行を間違えているのでしょうか。「cells.Find...」の前後に試してみました

4

4 に答える 4

13

おそらく、メッセージボックスとは違うことをしたいと思うでしょう。

Dim myCell As Range

Set myCell = Cells.Find(What:=uSSO, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)

If (Not myCell Is Nothing) Then
    MsgBox "something!"

Else
    MsgBox "nothing"
End If
于 2012-08-15T16:12:36.713 に答える
5

少しだけ再構築する必要があると思います。でエラーを処理することはベストプラクティスではありませんがOn Error Resume Next、これを試すことができます。

On Error Resume Next
Cells.Find(What:=uSSO, After:=ActiveCell, LookIn:=xlFormulas, _
    LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
    MatchCase:=False, SearchFormat:=False).Select

If Err.Number <> 0 Then
 '''Do your error stuff'''
 GoTo errorLn
Else
    Err.Clear
End If

それはあなたの状況に役立ちますか?

ソースhttp ://www.mrexcel.com/forum/excel-questions/143988-check-if-value-exists-visual-basic-applications-array.html

于 2012-08-15T16:08:32.087 に答える
5

これを試して

Sub Sample1()
    Dim oSht As Worksheet
    Dim uSSO As String
    Dim aCell As Range
    
    On Error GoTo Whoa
    
    '~~> Change this to the relevant sheet
    Set oSht = Sheets("Sheet1")
    
    '~~> Set User ID here
    uSSO = "User ID"
    
    Set aCell = oSht.Cells.Find(What:=uSSO, LookIn:=xlFormulas, _
    LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
    MatchCase:=False, SearchFormat:=False)
    
    '~~> Check if found or not
    If Not aCell Is Nothing Then
        MsgBox "Value Found in Cell " & aCell.Address
    Else
        MsgBox "Value Not found"
    End If
    
    Exit Sub
Whoa:
    MsgBox Err.Description
End Sub

また、私がカバー.Findしたこのリンクを読むことをお勧めします.FindNext

トピック:ExcelVBAでの.Findと.FindNext

リンクhttps ://web.archive.org/web/20160316214709/https://siddharthrout.com/2011/07/14/find-and-findnext-in-excel-vba/

于 2012-08-15T16:09:42.477 に答える
1

後世のために、これはエラー処理なしでそれを行う方法です(http://www.mrexcel.com/forum/excel-questions/519070-visual-basic-applications-error-handling-when-dealing- cells-find.html)。

Dim rngFound As Range

Set rngFound = Sheets("WhateverSheet").UsedRange.Find(What:="SoughtValue",LookIn:=xlFormulas)

If Not rngFound Is Nothing Then
  'you found the value - do whatever
Else
  ' you didn't find the value
End if
于 2014-12-09T09:49:46.037 に答える