VBA 経費管理7(クリア、発行)

クリア

クリアボタンの全体像

クリアボタンはセルの値をクリア(change)するため、Application.EnableEventでイベントを無効にしたのちに、入力欄、申請日欄、伝票番号欄、入力候補欄をクリアします。

Sub Clr_01() ‘入力欄クリア

Application.EnableEvents = False

  Range(“E6:L6,I9,K9”).Select
  Selection.ClearContents

  ActiveSheet.Range(“A6:C100”).Select
  Selection.ClearContents

  Range(“F4”).Select

Application.EnableEvents = True

End Sub

クリアボタンの詳細

Application.EnableEvents = Falseで他のイベント起動を無効化し、Application.EnableEvents = Trueで復活します。

Range(“E6:L6,I9,K9”).Select
Selection.ClearContents

入力欄E6からL6セルまでセル範囲を選択しています。加えて申請日欄I9セルと、伝票番号欄K9セルを選択しています。
選択したセル範囲の入力内容をクリアしています。

ActiveSheet.Range(“A6:C100”).Select
Selection.ClearContents

入力候補欄A6からC100セルまでセル範囲を選択しています。
選択したセル範囲の入力内容をクリアしています。

Range(“F4”).Select

カーソルを戻したい位置を指定しています。サンプルではF4セルを指定しています。
連続して入力を行う場合、F6セル以外を選択して。日付入力時にF6セルを選択することでWorksheet_SelectionChangeが起動します。

発行

発行ボタンの全体像

はじめにワークシート「管理番号」の情報をもとに伝票番号を作成します。
発行ボタンはワークシート「経費申請」のF8セルからK57セルまでを経費申請書として使用します。
次に印刷プレヴュー画面を開きます。

Sub PrintS() ‘帳票管理番号の作成と帳票印刷

Set DTH(2) = Worksheets(“管理番号”).Range(“A1”)
  str(1) = DTH(2).Cells(2, 3) ‘前回発行時の年月
  str(2) = DTH(2).Cells(2, 4) + 1 ‘前回発行時のカウント
  str(3) = Mid(Date, 1, 4) & Mid(Date, 6, 2) ‘今日の年月

If str(1) = str(3) Then ‘前回年月と変わらない場合
  str(5) = DTH(2).Cells(2, 2) + str(1) + “-” + str(2)
  DTH(2).Cells(2, 4) = str(2)
Else ‘前回年月と違う場合に連番に1を代入
  str(5) = DTH(2).Cells(2, 2) + str(3) + “-” + “1”
  DTH(2).Cells(2, 4) = 1
  DTH(2).Cells(2, 3) = str(3)
End If

Cells(9, 11).Value = str(5)
Cells(9, 9).Value = Mid(Date, 1, 4) & Mid(Date, 6, 2) & Mid(Date, 9, 2)

Worksheets(“経費申請”).PrintPreview EnableChanges:=False
Cells(9, 5).Value = “発行済”

End Sub

発行ボタンの詳細

伝票番号の作成

Set DTH(2) = Worksheets(“管理番号”).Range(“A1”)
  str(1) = DTH(2).Cells(2, 3) ‘前回発行時の年月
  str(2) = DTH(2).Cells(2, 4) + 1 ‘前回発行時のカウント
  str(3) = Mid(Date, 1, 4) & Mid(Date, 6, 2) ‘今日の年月

はじめにDTH(2)にワークシート「管理番号」をセットします。
str(0)にはB2セルの値、管理番号「伝票種」頭文字”DF”(任意)を取得します。
str(1)にはC2セルの値(前回発行時の年月)を取得します。
str(2)にはD2セルの値(前回発行時のカウント)に”1”を足した値を取得します。
str(3)には今日の日付から西暦4桁月2桁の文字列 (“yyyymm”形式)を作成します。

If str(1) = str(3) Then ‘前回年月と変わらない場合
  str(5) = str(0)+ str(3) + “-” + str(2)
  DTH(2).Cells(2, 4) = str(2)
Else ‘前回年月と違う場合に連番に1を代入
  str(5) = str(0) + str(3) + “-” + “1”
  DTH(2).Cells(2, 4) = 1
  DTH(2).Cells(2, 3) = str(3)
End If

str(1)と str(3)を比較して、同じであれば
伝票番号は頭文字 + 当月年月 + 前回カウントに”1”を足した値
>b>D2セルには今回のカウント(連番)を代入します。

str(1)と str(3)を比較して、違うとき
伝票番号は頭文字 + 当月年月 + ”1”
D2セルには1を代入します。
C2セルには当月年月(“yyyymm”形式)を代入します。

Cells(9, 11).Value = str(5)
Cells(9, 9).Value = Mid(Date, 1, 4) & Mid(Date, 6, 2) & Mid(Date, 9, 2)

作成した伝票番号K9セルに代入します。
作成された伝票番号は「経費申請書」ごとに発番、発行され、最終的に「経費実績」に記録されます。

I9セルには今日の日付を申請日として代入します。

印刷プレヴュー

  ーーーーーーーーーーーーーーーー<中略>ーーーーーーーーーーーーーーーーーーーー

Worksheets(“経費申請”).PrintPreview EnableChanges:=False
Cells(9, 5).Value = “発行済”

事前にワークシート「経費申請」のF8セルからK57セルまでを印刷範囲設定しています。
Worksheets(“経費申請”).PrintPreviewだけでも印刷プレヴュー画面に遷移します。
EnableChanges:=Falseは、プレビュー画面で、印刷設定が使用不可となります。

最後にE8セルの「進捗」を”発行済“として完了です。
「進捗」を”発行済“とすることで新規の作成ができなくなります。

VBA 経費管理6(クリア、帳票)はここまでです。次回は清算完了」ボタンを作成していきます。

タイトルとURLをコピーしました