【VBA初心者向け】販売データから請求書を自動作成する

Excel VBA
beautiful foggy background. country road down in the valley trees on hill in the mist

請求書ひな形と販売データを準備します

2種類のシート「請求書ひな形(Sheet1)」と「販売データ(Sheet2)」が準備されています。

請求書ひな形はこちら。

販売データはこちらになります。

販売データを請求書ひな形に転記するプログラム

VBEを開いて、下のプログラムを記入して実行してください。

ここで行われている操作は、セルの値の転記のみです。

VBAが実行された結果がこれになります。

ワークシートとセルはオブジェクトと呼ばれます。

VBAでは操作の対象となる「セル」や「ワークシート」などをオブジェクトと呼びます。

覚えておいてください。

今回のオブジェクト

  1. 「請求書ひな形」シート
  2. 「販売データ」シート
  3. 「請求書ひな形」シートのセル
  4. 「販売データ」シートのセル

ワークシートを表すワークシートオブジェクト

1と2は、ワークシートを表しますので「ワークシートオブジェクト」になります。

Sheet1(請求書ひな形)とSheet2(販売データ)ですね。

セル範囲を表すRangeオブジェクト

単体のセルも複数のセルを表すセル範囲も「Rangeオブジェクト」になります。

「A1」も「A1:B2」も「Rangeオブジェクト」です。

Cellsプロパティ

エクセルにはセル番地を表現する2種類の方法がありますね。

一般的な

R1C1参照形式と称される

の2種類です。

Rangeオブジェクトにも2種類のプロパティ(属性)があります。

RangeプロパティCellsプロパティです。

今回はCellsプロパティを使用しています。

理由は後程明らかになりますが、繰り返し処理が簡単に出来るからです。

Cellsプロパティの値

Cellsプロパティを用いる際、

Cells(13, 1)

とだけ書いただけでは不十分です。

下のようになり何も表示されません。

Cellsプロパティの前にSheet1とワークシートオブジェクトを加えると正しく表示されます。

Sheet1.Cells(13, 1)

注意しましょう。

Worksheetオブジェクト.Cells(行番号, 列番号)
行番号と列番号はr1c1参照形式で数字を入れます。
今回は、Cellsプロパティのみで正しく表示されましたが、Cellsプロパティの値取得には厳密にいうと後に「.Value」を加える必要があります。
 
Sheet1.Cells(13, 1).Value
 
なぜなら、値には「.Text」や「.Value2」等他の値があるからです。
ややこしい話ですが、ここでは「.Value」を加える必要があると覚えて置いてください。
 

まとめ

ここでは

  • オブジェクトとは何か
  • ワークシートを表すWorksheetオブジェクト
  • セル及びセル範囲を表すRangeオブジェクト
  • Rangeオブジェクトは前にWorkSheetsオブジェクトを付ける必要がある
  • Cellsプロパティでセルの位置を取得出来る
  • CellsプロパティにはValueプロパティを後ろに追記して値を正しく取得できる

等を学びました。

コメント