単一セルを選択する。

執筆者:

カテゴリ:

目的

  • 単一セルを選択状態にしたい。
  • 二通り試してみる。
    1. Range
    2. Cells
  • エラーの発生例を見る。

その一例

  1. 白紙のワークシートでテストしてみます。
白紙のワークシート
白紙のワークシート
  • 下記マクロを実行してみます。「B3」を選択するマクロです。
    Sub B3選択()
    Range("B3").Select
    End Sub
    1. Range で操作対象取得。
    2. Select で選択実行。
  • 「B3」が選択状態になりました。
  • 「B3」が選択されている。
    「B3」が選択されている。
    1. 下記マクロでも同じ結果になりました。
      Sub Cells使用_B3選択()
      Cells(3, 2).Select
      End Sub
      1. Cells で操作対象取得。
      2. (3,2) は 3 行目の 2 列目という意味です。

    エラー発生例 1

    操作対象のシートがアクティブになっていない場合、エラーが発生するようです。

    1. 「Sheet2」がアクティブになっている状態でテストしてみます。
    Sheet2 がアクティブシート。
    Sheet2 がアクティブシート。
  • 下記マクロを実行してみます。「Sheet1」の「B3」を選択してみます。
    Sub エラー発生_B3選択()
    Worksheets("Sheet1").Range("B3").Select
    End Sub
  • エラー発生。
  • 実行時エラー '1004': Range クラスの Select メソッドが失敗しました。
    実行時エラー ‘1004’: Range クラスの Select メソッドが失敗しました。

    Activate でアクティブシートを切り替えておくと、エラーが発生しないようです。

    1. 下記マクロを実行してみます。
      Sub エラー解消_B3選択()
      Worksheets("Sheet1").Activate
      Worksheets("Sheet1").Range("B3").Select
      End Sub

    2. 「Sheet1」がアクティブになって「B3」が選択されました。
    Sheet1 がアクティブシート。
    Sheet1 がアクティブシート。
    「B3」セルが選択されている。
    「B3」セルが選択されている。

    エラー発生例 2

    シートが選択されていても、アクティブになっていないとエラーが発生するようです。

    1. 「Sheet1」が選択されている状態でテストしてみます。
    「Sheet1」が選択されている。
    「Sheet1」が選択されている。
  • 下記マクロを実行してみます。 Sheet2,1,3 の順番で Select しています。
    Sub エラー発生_selectされていてもactiveになっていない()
    Debug.Print "active="; ActiveSheet.Name
    Worksheets(Array("Sheet2", "Sheet1", "Sheet3")).Select
    Debug.Print "active="; ActiveSheet.Name
    Worksheets("Sheet1").Range("B3").Select 'エラー
    End Sub
    1. Array でまとめて選択。
  • エラー発生。
  • 実行時エラー '1004': Range クラスの Select メソッドが失敗しました。
    実行時エラー ‘1004’: Range クラスの Select メソッドが失敗しました。
    エラー発生行。
    エラー発生行。

    イミディエイトウィンドウへの出力結果。

    アクティブシートが変化している。
    アクティブシートが変化している。

    Sheet1~3 が選択されています。

    Sheet1~3 が選択されて「Sheet2」がアクティブになっている。シート名の下に点線が引かれています。
    Sheet1~3 が選択されて「Sheet2」がアクティブになっている。シート名の下に点線が引かれています。

    テスト環境

    • Windows 10
    • Microsoft Office Excel 2003

     

    以上、閲覧ありがとうございました。