Excelは業務に欠かせないツールですが、ただの表計算ソフトにとどまらず、VBA(Visual Basic for Applications)を活用することで、実用的なアプリケーションを作成することができます。今回は、商品管理・顧客管理・売上管理の3つのシートを連携させて、簡単かつ便利な「売上管理アプリ」をExcel VBAで構築する方法をご紹介します。初心者でも実装できるよう、手順を丁寧に解説していきます。
まずは3つのシートを用意します。それぞれのシートには以下のようなデータを用意します。
商品ID | 商品名 | 単価 |
---|---|---|
P001 | コーヒー | 150 |
P002 | 紅茶 | 200 |
顧客ID | 顧客名 | 電話番号 |
---|---|---|
C001 | 山田太郎 | 080-XXXX-XXXX |
C002 | 鈴木花子 | 090-YYYY-YYYY |
売上ID | 顧客ID | 商品ID | 数量 | 合計 | 日付 |
---|---|---|---|---|---|
1 | C001 | P001 | 2 | (自動計算) | (手動) |
次に、売上データの登録をVBAフォームで行うようにします。以下のようなフォームを作成しましょう。
フォームには以下のコントロールを配置します:
顧客と商品を選択式にすることで入力ミスを防ぎます。
Private Sub UserForm_Initialize()
Dim i As Long
' 顧客IDの読み込み
With Sheets("顧客")
For i = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
ComboBox1.AddItem .Cells(i, 1).Value
Next i
End With
' 商品IDの読み込み
With Sheets("商品")
For i = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
ComboBox2.AddItem .Cells(i, 1).Value
Next i
End With
End Sub
登録ボタン(CommandButton1)をクリックした際に、売上シートに自動でデータが記録されるようにします。
Private Sub CommandButton1_Click()
Dim wsU As Worksheet
Dim wsP As Worksheet
Dim newRow As Long
Dim productID As String
Dim unitPrice As Double
Dim quantity As Long
Dim total As Double
Dim i As Long
Set wsU = Sheets("売上")
Set wsP = Sheets("商品")
productID = ComboBox2.Value
quantity = Val(TextBox1.Value)
' 単価を取得
For i = 2 To wsP.Cells(wsP.Rows.Count, 1).End(xlUp).Row
If wsP.Cells(i, 1).Value = productID Then
unitPrice = wsP.Cells(i, 3).Value
Exit For
End If
Next i
total = unitPrice * quantity
' 新しい行に売上データを記録
newRow = wsU.Cells(wsU.Rows.Count, 1).End(xlUp).Row + 1
wsU.Cells(newRow, 1).Value = newRow - 1 ' 売上ID
wsU.Cells(newRow, 2).Value = ComboBox1.Value ' 顧客ID
wsU.Cells(newRow, 3).Value = productID
wsU.Cells(newRow, 4).Value = quantity
wsU.Cells(newRow, 5).Value = total
wsU.Cells(newRow, 6).Value = Date
MsgBox "売上を登録しました", vbInformation
Unload Me
End Sub
シートにボタンを配置し、ユーザーフォームを起動できるようにしましょう。
Sub 売上登録フォームを開く()
UserForm1.Show
End Sub
このマクロをExcelシート上のボタンに割り当てれば、誰でも簡単にフォームから売上登録が可能になります。
このように、商品・顧客・売上の3つのシートを連携させることで、以下のメリットがあります。
ただし、IDの重複や**入力ミス(特に手入力の数値)**がないよう、定期的にデータの整合性をチェックすることが重要です。
今回紹介した仕組みをもとに、以下のような機能追加も可能です:
これらはVBAの条件分岐や関数を活用することで実現できます。まずは今回の基本構造をしっかり作り、必要に応じて拡張していきましょう。
Excel VBAを使えば、表計算ソフトの枠を超えて「売上管理アプリ」を自作することができます。商品・顧客・売上の3シートを連携し、フォームからデータを登録することで、作業の効率化とデータの一元管理が可能になります。
今回ご紹介した内容は、VBA初心者にもおすすめの構成です。ぜひ、自分仕様にカスタマイズして、より使いやすいアプリに育ててみてください。