VBA で検索文字列の数を調べる方法

文書番号: 405103 - 対象製品
この記事は、以前は次の ID で公開されていました: JP405103
すべて展開する | すべて折りたたむ

目次

概要

この資料は、VBA で検索文字列の数を調べる方法について説明したものです。

VBA で検索文字列の数を調べる方法

InStr 関数、For Each...Next ステートメントを組み合わせて選択範囲を対象に検索 文字列の数を調べることができます。

1.選択範囲の中から検索文字列を含むセルの数を求める

  Sub sample1()
      Dim Count As Integer
      Dim N As Integer
      Dim Target
      Dim Cell As Range
      'インプットボックスの表示
      Target = Application.InputBox(prompt:="文字列入力", _
          Title:="文字列検索", Type:=2)
      '<キャンセル> ボタンをクリックまたは
      '検索文字列を入力しなかった時
      If (Target = False) Or (Target = "") Then Exit Sub
      'カウンタ変数初期化
      Count = 0
      For Each Cell In Selection
          '検索
          N = InStr(1, Cell.Value, Target)
          '検索文字列が見つかった時
          If (N > 0) Then
              'カウンタ変数をインクリメント
              Count = Count + 1
          End If
      Next Cell
      If (Count = 0) Then
          MsgBox Target & "は、見つかりませんでした。"
      Else
          MsgBox Target & "は、" & Count & "個見つかりました。"
      End If
  End Sub

2.選択範囲の中から検索文字列の数を求める

  Sub sample2()
      Dim Count As Integer
      Dim N As Integer
      Dim Target
      Dim Cell As Range
      'インプットボックスの表示
      Target = Application.InputBox(prompt:="文字列入力", _
          Title:="文字列検索", Type:=2)
      '<キャンセル> ボタンをクリックまたは
      '検索文字列を入力しなかった時
      If (Target = False) Or (Target = "") Then Exit Sub
      'カウンタ変数初期化
      Count = 0
      For Each Cell In Selection
          N = 0
          Do
              '検索
              N = InStr(N + 1, Cell.Value, Target)
              '検索文字列が見つかった時
              If (N > 0) Then
                  'カウンタ変数をインクリメント
                  Count = Count + 1
              End If
          Loop While (N > 0)
      Next Cell
      If (Count = 0) Then
          MsgBox Target & "は、見つかりませんでした。"
      Else
          MsgBox Target & "は、" & Count & "個見つかりました。"
      End If
  End Sub

3.選択範囲の中から検索文字列と完全一致したセルの数を求める

  Sub sample3()
      Dim Count As Integer
      Dim Target
      Dim Cell As Range
      'インプットボックスの表示
      Target = Application.InputBox(prompt:="文字列入力", _
          Title:="文字列検索", Type:=2)
      '<キャンセル> ボタンをクリックまたは
      '検索文字列を入力しなかった時
      If (Target = False) Or (Target = "") Then Exit Sub
      'カウンタ変数初期化
      Count = 0
      For Each Cell In Selection
              '検索文字列とセルに入力された文字列が一致した時
              If (Target = Cell.Value) Then
                  'カウンタ変数をインクリメント
                  Count = Count + 1
              End If
      Next Cell
      If (Count = 0) Then
          MsgBox Target & "は、見つかりませんでした。"
      Else
          MsgBox Target & "は、" & Count & "個見つかりました。"
      End If
  End Sub
例えば、A1 に aa 、A2 に aA 、 A3 に AA と入力し、A1 : A3 を選択してマクロ
を実行した場合は次の結果になります。検索文字列が「 a 」の時、「 Sample 1 」マク ロは 2 個、「 Sample 2 」マクロは 3 個、「 Sample 3 」マクロは 0 個の結果を返します。 InStr 関数については、「 Microsoft Excel ヘルプの目次」-「 Visual Basic を
使ったプログラミング」-「関数」をご参照ください。
For Each...Next ステートメントについては、「 Visual Basic ユーザーズガイド
177 ページ」-「第 7 章 コードの実行の制御」-「 For Each ...Next 」および、
「 Microsoft Excel ヘルプの目次」-「 Visual Basic を使ったプログラミング」-
「ステートメント」をご参照ください。

プロパティ

文書番号: 405103 - 最終更新日: 2003年11月10日 - リビジョン: 2.0
この資料は以下の製品について記述したものです。
  • Microsoft Excel 5.0 for Macintosh
キーワード:?
kbhowto KB405103
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"
サポート期間が終了した「サポート技術情報」資料に関する免責事項
この資料は、マイクロソフトでサポートされていない製品について記述したものです。そのため、この資料は現状ベースで提供されており、今後更新されることはありません。

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com