アプリケーションとしてのVBA Excel(エクセル) VBA の役立つ Tips の紹介

アプリケーションとしてのVBA

ブックとシートの操作

ブックとシートの操作


  Excelの VBA でマクロを作成する場合、必ず(?)複数のブック・シート間で、セルの値
  を移動・転記するコードがあると思います。

  セルの値の移動・転記の一般的な記述は、
@ Workbooks("Book1").Sheets("Sheet1").Range("A1") = _
                             Workbooks("Book2").Sheets("Sheet2").Range("A1")
  こうなります。



  "Book1" の "Sheet1" がアクティブになっていれば、
A Range("A1")=Workbooks("Book2").Sheets("Sheet2").Range("A1")
  こう記述できます。



  "Book2" の "Sheet2" がアクティブになっていれば
B Workbooks("Book1").Sheets("Sheet1").Range("A1")=Range("A1") 
  と記述できます。


  "Book1" と "Book2" 以外がアクティブな場合は、@を記述をする必要があります。

  Excel の VBA でマクロを作成する場合には、常にどのブック・シートがアクティブに
  なっているかを意識してコードを記述する必要があります。
  これに関連するブックとシートの操作・取り扱いについて説明します



  □自分のブック/シートの名前の取得方法

  'このマクロが記述されているWorkbookの名前を取得します
  ThisWorkbook_Name = ThisWorkbook.Name
    
  'このマクロが記述されているSheetの名前を取得します
  ThisSheet_Name = Workbooks(ThisWorkbook_Name).ActiveSheet.Name


  □目的のブック・シートをアクティブにする

  'ThisWorkbook_Nameを前面にします
  Windows(ThisWorkbook_Name).Activate

  'ThisSheet_Nameを前面にします
  Sheets(ThisSheet_Name).Select


  □シートがあるかどうかチェックして、無い場合は「原紙」シートをコピーして
    シートの名前を変更する

'Item シートがあるかチェックをします
If ExistSheet(Item) Then                'あった
    'データが存在するる領域をの範囲を取得してデータを消します
    Sheets(Item).Select
    Range("A1").Select
    Selection.CurrentRegion.ClearContents
Else                                    '無かった
   '原紙を Copy して新しいシートを追加して、
   'シートの名前を Item にします
   Sheets("原紙").Copy after:=ActiveWorkbook.Sheets(ActiveSheet.Name)
   Sheets(ActiveSheet.Name).Name = Item
End If



Function ExistSheet(SheetName) As Boolean
    '引数 SheetName のシートが実際にあるかチェックする
    
    Dim i, cnt As Integer
    
    cnt = Sheets.Count
    ExistSheet = False
    For i = 1 To cnt
        If Sheets(i).Name = SheetName Then
            ExistSheet = True
            Exit For
        End If
    Next
End Function


  Function ExistSheet については、シート・ブックが存在するかチェックする
  も参考にしてください。

  □シートの数を数える

    'シートの数をカウントします
    cnt = Sheets.Count


  □シートの数だけループする

    'シートの数だけループする
    For i = 1 To Sheets.Count


    Next


  □n番目のシートをアクティブにする

    'n番目のシートをアクティブにします
    Sheets(n).Activate


  □n番目のシートの名前を取得する

    Dim Sheet_Name As String

    Sheet_Name = Sheets(n).Name


  これらは、example1example8 で使用されています。
  ダウンロードして確認してください。




Copy (C) 2005   アプリケーションとしてのVBA   All Rights Reserved.