Excel VBAでSelectionプロパティを使って選択している範囲の値を扱いたいときはないでしょうか。
けど、そんな中で悩むことは、
・Selectionプロパティの実例が知りたいが調べてもでてこない
・SelectionプロパティとSelectメソッドの違いがわからない
ですよね。
今回はそんなお悩みを解決する
・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
取り消し線を入れたい文字列がある図形を選択しマクロを実行すると、
図形の二重取り消し線を追加されます。
詳細はこちらをご覧ください。
VBAでハイパーリンクを一括削除/解除する
VBAで選択範囲にあるハイパーリンクを一括削除/解除することができます。
サンプルコードは以下の通りです。
Sub ハイパーリンクを一括削除する()
Dim objHyperlink As Hyperlink
'選択したハイパーリンクを1件づつ処理します。
For Each objHyperlink In Selection.Hyperlinks
'ハイパーリンクを削除します。
objHyperlink.Delete
Next
End Sub
ハイパーリンクを解除したいセルを複数選択しマクロを実行すると、
ハイパーリンクが解除できました。
詳細は以下をご覧ください。
その他のSelectionプロパティを用いた応用例
まだまだSelectionプロパティを用いた応用例がありますので、よろしければご参照ください。
・【EXCEL VBA】複数条件の置換を一括で行う方法!3つ以上指定可!
・Excelの表をHTMLへ変換する方法!widthやthも調整可!
・Excelセル内の改行を置換/削除する方法!関数の他VBAで一括処理も!
SelectionプロパティとSelectメソッドの違い
異なる点はプロパティとメソッドであること
SelectionプロパティとSelectメソッドの違いについて説明をします。
大きな違いは
・Selectメソッドはメソッドであること
となります。
プロパティはあの「右クリックプロパティ」のプロパティで、いま指したオブジェクトの状態やそのものの性質がどのようになっているかを表す情報となります。
一方メソッドは、これからその状態にするための方法ということで、状態を変化させる行為を差します。
つまりプロパティとメソッドの違いは現在と未来の状態という時系列上の違いともいえます。
SelectionとSelectをこの概念にあてはめると、今選択しているものを調べたい時はSelectionプロパティ、
これからこの条件にあうものを選択したいなというときはSelectメソッドを選択する形となります。
SelectionプロパティとSelectメソッドの組み合わせ方
Selectionプロパティと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」をクリックし実行したいマクロを選択し、「実行」をクリックします。
②処理がされたことが確認できれば完了です。
さいごに
いかがでしょうか。
今回は、
・SelectionプロパティとSelectメソッドの違い
についてまとめました。
また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。
コメントを残す