Top > 販売管理> 売上伝票(照会)

VBA通信教材申込み

VBA課題解決型実践塾セミナー内容

申込 ヤフーショッピング

売上伝票(照会)


(3)売上伝票(照会)

売上伝票(照会)プログラム

伝票明細は行毎に記入されています。
伝票Noでまとめて検索してとりだしています。
10000件のデータでは1秒もかかりません。
通常データベースはインデクスキーを使って高速検索を使いますがパソコンの性能が上がっていますので使わなくても十分です。
標準モジュールに伝票照会フォームが開くプロシージャを記述します。
Sub 伝票照会()
  frmSyoukai.Show
End Sub

伝票照会フォーム

売上伝票(照会)プログラム

伝票照会は伝票Noを入力してOKボタンをクリックするか、リストボックスから照会したい伝票Noをダブルクリックして伝票No のテキストボックスに伝票No を入力してOKボタンをクリックします。
該当する伝票が表示されます。

伝票照会フォームのオブジェクト名一覧

売上伝票(照会)プログラム

フォームのオブジェクト名で伝票照会フォームを作成します。

売上伝票(照会)プログラム

照会伝票Noを検索するために売上明細を伝票Noで集約したシートを準備しておきます。
伝票が追加・訂正・削除されるたびに変更しますので、伝票一覧更新ボタンで最新の伝票ヘッダーシートを作成します。
ポイントは売上明細の繰り返しの条件文で次の行との伝票NOの比較をし異なれば伝票が変わったと判断し伝票ヘッダーに記入します。
その時に金額の合計計算をしています。
そして再度リストボックスに表示しています。
10000件のデータで3秒かかります。十分使えると思います。
フォームモジュールに記述しています。
Private Sub cmdSakusei_Click()
  Dim i As Long
  Dim j As Long
  Dim lastrow As Long
  Dim kei As Long
  lastrow = Worksheets("伝票ヘッダー").Cells(Rows.Count, 1).End(xlUp).Row
  For i = 2 To lastrow
    For j = 1 To 5
      Worksheets("伝票ヘッダー").Cells(i, j) = ""
    Next
  Next
  lastrow = Worksheets("売上明細").Cells(Rows.Count, 1).End(xlUp).Row
  j = 2
  For i = 2 To lastrow
    kei = kei + Worksheets("売上明細").Cells(i, 9)
    If Worksheets("売上明細").Cells(i, 1) <> Worksheets("売上明細").Cells(i + 1, 1) Then
      Worksheets("伝票ヘッダー").Cells(j, 1) = Worksheets("売上明細").Cells(i, 1)
      Worksheets("伝票ヘッダー").Cells(j, 2) = Worksheets("売上明細").Cells(i, 2)
      Worksheets("伝票ヘッダー").Cells(j, 3) = Worksheets("売上明細").Cells(i, 3)
      Worksheets("伝票ヘッダー").Cells(j, 4) = Worksheets("売上明細").Cells(i, 4)
      Worksheets("伝票ヘッダー").Cells(j, 5) = kei
      j = j + 1
      kei = 0
    End If
  Next
  lastrow = Worksheets("伝票ヘッダー").Cells(Rows.Count, 1).End(xlUp).Row
  lstDenpyou.ColumnCount = 5
  For i = 2 To lastrow
    With lstDenpyou
      .Clear
    End With
  Next
  For i = 2 To lastrow
    With lstDenpyou
      .AddItem
      .List(i - 2, 0) = Worksheets("伝票ヘッダー").Cells(i, 1)
      .List(i - 2, 1) = Worksheets("伝票ヘッダー").Cells(i, 2)
      .List(i - 2, 2) = Worksheets("伝票ヘッダー").Cells(i, 3)
      .List(i - 2, 3) = Worksheets("伝票ヘッダー").Cells(i, 4)
      .List(i - 2, 4) = Worksheets("伝票ヘッダー").Cells(i, 5)
    End With
  Next
End Sub
フォームが開いたときにリストボックスに伝票ヘッダーのデータを取り込みます。
Private Sub UserForm_Initialize()
  Dim lastrow As Long
  Dim i As Long
  lastrow = Worksheets("伝票ヘッダー").Cells(Rows.Count, 1).End(xlUp).Row
  lstDenpyou.ColumnCount = 5
  For i = 2 To lastrow
    With lstDenpyou
      .AddItem
      .List(i - 2, 0) = Worksheets("伝票ヘッダー").Cells(i, 1)
      .List(i - 2, 1) = Worksheets("伝票ヘッダー").Cells(i, 2)
      .List(i - 2, 2) = Worksheets("伝票ヘッダー").Cells(i, 3)
      .List(i - 2, 3) = Worksheets("伝票ヘッダー").Cells(i, 4)
      .List(i - 2, 4) = Worksheets("伝票ヘッダー").Cells(i, 5)
    End With
  Next
End Sub
伝票ヘッダーのリストボックスでデータをダブルクリックした時の処理
Private Sub lstDenpyou_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
  txtDenno.Text = lstDenpyou.Text
End Sub

OKボタンをクリックした時

1)売上伝票照会シートの内容をクリアします。
2)売上伝票明細から指定した売上伝票を表示します
繰り返しの条件は売上明細の伝票NOテキストボックス売上伝票Noが一致したデータを抽出して売上伝票照会シートにコピーします。
3)合計・消費税・税込の計算をします。
Private Sub cmdOk_Click()
  Dim i As Long
  Dim j As Long
  Dim lastrow As Long
  Dim kingaku As Long
'売上伝票照会クリア
  Worksheets("売上伝票照会").Cells(1, 5) = ""
  Worksheets("売上伝票照会").Cells(2, 5) = ""
  Worksheets("売上伝票照会").Cells(4, 5) = ""
  Worksheets("売上伝票照会").Cells(5, 5) = ""
  For i = 1 To 4
    Worksheets("売上伝票照会").Cells(7 + i, 2) = ""
    Worksheets("売上伝票照会").Cells(7 + i, 3) = ""
    Worksheets("売上伝票照会").Cells(7 + i, 4) = ""
    Worksheets("売上伝票照会").Cells(7 + i, 5) = ""
    Worksheets("売上伝票照会").Cells(7 + i, 6) = ""
  Next
  Worksheets("売上伝票照会").Cells(12, 6) = ""
  Worksheets("売上伝票照会").Cells(13, 6) = ""
  Worksheets("売上伝票照会").Cells(14, 6) = ""
'売上伝票明細から指定した売上伝票を表示
  lastrow = Worksheets("売上明細").Cells(Rows.Count, 1).End(xlUp).Row
  j = 1
  For i = 2 To lastrow
    If Worksheets("売上明細").Cells(i, 1) = txtDenno.Text Then
      Worksheets("売上伝票照会").Cells(1, 5) = Worksheets("売上明細").Cells(i, 1)
      Worksheets("売上伝票照会").Cells(2, 5) = Worksheets("売上明細").Cells(i, 2)
      Worksheets("売上伝票照会").Cells(4, 5) = Worksheets("売上明細").Cells(i, 3)
      Worksheets("売上伝票照会").Cells(5, 5) = Worksheets("売上明細").Cells(i, 4)
      Worksheets("売上伝票照会").Cells(7 + j, 2) = Worksheets("売上明細").Cells(i, 5)
      Worksheets("売上伝票照会").Cells(7 + j, 3) = Worksheets("売上明細").Cells(i, 6)
      Worksheets("売上伝票照会").Cells(7 + j, 4) = Worksheets("売上明細").Cells(i, 7)
      Worksheets("売上伝票照会").Cells(7 + j, 5) = Worksheets("売上明細").Cells(i, 8)
      Worksheets("売上伝票照会").Cells(7 + j, 6) = Worksheets("売上明細").Cells(i, 9)
      j = j + 1
    End If
  Next
'合計計算
  For i = 8 To 11
    kingaku = kingaku + Worksheets("売上伝票照会").Cells(i, 6)
  Next
  Worksheets("売上伝票照会").Cells(12, 6) = kingaku
  Worksheets("売上伝票照会").Cells(13, 6) = kingaku * 0.05
  Worksheets("売上伝票照会").Cells(14, 6) = kingaku * 1.05
  Unload Me
  Worksheets("売上伝票照会").Select
End Sub
Private Sub cmdCancel_Click()
  Unload Me
End Sub

売上伝票照会シート

売上伝票(照会)プログラム

Sub 伝票印刷()
  Worksheets("売上伝票").PrintPreview
End Sub
Sub メニュー()
  Dim i As Long
  Cells(1, 5) = ""
  Cells(2, 5) = ""
  Cells(4, 5) = ""
  Cells(5, 5) = ""
  For i = 1 To 4
    Cells(7 + i, 2) = ""
    Cells(7 + i, 3) = ""
    Cells(7 + i, 4) = ""
    Cells(7 + i, 5) = ""
    Cells(7 + i, 6) = ""
  Next
  Cells(12, 6) = ""
  Cells(13, 6) = ""
  Cells(14, 6) = ""
  Worksheets("メニュー").Select
End Sub

塾長あいさつ
基本方針(考え方)
通信教育内容
課題解決セミナー内容
初心者基礎コース内容
カリキュラム・料金
案内地図・各種リンク
問合せ・申込み
アベノ塾
システムの内製化
アサイコンピュータACS
応用部品集(有料)
販売管理(事例)
財務管理(事例)
顧客管理(事例)
見積もり(事例)
給与(事例)
介護(事例)
ゴースト暗算(事例)
部品集(部品の基礎)
部品集(シート関連)
部品集(データベース)
部品集(セル関連)
部品集(関数)
部品集(フォーム関連)
部品集(ブック関連)
部品集(その他)
変数の勉強
繰り返しと条件文
マスター登録.訂正.削除
フォルダー内のファイル
項目をシート名で作成
ブックの操作
CSVファイルの取り込み
呼び出し元・先
商品マスター検索
エクセル関数をVBAで
エクセル関数を使う
よくつかうプログラム
販売管理(ソース)
財務管理(ソース)
給与管理(概要・画面)
見積もり(概要・画面)
工程管理(概要・画面)
原価管理(概要・画面)