こんばんは。
社会人にもなったので、少しエクセルマクロの勉強もしなくては!と思い、ちょっとお試しでvba(Visual Basic for Applications)を用いてエクセルマクロ(Excelマクロ)を作ってみました。
この記事を見てる方の中には「vbaとは何?」や「エクセルマクロ(Excelマクロ)とは何?」という方も大勢いらっしゃると思いますが、その辺りの説明についてはこの記事では省略させて頂いていますその辺りについては他にわかりやすく説明して下さっている方々のサイトが多くありましたので、そちらを参考にされるかといいかと思います。
作るのは「品名・単価・枚数・合計の毎日のデータを月データへ自動的に出力するエクセルマクロ」です。
*完成イメージはこんな感じです↓
・タブ1【Date(日データ)】
・タブ2【Month(月データ)】
・タブ3【日付一覧】
*一応、作成したExcelマクロのファイルも共有いたします↓
それでは~
シュワッチ!
①プログラム:
Option Explicit | |
'vbaTestと名付けた「実行ボタン」が押されるとプログラムスタートします' | |
Sub vbaTest() | |
'「実行ボタン」が押されるとメッセージボックスに「入力完了!」と表示させます' | |
MsgBox "入力完了!" | |
'シート設定' | |
Dim ws0 As Worksheet, ws1 As Worksheet | |
Set ws0 = Worksheets("Date") | |
Set ws1 = Worksheets("Month") | |
'Dateシート用プログラム' | |
Dim cmax0 As Date, cmax1 As Long, cmax2 As Long, cmax3 As Long, cmax4 As Long, cmax5 As Long | |
cmax0 = ws0.Cells(1, 1).Value | |
cmax1 = ws0.Cells(2, 5).Value | |
cmax2 = ws0.Cells(3, 5).Value | |
cmax3 = ws0.Cells(4, 5).Value | |
cmax4 = ws0.Cells(5, 5).Value | |
cmax5 = ws0.Cells(6, 5).Value | |
'Monthシート用プログラム' | |
'行の自動追加が上手く行くようにif文を多用しています' | |
Dim i As Long, k As Long | |
For i = 3 To 367 | |
If IsEmpty(ws1.Cells(i, 1).Value) Then | |
ws1.Cells(i, 1).Value = cmax0 | |
End If | |
If IsEmpty(ws1.Cells(i, 2).Value) Then | |
ws1.Cells(i, 2).Value = cmax1 | |
End If | |
If IsEmpty(ws1.Cells(i, 3).Value) Then | |
ws1.Cells(i, 3).Value = cmax2 | |
End If | |
If IsEmpty(ws1.Cells(i, 4).Value) Then | |
ws1.Cells(i, 4).Value = cmax3 | |
End If | |
If IsEmpty(ws1.Cells(i, 5).Value) Then | |
ws1.Cells(i, 5).Value = cmax4 | |
End If | |
If IsEmpty(ws1.Cells(i, 6).Value) Then | |
ws1.Cells(i, 6).Value = cmax5 | |
ws1.Cells(2, 2).Value = ws1.Cells(2, 2).Value + ws1.Cells(i, 2).Value | |
ws1.Cells(2, 3).Value = ws1.Cells(2, 3).Value + ws1.Cells(i, 3).Value | |
ws1.Cells(2, 4).Value = ws1.Cells(2, 4).Value + ws1.Cells(i, 4).Value | |
ws1.Cells(2, 5).Value = ws1.Cells(2, 5).Value + ws1.Cells(i, 5).Value | |
ws1.Cells(2, 6).Value = ws1.Cells(2, 6).Value + ws1.Cells(i, 6).Value | |
Exit For | |
End If | |
Next i | |
End Sub |
②ポイント:
“Monthシート用プログラム”の所で、行の自動追加が上手くいく様に少し工夫しています。とはいっても大したことはしていなくて、しているのは「その行が空であったら行を追加する」というチェックだけです。
このチェックをしていないと同じ行に上書きされる形になってしまうので、気を付けてください。
以上で今回の「エクセルマクロで毎日のデータを月データへ自動的に出力」を終わります。おかしい部分を見つけたり、読んでも作り方がよくわからなかった際は気軽にコメント頂けると嬉しいです!
また、エクセルマクロを作る機会があれば、記事を作成したいと思います。
▲▲▲アリガ島▲▲▲
「未定」