【Excel VBA】Selectionプロパティの使い方と実例!Selectとの違いも!

Excel VBAでSelectionプロパティを使って選択している範囲の値を扱いたいときはないでしょうか。

けど、そんな中で悩むことは、

・Excel VBAのSelectionプロパティの使い方がよくわからない
・Selectionプロパティの実例が知りたいが調べてもでてこない
・SelectionプロパティとSelectメソッドの違いがわからない

ですよね。

今回はそんなお悩みを解決する

・Excel VBAのSelectionプロパティの使い方と実例
・SelectionプロパティとSelectメソッドの違い

についてまとめます!

Excel VBAのSelectionプロパティとは

Excel VBAのSelectionプロパティの内容について説明をします。

Selectionプロパティとは現在選択しているオブジェクトを返すプロパティです。
構文は以下の通りです。

構文 Application.Selection
※Applicationは省略可能です。
説明 返されるオブジェクトの種類は、現在の選択範囲によって異なります 。
セルの場合:Rangeオブジェクト
画像の場合:Pictureオブジェクト
図形の場合:Ovalオブジェクト
チェックボックスの場合:CheckBoxオブジェクト
※TypeName(Selection)でオブジェクトの種別がわかります。
選択なし:Nothing を返す。

参照元:https://docs.microsoft.com/ja-jp/office/vba/api/excel.application.selection

Selectionプロパティの使い方

Selectionプロパティの使い方はとてもシンプルでカンタンです。

サンプルでは表、図形、画像、チェックボックスを用意しました。

それぞれ選択して、Selectionプロパティがどのような値を返すか確認をしてみましょう。

Selectionプロパティで選択オブジェクトの種別を取得する

Selectionプロパティで選択オブジェクトの種別を取得するコード

Selectionプロパティで選択オブジェクトの種別を取得するコードは以下の通りです。

Sub Selectionプロパティで選択オブジェクトの種別を取得する()
    Range("F1") = TypeName(Selection)
End Sub

F1セルに種別の結果が表示されます。

VBAの実装方法については
VBAの実装手順
をご参照ください。

実装が完了したら実際に選択してオブジェクトの種別を確認してみましょう。

選択したセルの種別

選択したセルの種別は「Range」となります。

選択した図形の種別

選択した図形の種別は「Oval」となります。

選択した画像の種別

選択した画像の種別は「Picture」となります。

選択したチェックボックスの種別

選択したチェックボックスの種別は「CheckBox」となります。

多種類のオブジェクトを選択した場合の種別

多種類のオブジェクトを選択した場合の種別は「DrawingObjects」となります。

タカヒロ
タカヒロ
上記以外のオブジェクトの種類はありますので、種別がなにであるか確認をしてみましょう。

Selectionプロパティで選択オブジェクトの値やプロパティを取得する

選択したセルの値

選択したセルの値を取得してみましょう。
選択したセルの範囲は縦と横の番地を持つ2次元配列として扱われますので、値を取得するには一度配列に代入して、取得する方法が便利です。

サンプルコードは以下の通りです。

Sub Selectionテスト1()
    Dim arrTemp As Variant
    arrTemp = Selection
    Range("A7:C10") = arrTemp
End Sub

選択した範囲を配列に代入し、”A7:C10″へ展開しています。

はい、できましたね。

デバッグすると2次元配列になっていることがわかりますね。

選択したセルのアドレスを取得

選択したセルのアドレスを取得してみましょう。
サンプルコードは以下の通りです。

Sub Selectionテスト1a()
    Range("F1") = Selection.Address
End Sub

例えばA1セルを指定すると、F1セルに”A1″という結果が出力されます。

以下のように範囲選択の場合は、

“$A$1:$C$4″と出力されます。

選択した図形のプロパティ

選択した図形のプロパティを取得するサンプルコードは以下の通りです。

Sub Selectionテスト2()
    Dim objTemp As Object
    Set objTemp = Selection
    Range("A7") = objTemp.ShapeRange.ShapeStyle
End Sub

ShapeStyleは図形の スタイルを表すプロパティで、サンプル図形の背景や罫線の書式がなにであるかがわかります。

図形オブジェクトの他のプロパティとなります。

選択した画像のプロパティ

選択した画像のプロパティを取得するサンプルコードは以下の通りです。

Sub Selectionテスト3()
    Dim objTemp As Object
    Set objTemp = Selection
    Range("A7") = objTemp.ShapeRange.Width
End Sub

Widthプロパティは画像の横幅のサイズを返します。

画像オブジェクトの他のプロパティとなります。

選択したチェックボックスのプロパティ

選択したチェックボックスのプロパティを取得するサンプルコードは以下の通りです。

Sub Selectionテスト4()
    Dim objTemp As Object
    Set objTemp = Selection
    Range("A7") = objTemp.Value
End Sub

Valueプロパティはチェックボックスのチェック状態を返します。

チェックボックスオブジェクトの他のプロパティとなります。

Selectionプロパティで選択オブジェクトの値やプロパティを変更する

選択したセルの値を変更

選択したセルの値をすべて10となるように変更してみます。

Sub Selectionテスト1a()
    Selection.Value = 10
End Sub

はい、できましたね。

選択した図形のスタイルを変更

選択した図形のスタイルを黒くするよう変更してみます。

Sub Selectionテスト2a()
    Dim objTemp As Object
    Set objTemp = Selection
    objTemp.ShapeRange.ShapeStyle = 8
End Sub

はい、黒色になりましたね。

選択した画像の横幅を変更

選択した画像の横幅をいまより大きくするよう変更してみます。

Sub Selectionテスト3a()
    Dim objTemp As Object
    Set objTemp = Selection
    objTemp.ShapeRange.Width = 200
End Sub

はい、できましたね。

選択したチェックボックスの状態を変更

選択したチェックボックスの状態をチェックありからチェック無しへ変更してみましょう。

Sub Selectionテスト4a()
    Dim objTemp As Object
    Set objTemp = Selection
    objTemp.Value = 0
End Sub

はい、できましたね。

Selectionプロパティの実例

Selectionプロパティの実例を見てみましょう。

VBAで取り消し線を追加/解除する

Excelの選択した図形の中にある文字列に二重取り消し線を追加/解除する方法の紹介となります。

Sub 二重取り消し線を入れる()
  
    With Selection.ShapeRange
        .TextFrame2.TextRange.Font.Strike = msoDoubleStrike
    End With

End Sub
Sub 二重取り消し線を解除する()

    With Selection.ShapeRange
        .TextFrame2.TextRange.Font.Strike = msoNoStrike
    End With

End Sub

 

取り消し線を入れたい文字列がある図形を選択しマクロを実行すると、

図形の二重取り消し線を追加されます。

詳細はこちらをご覧ください。

Excelで取り消し線を入れる方法!ショートカットやVBAで一括入力/解除も!

VBAでハイパーリンクを一括削除/解除する

VBAで選択範囲にあるハイパーリンクを一括削除/解除することができます。

サンプルコードは以下の通りです。

Sub ハイパーリンクを一括削除する()
    Dim objHyperlink As Hyperlink
    
    '選択したハイパーリンクを1件づつ処理します。
    For Each objHyperlink In Selection.Hyperlinks
        'ハイパーリンクを削除します。
        objHyperlink.Delete
    
    Next

End Sub

ハイパーリンクを解除したいセルを複数選択しマクロを実行すると、

ハイパーリンクが解除できました。

詳細は以下をご覧ください。

Excelのハイパーリンクを一括削除/解除する方法!基本操作とVBAの処理も!

その他のSelectionプロパティを用いた応用例

まだまだSelectionプロパティを用いた応用例がありますので、よろしければご参照ください。

SelectionプロパティとSelectメソッドの違い

異なる点はプロパティとメソッドであること

SelectionプロパティとSelectメソッドの違いについて説明をします。
大きな違いは

・Selectionプロパティはプロパティであること
・Selectメソッドはメソッドであること

となります。

プロパティはあの「右クリックプロパティ」のプロパティで、いま指したオブジェクトの状態やそのものの性質がどのようになっているかを表す情報となります。

一方メソッドは、これからその状態にするための方法ということで、状態を変化させる行為を差します。

つまりプロパティとメソッドの違いは現在と未来の状態という時系列上の違いともいえます。

SelectionとSelectをこの概念にあてはめると、今選択しているものを調べたい時はSelectionプロパティ、
これからこの条件にあうものを選択したいなというときはSelectメソッドを選択する形となります。

SelectionプロパティとSelectメソッドの組み合わせ方

SelectionプロパティとSelectメソッドの組み合わせ方について説明をします。

例えばある図形があり、サイズを変更したいときは、

・Selectメソッドで名前が合致する図形を選択する
・Selectionプロパティで図形の幅プロパティに値を設定し、図形のサイズを変更する

といった組み合わせ方になります。

サンプルコードでみてみましょう。

Sub SelectとSelectionのテスト()
    ActiveSheet.Shapes.Range("Oval 2").Select
    Selection.ShapeRange.ShapeStyle = 8
End Sub

図形の名前が”Oval 2″であればSelectメソッドで選択し、

Selectionプロパティで選択図形のShapeStyle プロパティを黒色の 8に設定しています。

VBAの実装手順

実装手順は以下の通りです。

Excel側にVBAを実装していきます。

①Excelを新規に開き、「開発」タブをクリックし、「VisualBasic」をクリックします。
もしくはショートカットキー「Alt」+「F11」でもOKです。

②標準モジュールを追加します。
左ペインのVBAProjectを右クリックし、「挿入」、「標準モジュール」を選択します。

③右ペインのウインドウに上記のVBAを入力します。

こちらで完了です。

VBAを実行する

では早速VBAの実行をしてみましょう。

①「開発」タブの「VBA」をクリックし実行したいマクロを選択し、「実行」をクリックします。

②処理がされたことが確認できれば完了です。

さいごに

いかがでしょうか。

今回は、

・Excel VBAのSelectionプロパティの使い方と実例
・SelectionプロパティとSelectメソッドの違い

についてまとめました。

また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。



タカヒロ

タカヒロ
実質無料で読めるExcelVBA本についてまとめました。
もしVBA本購入を検討されていたら、どれだけお得か確かめてみてください。

【¥0】実質無料のExcelVBAおすすめ本25選!初級~中級まで網羅!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です