アプリケーションとしてのVBA Excel(エクセル) VBA の役立つ Tips の紹介

アプリケーションとしてのVBA

検索結果が1つだけの場合

◆検索1 検索結果が1つだけの場合


  Excel の表に目的のデータがあるかチェック・検索することは良くあります。

  Find を使うと簡単にできます。しかもかなり高速です。

  以下の説明は、検索結果がひとつしかないと分かっている場合の例です。

  Find の引数は沢山あるのですが、検索する値(What)以外は省略可能で、ほとんどの
  場合で他の引数はあまり気にしなくても使えます。

  詳細は Help を参照してください。

  基本的な使い方は、下記のように記述します。


  Dim FoundCell As Range

  Set FoundCell = 検索範囲 . Find(検索する値)    



'同じ基準keyを持つセルを検索します
Set FoundCell = Workbooks(SourceBook).Sheets(SourceSheet). _
                Columns(SourceKeyColumn). _
                Find(Range(DestinationKeyColumn & Format(i)))

If Not FoundCell Is Nothing Then        '検索した値があった
    '値の代入
    Range(DestinationInputColumn & Format(i)) =  FoundCell.Offset( 0, 3 )
End If



  Workbooks(SourceBook).Sheets(SourceSheet).Columns(SourceKeyColumn) は 
  1列全てを検索範囲に指定しています。

  Find(xxxx)で Book と Sheet を 省略しているのは、
  DestinationBook、DestinationSheet が Active になっているからです。

  現在どのシートが前面に来ているかを意識してプログラミングすることを心
  がけてください。

  If Not FoundCell Is Nothing Then は

  If FoundCell <> "" Then と同じ意味なのですが、上記のように書かないと
  うまく行かない場合があります。

  マニュアルにはこういう記述をしなさいと書いてあります。
    
  FoundCell.Offset(Row,Column) は、検索されたセルから、

  行方向(Row)、列方向(Column) に移動したセルを指定しています。


  example3 は 2つのブック(シート)の共通の基準keyを参照して、検索結果をもう一方の
  ブック(シート)に代入するサンプルアプリケーションです。

  このアプリケーションは色々はケースでそのまま使えると思います。

  ダウンロードして動作を確認して、実際のコードも確認してください。

Copy (C) 2005   アプリケーションとしてのVBA   All Rights Reserved.