EXCEL VBAを使う用途として最も多いのが、EXCELシートのデータをプログラミングで編集したり、ファイルのデータをEXCELシートに出力したりと、EXCELシートへのデータ編集が主な役割になります。
これを使わないのであればEXCEL VBAを使う意味がないので、ここを解説します。
EXCELのデータ構造
EXCELというのは、1つのEXCELブックに複数のシートがあり、さらにシートには複数のセルと呼ばれるマスがあります。
つまりEXCELというのは、セルというマスが最小単位で、そのマスの集合体がEXCELブックと言う事になります。
プログラミングでデータを扱う場合は、どの「ブック」のどの「シート」のどの「セル」という所を指定しないとプログラミングは理解できない為、ここをプログラム上で指定してあげる必要があります。(必須)
EXCEL VBAでのセル指定方法
セルの内容を取得する
では具体的にどのように指定するかと言うと、以下のようになります。
Workbooks(1).Worksheets(1).Cells(3, 3)
この書き方の場合、開いているワークブックの1番目(一番最初に開いたブック)の一番目のワークシートのX軸3、Y軸3のセルを指定しています。
注意点は、Cellsの指定は、Y軸、X軸の指定になっている事。
さらに具体的な指定方法として、以下があります。
Workbooks("book1").Worksheets("Sheet1").Cells(4, 3)
こちらの書き方の場合は、具体的なブック名、シート名が解っている場合に指定します。
通常は、こちらの方法を指定します。
1つの目の指定方法を使用する場合は、具体的なブック名や、シート名が解っていないときに、ブック名、シート名を取得したりする際に使用したりします。
試しに実際のプログラミングを組んでみましょう。
これは、指定したセルの内容をmsgboxに表示する簡単なプログラム。
両方とも指定したセルの内容が出力されている事が解ります。
セルに内容を設定する
つぎは、セルに内容を設定する方法ですが、こちらもセルの指定方法は同様です。
実際にプログラムを組んでみると以下になります。
実行すると、指定したセルにプログラムで使用した内容が設定されている事が解ります。
EXCELブック名、シート名を取得する
セルの指定方法で軽く説明したEXCELブック名やシート名を取得する方法です。
使用用途としては、複数のEXCELブックを開いている時、新しいEXCELブックの作成、シートの追加時に特定のシートを固定する際など。
Workbooks(1).Name Workbooks(1).Worksheets(1).Name
実際にプログラムにすると以下の様になります。
実行すると以下の結果が返されます。
より実践的な使い方としては、以下となります。
開いているEXCELブックの1番目シートの名称を取得し、その名称を格納後、指定セルの内容を出力。
ワークエリアにブック名とシート名を保存する事で、後続のプログラムで確実に対象のシートを保持できます。
シート名使用の応用 シートを追加して名称を変更する
さらに応用として、プログラムでシートを追加した際に、名称の取得をして、さらにシート名を変更。
Sub main() Dim TergetBook As String Dim TergetSheet As String TergetBook = Workbooks(1).Name Workbooks(TergetBook).Worksheets(1).Activate Workbooks(TergetBook).Worksheets.Add TergetSheet = Workbooks(TergetBook).Worksheets(1).Name MsgBox (TergetSheet) Workbooks(TergetBook).Worksheets(1).Name = "TEST Sheet" TergetSheet = Workbooks(TergetBook).Worksheets(1).Name MsgBox (TergetSheet) End Sub
実行すると、追加のシート名が取得でき、シート名の変更が出来ています。
注意点としては、シートを追加する際に、アクティブなシートの前にシートが追加される為、シート番号1番を固定で使用する為に、事前にシートをアクティブにしています。
コメント