Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(指定なし : 指定なし)
Sheet1上でSheet2の値のFindは可能か?
投稿日時: 19/10/30 13:46:51
投稿者: taichi

   Sheet1上で作業をしています。
  
  Dim myFind As Range
  
    On Error Resume Next
    Set myFind = Sheet2.Columns(10).Find(What:="moug", LookAt:=xlWhole)
    Cells(myFind.row, myFind.Column).Activate <---- Sheet1
 
 実行時エラー 91 が出ます

回答
投稿日時: 19/10/30 14:31:47
投稿者: 半平太

Sheet2のJ列中に目的のデータがあって、myFindが取得できれていれば、問題ないですけど。
 
myFind が Nothing になってないか調べてみてください。
 
つーか、On Error Resume Next で先に進んでいるので、
エラーだった場合も想定してコーディングしないとマズいですよ。
 

投稿日時: 19/10/30 15:05:04
投稿者: taichi

ありがとうございました。
別シートの検索もできました。
 
<エラーだった場合も想定してコーディングしないとマズいですよ。>
On Error Resume Next を外して
If myFind Is Nothing then でよろしいでしようか?

回答
投稿日時: 19/10/30 16:12:07
投稿者: 半平太

>On Error Resume Next を外して
>If myFind Is Nothing then でよろしいでしようか?
 
初めから、On Error Resume Next を無くしたら、該当無い場合に
実行時エラーで止まるんで、それもマズですよね?
 
私ならこうしますね。
    

  Dim myFind As Range
    
    On Error Resume Next
        Set myFind = Sheet2.Columns(10).Find(What:="moug", LookAt:=xlWhole)
    On Error GoTo 0 '元に戻す(いつまでも、残しておかない。エラー箇所が特定できなくなる)
    
    If Not myFind Is Nothing Then
        Cells(myFind.Row, myFind.Column).Activate '<---- Sheet1
    End If

投稿日時: 19/10/30 18:26:19
投稿者: taichi

半平太 さんありがとうございます。
 
やっぱり、エラー回避 相談してよかったです。
 
ありがとうございました。