シート間で検索をする場合。

記事
学び
過去のブログにて、VBAにおいてFind メソッドの使用方法を記載したことがあります。
エラーの処理についても大切ですが、
Findメソッドをシート間で使用したい場合のアイデアについて記載します。

同一のシート内でFindメソッドを利用する場合は、問題は生じにくいです。

シートを切り替えて操作する際に、シートをActivateしないと操作できません。

この事象は、Aというシート(以下:Aシート)内にあるセル(A1)の検索条件をBというシート(以下:Bシート)で探す場合に解決しなければならない
問題となります。

VBAにて、
Sheets("B").Range("B:B").Find(What:=Sheets("A").range("A1").value,_  LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns)


Aシート上の、A1セル内の値を、BシートのB列で探すことを
意図していますが、上記のコードではエラーがでてしまいます。


解決策としては、
AシートのA1セルの値を変数に代入します。

Dim i as string  
Findメソッドでは、検索条件に文字列を指定する必要があるため、string

i = Sheets("A").cells(1,1).value

Sheets("B").Range("B:B").Find(What:= i ,_ LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByColumns)

以上のVBAになれば、エラーがでなくなることは確認済みです。

ちなみに、Sheetsを指定する場合は、selectionではエラーがでるので、
Activateが必要です。

















サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す