Categories: excel

Excel VBAで作る売上管理アプリ:商品・顧客・売上シートを連携する方法1

Excelは業務に欠かせないツールですが、ただの表計算ソフトにとどまらず、VBA(Visual Basic for Applications)を活用することで、実用的なアプリケーションを作成することができます。今回は、商品管理・顧客管理・売上管理の3つのシートを連携させて、簡単かつ便利な「売上管理アプリ」をExcel VBAで構築する方法をご紹介します。初心者でも実装できるよう、手順を丁寧に解説していきます。


1. シートの構成を準備する

まずは3つのシートを用意します。それぞれのシートには以下のようなデータを用意します。

■ 商品シート(Sheet名:「商品」)

商品ID商品名単価
P001コーヒー150
P002紅茶200

■ 顧客シート(Sheet名:「顧客」)

顧客ID顧客名電話番号
C001山田太郎080-XXXX-XXXX
C002鈴木花子090-YYYY-YYYY

■ 売上シート(Sheet名:「売上」)

売上ID顧客ID商品ID数量合計日付
1C001P0012(自動計算)(手動)

2. VBAで売上登録フォームを作成する

次に、売上データの登録をVBAフォームで行うようにします。以下のようなフォームを作成しましょう。

■ ユーザーフォーム(UserForm1)の作成

フォームには以下のコントロールを配置します:

  • 顧客ID(ComboBox)
  • 商品ID(ComboBox)
  • 数量(TextBox)
  • 登録ボタン(CommandButton)

3. 顧客IDと商品IDの選択肢を自動で読み込む

顧客と商品を選択式にすることで入力ミスを防ぎます。

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

4. 売上データを登録する処理を書く

登録ボタン(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

5. ボタンからフォームを起動できるようにする

シートにボタンを配置し、ユーザーフォームを起動できるようにしましょう。

■ マクロコード:

Sub 売上登録フォームを開く()
UserForm1.Show
End Sub

このマクロをExcelシート上のボタンに割り当てれば、誰でも簡単にフォームから売上登録が可能になります。


6. データ連携のメリットと注意点

このように、商品・顧客・売上の3つのシートを連携させることで、以下のメリットがあります。

  • 入力ミスが減る(選択式)
  • 合計金額の自動計算で作業が効率化
  • 顧客別・商品別の売上集計がしやすくなる

ただし、IDの重複や**入力ミス(特に手入力の数値)**がないよう、定期的にデータの整合性をチェックすることが重要です。


7. さらに使いやすくする応用編

今回紹介した仕組みをもとに、以下のような機能追加も可能です:

  • 顧客名や商品名をIDから自動表示する
  • 月別・顧客別の売上集計をグラフ化
  • エラーチェック(空欄や未選択がある場合に警告)

これらはVBAの条件分岐や関数を活用することで実現できます。まずは今回の基本構造をしっかり作り、必要に応じて拡張していきましょう。


まとめ

Excel VBAを使えば、表計算ソフトの枠を超えて「売上管理アプリ」を自作することができます。商品・顧客・売上の3シートを連携し、フォームからデータを登録することで、作業の効率化とデータの一元管理が可能になります。

今回ご紹介した内容は、VBA初心者にもおすすめの構成です。ぜひ、自分仕様にカスタマイズして、より使いやすいアプリに育ててみてください。

upandup

Web制作の記事を中心に、暮らし、ビジネスに役立つ情報を発信します。 アフィリエイトにも参加しています。よろしくお願いいたします。