【VBA】シートの指定方法4選【アクティブシート、シート名、シートインデックス、シートオブジェクト】

嚯嚯go發表於2024-10-02

參考元:大體でIT | Excel VBA
https://daitaideit.com/vba/#mokuzi3

【VBA】シートの指定方法4選【アクティブシート、シート名、シートインデックス、シートオブジェクト】

シートを指定する方法を4つご紹介します。

アクティブシートを指定
シート名を使う
シートインデックスを使う
シートオブジェクトを使う
という感じになります。
Sub TEST1()
  
  'アクティブシートに入力
  ActiveSheet.Range("A1") = "ABC"

  '「ActiveSheet」は省略すると、アクティブシートに入力
  Range("A1") = "ABC"

  'アクティブシートの「左」のシートに入力
  ActiveSheet.Previous.Range("A1") = "ABC"

  'アクティブシートの「右」のシートに入力
  ActiveSheet.Next.Range("A1") = "ABC"
  
-----------------------------------------
  
  'シート名が「Sheet2」のシートに入力
  Worksheets("Sheet2").Range("A1") = "ABC"
  
  '「Sheets」に短縮できる
  Sheets("Sheet2").Range("A1") = "ABC"
-----------------------------------------

  '「2番目」のシートに入力
  Sheets(2).Range("A1") = "ABC"

-----------------------------------------
  'シートオブジェクト「Sheet2」に入力
  Sheet2.Range("A1") = "ABC"
  
  
End Sub




 
作業シートを使う場合は「アクティブシート」から指定

例:作業シートを使って計算をする
Private Sub CommandButton1_Click()
  Dim A
  Sheets.Add 'シートを追加
  'アクティブシートの「右」のシートから値をコピー
  ActiveSheet.Next.Range("A1").Copy ActiveSheet.Range("A1")
  ActiveSheet.Range("A1") = ActiveSheet.Range("A1") + 1 '1を足す
  A = ActiveSheet.Range("A1") '値を取得
  
  Application.DisplayAlerts = False
  ActiveSheet.Delete 'シートを削除
  Application.DisplayAlerts = True
  
  Range("A1") = A '値を入力
End Sub


例2:シート名を取得するVBAコードです。
Sub TEST12()
  
  '最終行までループ
  For i = 1 To Sheets.Count
    'シート名を出力
    Debug.Print Sheets(i).Name
  Next
  
End Sub


相關文章