請求書ひな形と販売データを準備します
2種類のシート「請求書ひな形(Sheet1)」と「販売データ(Sheet2)」が準備されています。
請求書ひな形はこちら。
販売データはこちらになります。
販売データを請求書ひな形に転記するプログラム
VBEを開いて、下のプログラムを記入して実行してください。
Sub 請求書作成() '2行目を請求書ひな形に転記 Sheet1.Cells(13, 1).Value = Sheet2.Cells(2, 1).Value Sheet1.Cells(13, 2).Value = Sheet2.Cells(2, 2).Value Sheet1.Cells(13, 3).Value = Sheet2.Cells(2, 3).Value '3行目を請求書ひな形に転記 Sheet1.Cells(14, 1).Value = Sheet2.Cells(3, 1).Value Sheet1.Cells(14, 2).Value = Sheet2.Cells(3, 2).Value Sheet1.Cells(14, 3).Value = Sheet2.Cells(3, 3).Value '4行目を請求書ひな形に転記 Sheet1.Cells(15, 1).Value = Sheet2.Cells(4, 1).Value Sheet1.Cells(15, 2).Value = Sheet2.Cells(4, 2).Value Sheet1.Cells(15, 3).Value = Sheet2.Cells(4, 3).Value End Sub
ここで行われている操作は、セルの値の転記のみです。
VBAが実行された結果がこれになります。
ワークシートとセルはオブジェクトと呼ばれます。
VBAでは操作の対象となる「セル」や「ワークシート」などをオブジェクトと呼びます。
覚えておいてください。
今回のオブジェクト
- 「請求書ひな形」シート
- 「販売データ」シート
- 「請求書ひな形」シートのセル
- 「販売データ」シートのセル
ワークシートを表すワークシートオブジェクト
1と2は、ワークシートを表しますので「ワークシートオブジェクト」になります。
Sheet1(請求書ひな形)とSheet2(販売データ)ですね。
セル範囲を表すRangeオブジェクト
単体のセルも複数のセルを表すセル範囲も「Rangeオブジェクト」になります。
「A1」も「A1:B2」も「Rangeオブジェクト」です。
Cellsプロパティ
エクセルにはセル番地を表現する2種類の方法がありますね。
一般的な
R1C1参照形式と称される
の2種類です。
Rangeオブジェクトにも2種類のプロパティ(属性)があります。
RangeプロパティとCellsプロパティです。
今回はCellsプロパティを使用しています。
理由は後程明らかになりますが、繰り返し処理が簡単に出来るからです。
Cellsプロパティの値
Cellsプロパティを用いる際、
Cells(13, 1)
とだけ書いただけでは不十分です。
MsgBox Cells(13, 1)
下のようになり何も表示されません。
Cellsプロパティの前にSheet1とワークシートオブジェクトを加えると正しく表示されます。
Sheet1.Cells(13, 1)
注意しましょう。
MsgBox Sheet1.Cells(13, 1)
行番号と列番号はr1c1参照形式で数字を入れます。
今回は、Cellsプロパティのみで正しく表示されましたが、Cellsプロパティの値取得には厳密にいうと後に「.Value」を加える必要があります。
Sheet1.Cells(13, 1).Value
なぜなら、値には「.Text」や「.Value2」等他の値があるからです。
ややこしい話ですが、ここでは「.Value」を加える必要があると覚えて置いてください。
MsgBox Sheet1.Cells(13, 1).Value
まとめ
ここでは
- オブジェクトとは何か
- ワークシートを表すWorksheetオブジェクト
- セル及びセル範囲を表すRangeオブジェクト
- Rangeオブジェクトは前にWorkSheetsオブジェクトを付ける必要がある
- Cellsプロパティでセルの位置を取得出来る
- CellsプロパティにはValueプロパティを後ろに追記して値を正しく取得できる
等を学びました。
コメント