VBAサンプル集
指定文字、指定数式でジャンプ機能(Union)

ExcelマクロVBAの実用サンプル、エクセルVBA集と解説
最終更新日:2020-04-04

指定文字、指定数式でジャンプ機能(Union)


ジャンプ機能がありますが、ジャンプのセル選択では特定の文字や数式は指定できません。
ある文字を含むセルや、ある関数を含むセルを一括で選択状態にするのは、ジャプ機能では出来ません。


そこで、マクロVBAでこれらができるようにして見ました。
何に使うかは・・・ご自由に!

ジャンプのセル選択以外でセルを選択するには

ジャンプのセル選択では特定の文字や数式は指定できません。

マクロ VBA サンプル画像

そこで、「検索」を使います。

マクロ VBA サンプル画像

「検索する文字列」を指定して「すべて検索」

マクロ VBA サンプル画像

検索結果の一覧の一番上が選択された状態になります。
もし、選択状態になっていない場合は、どの行でも良いので選択します。


Ctrl + A

VBA マクロ 特定文字へのジャンプ

指定文字、指定数式でジャンプ機能のVBA

Sub ジャンプ機能()
  Dim myRange As Range
  Dim selRange As Range
  Dim strFind As String
  
  strFind = InputBox("対象ブック:" & ActiveWorkbook.Name & vbLf & _
            "対象シート:" & ActiveWorkbook.ActiveSheet.Name & vbLf & vbLf & _
            "計算式の場合は、先頭に=を付けて下さい。", _
            "指定文字列検索&選択")
  If strFind = "" Then
    Exit Sub
  End If
  
  For Each myRange In ActiveSheet.UsedRange
    If Left(strFind, 1) = "=" Then
      If InStr(UCase(myRange.Formula), UCase(Mid(strFind, 2))) > 0 Then
        If selRange Is Nothing Then
          Set selRange = myRange
        Else
          Set selRange = Union(selRange, myRange)
        End If
      End If
    Else
      If InStr(UCase(myRange), UCase(strFind)) > 0 Then
        If selRange Is Nothing Then
          Set selRange = myRange
        Else
          Set selRange = Union(selRange, myRange)
        End If
      End If
    End If
  Next
  If selRange Is Nothing Then
    MsgBox ("該当セルは存在しませんでした。")
  Else
    selRange.Select
  End If
End Sub



指定文字、指定数式でジャンプ機能の解説

InputBox関数

InputBox関数は、文字列の入力を求める関数です。
InputBox関数は、ダイアログボックスにメッセージとテキストボックスを表示し、文字列が入力されるか、またはボタンがクリックされると、テキストボックスの内容を返します。InputBox関数 InputBox(prompt[,title][,default][,xpos][,ypos] [,helpfile,
現在のブック、シートを表示して、入力を求めるようにしました。
対象は現在のブック、シートになるので、
このマクロのあるブック以外でも処理可能です。
計算式を検索する場合は、先頭に「=」をつけて、「=IF」のように指定します。

ActiveSheet.UsedRange

UsedRangeは、現在のシートで使用されているセル範囲になります。
エクセルの表をVBAで扱う時は、データ部分の先頭から最終行までの、開始列から最終列まで処理する事が多いでしょう。開始行や開始列は、ほとんどの場合、見出し行や見出し列の次からになります。単純な話として、1行目に見出しがあれば、2行目から 1列目に見出しがあれば、2列目から では、ここで、最終行や最終列は、
For Eachで、この中から、1つづつセルを取り出しています。

InStr関数

InStr(文字列, 検索文字)
InStr関数は、検索文字で文字列を検索しその位置を返します。
Instr関数は、VBAでは頻繁に使われる必須関数で、シート関数のFIND関数と同様機能のVBA関数になります。文字列の中から指定した文字列を先頭から検索し、最初に見つかった文字位置を返す文字列処理関数で、検索文字が見つからなかった場合は0を返します。
存在しない場合は、0が返ります。

UCase関数

UCase関数は、英文字を大文字に変換します。
UCase関数は、アルファベットの小文字を大文字に変換する文字列処理関数です。UCase関数 UCase(string) charcode 任意の文字列式を指定します。この引数は必ず指定します。stringにNull値が含まれている場合、Null値を返します。
従って、「A」と「a」は同じとみなします。
大文字小文字を区別する場合は、このUCaseを削除すれば良いです。

Unionメソッド

Unionメソッドは、2つのセル範囲を1つのセル範囲に結合します。
UnionメソッドはApplicationのメソッドです。複数のセル範囲を集め、1つのRangeオブジェクとして参照することができます。つまり、Unionメソッドは複数のRangeオブジェクトを連結して1つのRangeオブジェクトにします。

指定文字、指定数式でジャンプ機能の最後に

どのような場面で、どのように使うか・・・
特に考えずに書いてみました。
そんなに多くの利用場面はないと思いますが、
ジャンプを使って、あれっ、出来ない、と思った事がある人や、
検索機能では操作が面倒だと思った人等々、
そのうち、使用する機会が、、、あるかもしれない。



同じテーマ「マクロVBAサンプル集」の記事

ユーザー定義関数でハイパーリンクのURLを取得(Hyperlink)
カラーのコード取得(256RGB⇔16進変換)
時刻になったら音を鳴らして知らせる(OnTime)
指定文字、指定数式でジャンプ機能(Union)
「値の貼り付け」をショートカットに登録(OnKey)
「セルの結合」をショートカットに登録(OnKey)
半角カナのみ全角カナに変換する
計算式の元となる数値定数を消去する(Precedents)
Beep音で音楽(Beep,Sleep)
日付の検索(配列の使用)
ストップウォッチ(1/100秒)(Timer)


新着記事NEW ・・・新着記事一覧を見る

COUNTIF関数の結果は?(ツイッターお題)|エクセル雑感(5月30日)
エクセル&VBA オンライン講座|エクセル セミナー(5月29日)
アルファベットの26進(ツイッターお題)|エクセル雑感(5月19日)
VBAが消えてしまった!マクロが壊れて動かない!|エクセル雑感(5月8日)
時間に関する関数の扱い方(ツイッター投稿)|エクセル雑感(5月6日)
文字列のセルだけ結合(ツイッターのお題)|エクセル雑感(5月5日)
表示形式.言語設定|エクセル入門(5月1日)
GoogleスプレッドシートをExcelにインポートする|VBAサンプル集(4月28日)
ツイッターのお題「CSV編集」|エクセル雑感(4月25日)
プログレスバーを自作する|ユーザーフォーム入門(4月18日)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.マクロって何?VBAって何?|VBA入門
5.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
6.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
7.繰り返し処理(For Next)|VBA入門
8.セルに文字を入れるとは(Range,Value)|VBA入門
9.とにかく書いてみよう(Sub,End Sub)|VBA入門
10.マクロはどこに書くの(VBEの起動)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ