0

私のケース 1 の Excel マクロ コードは、検索によってデータが見つかっている限り実行されますが、検索結果に何もない場合は、指定されたエラーが表示されます。そこで、ケース 2 を参照して「セット」を入れてみました...しかし、そのケースはどの検索でも爆撃します。

ケース 1: 実行時エラー '91': オブジェクト変数または With ブロック変数が設定されていません

 Cells.Find(What:=sCurrentISOtext & "_", After:=ActiveCell, _
            LookIn:=xlFormulas, LookAt :=xlWhole , _
           SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
            MatchCase:= False, SearchFormat:=False).Activate

ケース 2: 実行時エラー '424': オブジェクトが必要です

  Dim c As Range 

  Set c = Cells.Find(What:=sCurrentISOtext & "_", After:=ActiveCell, _
                     LookIn:=xlFormulas, LookAt :=xlWhole, _
                     SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
                     MatchCase:= False, SearchFormat:=False).Activate

こんな感じですか??それでも失敗します。

ケース 3: 実行時エラー '91': オブジェクト変数または With ブロック変数が設定されていません

Dim c As Range      

c = Cells.Find(What:=sCurrentISOtext & "_", After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlWhole = 0, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase _
        :=False, SearchFormat:=False)

If Not c Is Nothing Then   
    c.Activate     
    ' and do something here < > 
End If 
4

2 に答える 2

4

これは当然失敗します。null (失敗) の結果で「activate」を呼び出しているため、実行時にアクティブ化するものはありません。Ifステートメントでラップする必要があります-

Dim c As Range

Set c = Cells.Find(What:=sCurrentISOtext & "_", _
                   After:=ActiveCell, _
                   LookIn:=xlFormulas, _
                   LookAt:=xlWhole = 0, _
                   SearchOrder:=xlByColumns, _
                   SearchDirection:=xlNext, _
                   MatchCase:= False, _
                   SearchFormat:=False)

If c Is Nothing Then
    'do something
Else
    c.Activate
End If
于 2013-10-03T05:10:31.513 に答える
-1

急いでいるときに私が使用する醜い回避策を次に示します。もっと洗練されたエラートラップがありますが、これで完了です。

On Error GoTo notFound
Dim c As Range

Set c = Cells.Find(What:=sCurrentISOtext & "_", _
                   After:=ActiveCell, _
                   LookIn:=xlFormulas, _
                   LookAt:=xlWhole = 0, _
                   SearchOrder:=xlByColumns, _
                   SearchDirection:=xlNext, _
                   MatchCase:=False, _
                   SearchFormat:=False)
c.Activate
Exit Sub

notFound:

Application.InputBox "Could not find the range you wanted." 
' >> You can put in whatever action you want here -- for example,        <<
' >> if you're using this as a module, then "Exit Sub" or "Goto nextOne" <<
' >> could be used go to the next step in your process.                  <<
于 2015-10-30T01:55:14.940 に答える