INDEX
Selectの概要
| 条件分岐やオブジェクト選択を行う VBAの予約語 | ||
|
Select 概要 Select は、VBAで複数の条件を分岐する わかりやすく説明 Select は、「条件に応じて処理を分けたり、Excel のセルやシートを選択するよ!」という命令です。 |
||
|
Select Case の基本的な使い方
Select Case を使って、数値に応じた処理を分岐する基本的な例です。
Sub ExampleSelectCase()
Dim score As Integer
score = 85
Select Case score
Case Is >= 90
MsgBox "評価: 優", vbInformation, "結果"
Case Is >= 70
MsgBox "評価: 良", vbInformation, "結果"
Case Is >= 50
MsgBox "評価: 可", vbInformation, "結果"
Case Else
MsgBox "評価: 不可", vbInformation, "結果"
End Select
End Sub
解説:
Select Caseを使うと、If ... ElseIfよりも見やすく条件分岐を記述できる。Case Is >= 90のように条件を記述すると、範囲指定が可能。Case Elseで、どの条件にも当てはまらない場合の処理を記述できる。
Excel で Select メソッドを使う
セルやシートを選択する場合、Select メソッドを使用します。
Sub SelectExample()
' A1セルを選択
Range("A1").Select
' シート2を選択
Sheets("Sheet2").Select
End Sub
解説:
Range("A1").Selectでセル A1 を選択。Sheets("Sheet2").Selectで別のシートを選択。- ただし、VBA では
Selectを使わずに直接操作する方が効率的。
Select を使わずに直接値を設定する
Excel VBA では、Select を使わずにセルやシートを直接操作する方が望ましいです。
Sub AvoidSelectExample()
' セル A1 に値を入力(Select 不要)
Range("A1").Value = "直接入力"
' シートを選択せずに値を入力
Sheets("Sheet2").Range("B1").Value = "シートを選択せずに書き込み"
End Sub
解説:
Selectを使わずにValueを直接設定することで、処理が高速化される。- シートを選択せずにデータを操作するのがベストプラクティス。
エラーを回避する方法
Select を使う際に、シートやセルが存在しない場合のエラーハンドリングを追加します。
Sub SafeSelectExample()
On Error Resume Next
' 存在しないシートを選択するとエラーになる
Sheets("Sheet999").Select
If Err.Number <> 0 Then
MsgBox "シートが存在しません: " & Err.Description, vbExclamation, "エラー"
Err.Clear
End If
End Sub
解説:
- 存在しないシートを選択するとエラーが発生する。
- エラーハンドリングを追加し、エラーメッセージを表示することで回避。
Selectの注意事項
- Select Case は If … ElseIf より可読性が高い: 条件分岐が多い場合に適している。
- Excel の Select メソッドは極力使用を避ける: 直接オブジェクトを操作する方が効率的。
- シートやセルを選択する前に存在確認をする: 存在しないシートやセルを選択するとエラーになる。
よくある質問
- Q: Select Case と If … ElseIf の違いは何ですか?
- A:
Select Caseは複数の条件を整理しやすく、可読性が向上します。条件が多い場合はSelect Caseの方が適しています。 - Q: Excel VBA で Select を使わない方が良いのはなぜですか?
- A:
Selectを使うとコードが遅くなり、不要な画面更新が発生するため、直接オブジェクトを操作する方が効率的です。 - Q: セルの選択を解除する方法はありますか?
- A: はい。
ActiveSheet.Cells(1, 1).Selectのように、別のセルを選択すると解除されます。またはApplication.CutCopyMode = Falseを使うとコピーや選択状態を解除できます。 - Q: Select でエラーが出る場合の対処方法は?
- A: シートやセルが存在するか確認してから
Selectを実行してください。例:If Not SheetExists("Sheet1") Then Exit Sub
まとめ
- Select は条件分岐(
Select Case)とオブジェクト選択(Select メソッド)の2つの用途がある。 Select Caseを使うと、If ... ElseIfよりも可読性の高い条件分岐ができる。- Excel VBA では
Selectを使わず、直接セルやシートを操作するのが望ましい。 - エラーハンドリングを適用し、存在しないオブジェクトを選択しようとするエラーを回避する。