• 検索結果がありません。

再利用して保存する場合は 新規登録 ボタン 1000 件まで登録できます 読み込んだ見積もりデータを 請求書に送るときは 請求へ複写 ボタン 2 請求書の作成 請求書 ボタンを押し 必要な項目を入力し 印刷 新規登録 ボタン data 読込 ボタンで作成済みデータを読みこめます 登録修正番号の数値の

N/A
N/A
Protected

Academic year: 2021

シェア "再利用して保存する場合は 新規登録 ボタン 1000 件まで登録できます 読み込んだ見積もりデータを 請求書に送るときは 請求へ複写 ボタン 2 請求書の作成 請求書 ボタンを押し 必要な項目を入力し 印刷 新規登録 ボタン data 読込 ボタンで作成済みデータを読みこめます 登録修正番号の数値の"

Copied!
25
0
0

読み込み中.... (全文を見る)

全文

(1)

1

見積書請求書作成 V2.0

メニュー(表紙)

このメニューにあるボタンのマクロはシートへの移動マクロです。 このファイルを」利用する場合には、シートの保護を解除しないでください。 データの削除や移動はしないでください。ファイルが壊れます。 見積請求作成 平成 25 年 7 月 作業の流れは 1 見積書の作成 「見積書」ボタンを押し、必要な項目を入力し、印刷、「新規登録」ボタン。 「data 読込」ボタンで作成済みデータを読みこめます。 登録修正番号の数値の「DATA 見積」のデータです。 「次」「前」ボタンでも、直接数字を打ち込んでも良いです。 読み込んだデータを修正して保存する場合は「修正登録」ボタン。

(2)

2 再利用して保存する場合は「新規登録」ボタン。 1000 件まで登録できます。 読み込んだ見積もりデータを、請求書に送るときは「請求へ複写」ボタン。 2 請求書の作成 「請求書」ボタンを押し、必要な項目を入力し、印刷、「新規登録」ボタン。 「data 読込」ボタンで作成済みデータを読みこめます。 登録修正番号の数値の「DATA 請求」のデータです。 「次」「前」ボタンでも、直接数字を打ち込んでも良いです。 読み込んだデータを修正して保存する場合は「修正登録」ボタン。 再利用して保存する場合は「新規登録」ボタン。 1000 件まで登録できます。 3 書類作成画面ではクリアは 2 種類あります。 全内容をクリアするものと工事名称金額等をクリアするもの。 セル B3 G5 C7 B14 お客様名 年月日 工事名 摘要の一行目 最低限 上記セルに 入力がなければ 保存はしません。 一度、登録したデータの削除はできません。 年度別に利用した場合の集計のために、間違ったデータを計算させないため 一部消去のマクロは準備しています。 小計と合計 小計 が必要な場合は、空白行を設け、その摘要欄に金額等を入力します。 金額欄には入力・表示はできません。 このファイルのデータは 1000 件まで登録保存できますが、年単位で利用するほうが良いでしょう。 古いものはそのまま残しておいて、新規に名前をつけて保存します。2 本の同じファイルができます。 新しい名前のファイルの、シート「DATA 見積」とシート「DATA 請求」の全データを消去してから利用します。 集計台帳は請求書の発行一覧表を作成するものです。 転記と集計のあと、必要に応じて印刷します。その後、解除とクリアをします。 データが 1 件でもあれば、実行できます。(意味はないですね) 月別の集計ですので、数ヶ月間データが蓄積されると意味が出てきます。 ここでの作業の前にファイル保存をしてください。 ここでの作業でファイルがおかしくなったら上書き保存はしないこと。 そのファイルは保存しないで終了、前のファイルを再度読み込みましょう。 集計は2度はしないこと 解除をしないうちにクリアをしないこと

最初はメニューのマクロから

(3)

3

このファイルのシートは 6 枚で非表示のシートはありません。

Private Sub CommandButton1_Click() Sheets("集計表").Select

End Sub

請求データを一覧集計します

Private Sub CommandButton2_Click() Sheets("DATA 見積").Select

End Sub

見積のデータを保存します

Private Sub CommandButton3_Click() Sheets("見積書").Select

End Sub

見積書です

Private Sub CommandButton6_Click() Sheets("請求書").Select

End Sub

請求書です

Private Sub CommandButton7_Click() Sheets("DATA 請求").Select

End Sub

請求データを保存します

Private Sub CommandButton9_Click() Sheets("説明書").Select

End Sub

(4)

4

(5)

5 セルの黄色が入力できるところ、新規登録や修正登録で保存できるデータです。 セルB3 お得意先名(敬称まで入力のこと) セルG5 年月日 セルG11 消費税率(これは保存しません)。 摘要欄は 20 行で、金額欄には計算式があります。 セルG14からセルG33まで、数量*単価の式 ここでのデータは「DATA見積」に保存します。 Sub 書込見積新規() ' データ転記まえに必要最低限の入力があるかどうかチェック Range("G1").Select ActiveCell.FormulaR1C1 = "=DATA 見積!R[1]C[-6]+1" Range("G2").Select If MsgBox(prompt:="印刷はしましたか。登録したらデータは消えますよ。いいですか(^。^)。", _ Title:="間違いないですか。(^。^)", Buttons:=vbOKCancel) = vbCancel Then

Exit Sub End If

Application.ScreenUpdating = False Dim message As String

'チェック

If Range("B3").Value = "" Then

message = MsgBox("お得意先名が入力されていません", vbYes, "入力確認") Exit Sub

End If

If Range("G5").Value = "" Then

message = MsgBox("日付が入力されていません", vbYes, "入力確認") Exit Sub

End If

If Range("C7").Value = "" Then

message = MsgBox("工事名が入力されていません", vbYes, "入力確認") Exit Sub

End If

If Range("B14").Value = "" Then

message = MsgBox("摘要が入力されていません", vbYes, "入力確認") Exit Sub

End If

'すべて入力されていれば登録します。確認。

If MsgBox(prompt:="データの書き込みです。いいですか(^。^)。", _

Title:="間違いないですか。(^。^)", Buttons:=vbOKCancel) = vbCancel Then Exit Sub

(6)

6 End If '見積書の新規保存です シート DATA 見積 の9行目以下に保存します。 Application.ScreenUpdating = False Sheets("DATA 見積").Unprotect Dim 位置 As Integer 位置 = Sheets("見積書").Cells(1, 7).Value + 8 'セル C1 書込行の位置決定

If MsgBox(prompt:="DATA 見積への " & 位置 - 8 & " 行目への保存です。メモをお勧めします。(^。^)。", _ Title:="間違いないですか。(^。^)", Buttons:=vbOKCancel) = vbCancel Then

Exit Sub End If ' Application.ScreenUpdating = False Sheets("DATA 見積").Activate '作業シート アクテイブに Range("B2:DE2").Select '登録データ範囲を指定 Selection.Copy

Range("B" & 位置).Select '値のみ貼り付け

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("A7").Select Application.CutCopyMode = False Sheets("DATA 見積").Protect Application.ScreenUpdating = True MsgBox "転記終了" Sheets("見積書").Select クリア全部 Range("A2").Select End Sub ' 詳細な説明は次のページから。

見積データの登録について

「見積書」のデータのセルの黄色の入力部分は「データ見積」の2行目に入るように式を設定しています。 1 行目と2行目と 8 行目は非表示にしています。 1 行目と 8 行目は分かりやすいように項目名と番号を、実際のデータはセルB2からセルDE2まで。

(7)

7

「見積書」のセルG1に表示される数字がデータの登録整理番号となります。

「DATA見積」に「見積書」のデータは 9 行目から順番に登録するように設定しています。

新規登録の位置は 次のマクロでセルG1には =DATA 見積!A2+1 という式が入力されます。

DATA 見積!A2 には =COUNT(B9:B1008) の式があるので、いまあるデータの次の番号になります。 Range("G1").Select ActiveCell.FormulaR1C1 = "=DATA 見積!R[1]C[-6]+1" Range("G2").Select データの保存のマクロです。 2 行目のデータをすでにあるデータの次の行に値のみ貼付けをします。 Dim 位置 As Integer 位置 = Sheets("見積書").Cells(1, 7).Value + 8 'セル C1 書込行の位置決定 セルG1の数字に8を加算した数値が登録される行になります。 Sheets("DATA 見積").Activate '作業シート アクテイブに Range("B2:DE2").Select '登録データ範囲を指定 Selection.Copy

(8)

8

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("A7").Select Application.CutCopyMode = False 全体のマクロは次のとおりです。 元々のマクロは黒文字で、それに追加した説明は青色とします。 マクロの中で、頭に ' がある行は注釈文字列になり、マクロの実行には影響しません。 Sub 書込見積新規() ' データ転記まえに必要最低限の入力があるかどうかチェック Range("G1").Select ActiveCell.FormulaR1C1 = "=DATA 見積!R[1]C[-6]+1" Range("G2").Select If MsgBox(prompt:="印刷はしましたか。登録したらデータは消えますよ。いいですか(^。^)。", _ Title:="間違いないですか。(^。^)", Buttons:=vbOKCancel) = vbCancel Then

Exit Sub End If ここのIFからEnd IF は最初の確認です。 キャンセルすれば、以下の作業を実行しないでこのマクロは終了です。 Application.ScreenUpdating = False 画面の変化を表示をさせないようにします。 Dim message As String

変数の宣言です 'チェック

該当セルが空白ならば、作業は終了です。 If Range("B3").Value = "" Then

message = MsgBox("お得意先名が入力されていません", vbYes, "入力確認") Exit Sub

End If

If Range("G5").Value = "" Then

message = MsgBox("日付が入力されていません", vbYes, "入力確認") Exit Sub

End If

If Range("C7").Value = "" Then

message = MsgBox("工事名が入力されていません", vbYes, "入力確認") Exit Sub

(9)

9 If Range("B14").Value = "" Then

message = MsgBox("摘要が入力されていません", vbYes, "入力確認") Exit Sub End If 'すべて入力されていれば登録します。確認。 セル B3 G5 C7 B14 お客様名 年月日 工事名 摘要の一行目 最低限 上記セルに 入力がなければ 保存はしません。以下の作業はしません。 If MsgBox(prompt:="データの書き込みです。いいですか(^。^)。", _

Title:="間違いないですか。(^。^)", Buttons:=vbOKCancel) = vbCancel Then Exit Sub End If ここのIFからEnd IF は 2 度目の確認です。 キャンセルすれば、以下の作業を実行しないでこのマクロは終了です。 2 度の確認作業を通過したらデータの保存です。 ''見積書の新規保存です シート DATA 見積 の9行目以下に保存します。 Application.ScreenUpdating = False 画面表示の変化を表示させない Sheets("DATA 見積").Unprotect シートの保護を解除する Dim 位置 As Integer 変数の宣言です 位置 = Sheets("見積書").Cells(1, 7).Value + 8 'セル C1 書込行の位置決定

If MsgBox(prompt:="DATA 見積への " & 位置 - 8 & " 行目への保存です。メモをお勧めします。(^。^)。 Title:="間違いないですか。(^。^)", Buttons:=vbOKCancel) = vbCancel Then

Exit Sub End If ここのIFからEnd IF は3度目のの確認です。 キャンセルすれば、以下の作業を実行しないでこのマクロは終了です。 くどいですが、2度ではなく 3 度目の確認作業を通過したらデータの保存です。 Application.ScreenUpdating = False Sheets("DATA 見積").Activate '作業シート アクテイブに Range("B2:DE2").Select '登録データ範囲を指定 Selection.Copy

Range("B" & 位置).Select '値のみ貼り付け Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ : =False, Transpose:=False

Range("A7").Select

データが下の行に貼付けられました。 Application.CutCopyMode = False

(10)

10 Sheets("DATA 見積").Protect シートの保護をする Application.ScreenUpdating = True MsgBox "転記終了" Sheets("見積書").Select クリア全部 サブマクロの実行になります Range("A2").Select End Sub

次は{クリア全部}の説明になります

見積データのクリアについて

元々のマクロは黒文字で、それに追加した説明は青色とします。 マクロの中で、頭に ' がある行は注釈文字列になり、マクロの実行には影響しません。 Sub クリア全部() '' データを消去する' Application.ScreenUpdating = False Range("A2").Select 次からの 5 行は今は利用していません。 'Dim ans As String

'ans = MsgBox("本当に消去していいですか?", vbOKCancel, "消去の確認") 'If ans = vbCancel Then

'Exit Sub 'End If ActiveSheet.Unprotect シート保護の解除 入力した黄色のセルの部分をクリアするマクロです。修正登録番号はクリアせずに残します。 '修正登録番号 ' Range("G1").Select ' Selection.ClearContents

(11)

11 '年月日 Range("G5").Select Selection.ClearContents '得意先 Range("B3").Select Selection.ClearContents '取引方法 有効期限 Range("C8:C9").Select Selection.ClearContents '工事名 Range("C7:D7").Select Selection.ClearContents '摘要 Range("B14:F33").Select Selection.ClearContents '備考 Range("H14:H33").Select Selection.ClearContents '端数調整 Range("H12").Select Selection.ClearContents Range("A2").Select ActiveSheet.Protect End Sub 'ついでに次のマクロまで。得意先などは残して工事内容金額をクリアするマクロです。 Sub クリア工事() '' データを消去する Application.ScreenUpdating = False Range("A2").Select ActiveSheet.Unprotect シートの保護解除 '工事名 Range("C7:D7").Select Selection.ClearContents '摘要 Range("B14:F33").Select Selection.ClearContents '備考

(12)

12 Range("H14:H33").Select Selection.ClearContents '端数調整 Range("H12").Select Selection.ClearContents Range("A2").Select ActiveSheet.Protect シートの保護設定 End Sub 新規登録は整理番号を新しく採番しますが、修正登録は セルG1 の数字をそのまま利用して登録します。 マクロの内容は新規登録と全く同じになります。 Sub 書込見積修正() ' データ転記まえに必要最低限の入力があるかどうかチェック If MsgBox(prompt:="印刷はしましたか。登録したらデータは消えますよ。いいですか(^。^)。", _ Title:="間違いないですか。(^。^)", Buttons:=vbOKCancel) = vbCancel Then

Exit Sub End If

Application.ScreenUpdating = False Dim message As String

'チェック

If Range("B3").Value = "" Then

message = MsgBox("お得意先名が入力されていません", vbYes, "入力確認") Exit Sub

End If

If Range("G5").Value = "" Then

message = MsgBox("日付が入力されていません", vbYes, "入力確認") Exit Sub

End If

If Range("C7").Value = "" Then

message = MsgBox("工事名が入力されていません", vbYes, "入力確認") Exit Sub

End If

If Range("B14").Value = "" Then

message = MsgBox("摘要が入力されていません", vbYes, "入力確認") Exit Sub

End If

'すべて入力されていれば登録します。確認。

(13)

13

Title:="間違いないですか。(^。^)", Buttons:=vbOKCancel) = vbCancel Then Exit Sub End If ''見積書の修正保存です シート DATA 見積 の9行目以下に保存します。 ' Application.ScreenUpdating = False Sheets("DATA 見積").Unprotect Dim 位置 As Integer 位置 = Sheets("見積書").Cells(1, 7).Value + 8 'セル C1 書込行の位置決定

If MsgBox(prompt:="DATA 見積への " & 位置 - 8 & " 行目への保存です。メモをお勧めします。(^。^)。", _ Title:="間違いないですか。(^。^)", Buttons:=vbOKCancel) = vbCancel Then

Exit Sub End If ' Application.ScreenUpdating = False Sheets("DATA 見積").Activate '作業シート アクテイブに Range("B2:DE2").Select '登録データ範囲を指定 Selection.Copy

Range("B" & 位置).Select '値のみ貼り付け

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ : =False, Transpose:=False Range("A7").Select Application.CutCopyMode = False Sheets("DATA 見積").Protect Application.ScreenUpdating = True MsgBox "転記終了" Sheets("見積書").Select クリア全部 Range("A2").Select End Sub

次はその他のマクロの説明になります

見積データの読込について

(14)

14 元々のマクロは黒文字で、それに追加した説明は青色とします。 マクロの中で、頭に ' がある行は注釈文字列になり、マクロの実行には影響しません。 保存してあるデータを画面上に読み込みます。 Sub 読込見積() ActiveSheet.Unprotect Dim 位置 As Integer Dim I As Integer 位置 = Sheets("見積書").Cells(1, 7).Value + 8 'セル G1 読込行の位置決定 読み込むデータは セルG1の修正登録番号 に 8 を加算した行のデータになります。 整理番号 得意先 年月日 工事名 取引方法 有効期限 金額 端数調整 B列 C列 D列 E列 F列 G列 H列 I列 2 3 4 5 6 7 8 9

Sheets("見積書").Cells(3, 2).Value = Sheets("DATA 見積").Cells(位置, 3).Value Sheets("見積書").Cells(5, 7).Value = Sheets("DATA 見積").Cells(位置, 4).Value Sheets("見積書").Cells(7, 3).Value = Sheets("DATA 見積").Cells(位置, 5).Value Sheets("見積書").Cells(8, 3).Value = Sheets("DATA 見積").Cells(位置, 6).Value Sheets("見積書").Cells(9, 3).Value = Sheets("DATA 見積").Cells(位置, 7).Value Sheets("見積書").Cells(12, 8).Value = Sheets("DATA 見積").Cells(位置, 9).Value

摘要欄は 20 行分あり、B列、D列、E列、F列分が「DATA見積」のJ列から 4 個分づつCK列までの 80 個のセル に格納されているので、それを順次、「見積書」に戻します。 内 訳1 数 量 単位 単 価 J列 K列 L列 M列 10 11 12 13 内 訳2 数 量 単位 単 価 N列 O列 P列 Q列 14 15 16 17

(15)

15 内 訳 20 数 量 単位 単 価

CH列 CI列 CJ列 CK列 86 87 88 89 For I = 1 To 20 '摘要 20 行分

Sheets("見積書").Cells(14 + (I - 1), 2).Value = Sheets("DATA 見積").Cells(位置, 10 + (I - 1) * 4).Value Sheets("見積書").Cells(14 + (I - 1), 4).Value = Sheets("DATA 見積").Cells(位置, 11 + (I - 1) * 4).Value Sheets("見積書").Cells(14 + (I - 1), 5).Value = Sheets("DATA 見積").Cells(位置, 12 + (I - 1) * 4).Value Sheets("見積書").Cells(14 + (I - 1), 6).Value = Sheets("DATA 見積").Cells(位置, 13 + (I - 1) * 4).Value 'CL 列の後に追加した備考欄の分

Sheets("見積書").Cells(14 + (I - 1), 8).Value = Sheets("DATA 見積").Cells(位置, 89 + I).Value Next I CL列からから 20 個分には「見積書「のH列のデータが入っています。これは、このファイルを作成する 前のバージョンの{ 見積請求管理 v1.1}を改変して、このファイルを作成したからで、若干整合性には欠けます が、「DATA見積」の 1 行目、2 行目のシート変更を簡単にするための方便です。 CL 列の後に追加した備考欄の分として、最後の一行分のマクロが前の部分と違います。 ActiveSheet.Protect Range("A2").Select Sheets("見積書").Select End Sub 次のマクロはデータを次々に読み込むマクロです。 { 見積請求管理 v1.1}では、読込にも一々確認を必要としました。 今回にはありません。 セルG1に応じたデータが呼び込まれます。 ''修正登録番号 G1 に 1 を加算し データを読み込む 'Sub 表示_次 data 見積() Range("G1").Value = Range("G1").Value + 1 読込見積 End Sub '修正登録番号 G1 が 1 ならば前はない '修正登録番号 G1 に 1 を減算し データを読み込む Sub 表示_前 data 見積() If Range("G1").Value = 1 Then Exit Sub End If Range("G1").Value = Range("G1").Value - 1

(16)

16 読込見積 End Sub 画面の 1 枚印刷するマクロです。 '印刷用マクロ Sub 印刷_表示頁() '選択画面のシートを 1 枚印刷する Application.ScreenUpdating = False ActiveWindow.SelectedSheets.PrintOut Copies:=1 Range("A4").Select End Sub 見積書のデータを利用して請求書を作成する。 このファイルを作成の目的が、このマクロになります。 「見積書」のデータを「請求書」に転記(送る)ものです。 データのの位置関係すべて同じです。 Sub 複写() Dim I As Integer

Sheets("請求書").Cells(3, 2).Value = Sheets("見積書").Cells(3, 2).Value セルB3 得意先様 Sheets("請求書").Cells(5, 7).Value = Sheets("見積書").Cells(5, 7).Value セルG5 年月日 Sheets("請求書").Cells(7, 3).Value = Sheets("見積書").Cells(7, 3).Value セルC7 工事名称 Sheets("請求書").Cells(8, 3).Value = Sheets("見積書").Cells(8, 3).Value セルC8 取引方法 Sheets("請求書").Cells(9, 3).Value = Sheets("見積書").Cells(9, 3).Value セルC9 有効期限 Sheets("請求書").Cells(12, 8).Value = Sheets("見積書").Cells(12, 8).Value セルH12 端数調整 For I = 1 To 20 '摘要 20 行分

Sheets("請求書").Cells(14 + (I - 1), 2).Value = Sheets("見積書").Cells(14 + (I - 1), 2).Value B列摘要 Sheets("請求書").Cells(14 + (I - 1), 4).Value = Sheets("見積書").Cells(14 + (I - 1), 4).Value D列数量 Sheets("請求書").Cells(14 + (I - 1), 5).Value = Sheets("見積書").Cells(14 + (I - 1), 5).Value E列単位 Sheets("請求書").Cells(14 + (I - 1), 6).Value = Sheets("見積書").Cells(14 + (I - 1), 6).Value F列単価 Sheets("請求書").Cells(14 + (I - 1), 8).Value = Sheets("見積書").Cells(14 + (I - 1), 8).Value G列備考 Next I

Sheets("請求書").Select End Sub

次は請求書の説明になります

(17)

17

見積書と請求書はデータ関係は全て同じ位置で いくつかの文言が変わっているだけです。

「見積書」のデータは「DATA見積」に登録保存されます

(18)

18 「請求書」のマクロは「見積書」のマクロとほぼ同じです。 見積 という部分を 請求 と変えることでそのまま利用できますので、説明は省略します。 ここではシートの説明。 黄色のセルの部分は自由に入力できる部分で、このデータは登録保存できるものです。 青色のセルも入力可能です。事業所名称等を入力します。 入力した金額の合計はセルG24になります。セルG24の式 =SUM(G14:G33) 消費税の額はセル11になります。 セルH11の式 =(G34*G11) 消費税の額 税率はセルG11の表示形式は下のとおり。税率がアップしてもここを変更すれば使えます。 実際には少数があることになります。 税込請求金額はセルC11になります。セルC11の式 =(G34+H11+H12) セルH12 に調整額の欄、値引きの欄を設けました。マイナスで入力することで値引き額を表示できま す。

次は DATA 見積・DATA 請求の説明になります

DATA見積、DATA請求のマクロについて

(19)

19 「DATA 見積」 元々のマクロは黒文字で、それに追加した説明は青色とします。

マクロの中で、頭に ' がある行は注釈文字列になり、マクロの実行には影響しません。

Private Sub CommandButton3_Click() クリア一行 1

End Sub

Private Sub CommandButton2_Click() クリア DATA End Sub 元々のマクロは黒文字で、それに追加した説明は青色とします。 マクロの中で、頭に ' がある行は注釈文字列になり、マクロの実行には影響しません。 Sub クリア DATA() '' Macro1 Macro Application.ScreenUpdating = False Dim ans As String

MsgBox "全部のデータの消去です。よく考えて実行しましょう。"

ans = MsgBox("すべてのデータを本当に消去していいですか?", vbOKCancel, "消去の確認") If ans = vbCancel Then

Exit Sub End If ActiveSheet.Unprotect Range("B9:CK1008").Select Selection.ClearContents Range("A4").Select

(20)

20 ActiveSheet.Protect End Sub '「DATA見積」用 Sub クリア一行 1() 'カーソルのある行のデータを消去します。 Application.ScreenUpdating = False Dim R1 As Integer Dim C1 As Integer Dim Sn As String R1 = ActiveCell.Row '現在のセルの位置の行番号 C1 = ActiveCell.Column '現在のセルの位置の列番号 Sn = ActiveSheet.Name '現在のシートの名前 下の5行はプログラム作成時点で、変数の確認するためのチェック用のもの。 完成後は削除しても良いのですが、削除しないで注釈文字列にしています。 ' MsgBox R1 ' MsgBox "B" & R1

' MsgBox "D" & R1 & ":I" & R1 ' MsgBox Sn ' Stop 注意のメッセージの表示 MsgBox "データの消去には、十分注意が必要です。" IF EndIf が 2 重になっています。 If R1 < 9 Or Sn <> "DATA 見積" Then '8 行以下やシート名のチェック MsgBox "この行のデータは消去できません", 0 + 48, "確認" Else MsgBox R1 - 8 & " 番目のデータの消去です。" Dim ans As String

ans = MsgBox("本当に消去していいですか?", vbOKCancel, "消去の確認") If ans = vbOK Then

ActiveSheet.Unprotect 'F 列から Range("F" & R1 & ":CK" & R1) = ""

ActiveSheet.Protect Cells(R1, 1).Select 'カーソルを A 列に設置 End If End If End Sub 「DATA請求」用 Sub クリア一行 2() 'カーソルのある行のデータを消去します。 Dim R1 As Integer

(21)

21 Dim C1 As Integer Dim Sn As String R1 = ActiveCell.Row '現在のセルの位置の行番号 C1 = ActiveCell.Column '現在のセルの位置の列番号 Sn = ActiveSheet.Name '現在のシートの名前 下の5行はプログラム作成時点で、変数の確認するためのチェック用のもの。 完成後は削除しても良いのですが、削除しないで注釈文字列にしています。 ' MsgBox R1 ' MsgBox "B" & R1

' MsgBox "D" & R1 & ":I" & R1 ' MsgBox Sn ' Stop MsgBox "データの消去には、十分注意が必要です。" If R1 < 9 Or Sn <> "DATA 請求" Then '8 行以下やシート名のチェック MsgBox "この行のデータは消去できません", 0 + 48, "確認" Else MsgBox R1 - 8 & " 番目のデータの消去です。" Dim ans As String

ans = MsgBox("本当に消去していいですか?", vbOKCancel, "消去の確認") If ans = vbOK Then

ActiveSheet.Unprotect 'F 列から Range("F" & R1 & ":CK" & R1) = ""

ActiveSheet.Protect Cells(R1, 1).Select 'カーソルを A 列に設置 End If End If End Sub

次は請求金額一覧の集計の説明になります

(22)

22

請求金額一覧集計について

NO9 元々のマクロは黒文字で、それに追加した説明は青色とします。 マクロの中で、頭に ' がある行は注釈文字列になり、マクロの実行には影響しません。 左側のボタンから順次、実行します。 集計台帳は請求書の発行一覧表を作成するものです。 転記と集計のあと、必要に応じて印刷します。その後、解除とクリアをします。 データが 1 件でもあれば、実行できます。(意味はないですね) 月別の集計ですので、数ヶ月間データが蓄積されると意味が出てきます。 ここでの作業の前にファイル保存をしてください。 ここでの作業でファイルがおかしくなったら上書き保存はしないこと。 そのファイルは保存しないで終了、前のファイルを再度読み込みましょう。 集計は2度はしないこと 解除をしないうちにクリアをしないこと ファイルが壊れる確率は高いですぞ。!(^^)! '年間一覧表のマクロ 'Sub 年間転記() ' データの有無を確認 請求書のデータの有無を確認します。 「DATA請求」の セルB9 に数値があれば 1 行はデータがあることになります。 If Sheets("DATA 請求").Cells(9, 2).Value = 0 Then

MsgBox "データがありません。" Exit Sub

(23)

23 End If データがあれば作業が続きます。無い場合は以上で作業は終了です。 Application.ScreenUpdating = False 'DATA 請求から 年月日、伝票№ 、得意先、 金額、工事名を転記 ActiveSheet.Unprotect 作業の前にシートの保護を解除します。シート「集計表」ですね。 Sheets("DATA 請求").Select Range("B9:E1008").Select B列・整理番号 C列・得意先 D列・年月日 E列・工事名 Selection.Copy 選択範囲をコピー Sheets("集計表").Select Range("C6").Select セルC6を先頭にして、値のみを貼り付ける(C列からF列までに) Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

: =False, Transpose:=False Application.CutCopyMode = False コピーモードの解除 Sheets("DATA 請求").Select Range("H9:H1008").Select H列・工事金額 Selection.Copy 選択範囲をコピー Sheets("集計表").Select Range("G6").Select セルG6を先頭にして、値のみを貼り付ける(G列) Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ : =False, Transpose:=False Application.CutCopyMode = False コピーモードの解除 Range("A5").Select Sheets("DATA 請求").Select Range("A5").Select '念のため並べ替え 年月日 Sheets("集計表").Select Range("C5:G1005").Select

Selection.Sort Key1:=Range("E6"), Order1:=xlAscending, Header:=xlGuess, _

OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ : =xlPinYin, DataOption1:=xlSortNormal この並べ替えはエクセル2003で作成のものです。 'B6の式をデータ分だけコピー =MONTH(E6) B列にE列の年月日から月のみを取り出します。 Dim su As Integer 変数宣言 su = Range("B2").Value 'セルB2にデータ数のカウント式設置 =COUNTA(E:E) データの数だけオートフィルコピーするためです Range("B6").Select Selection.Copy

(24)

24 Range("B7:B" & su + 4).Select

ActiveSheet.Paste Application.CutCopyMode = False Range("A2").Select ActiveSheet.Protect End Sub ' 'Sub 年間集計() ' データが無い場合には作業が終了します。 If Cells(6, 3).Value = 0 Then

MsgBox "データがありません。" Exit Sub End If データが有る場合には、カーソルをB5において ここを基準にして 6 列目の金額の月別小計を計算します ActiveSheet.Unprotect Range("B5").Select

Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(6), _ Replace:=True, PageBreaks:=False, SummaryBelowData:=True Range("A2").Select ActiveSheet.Protect End Sub '小計の設定画面です ' 小計の設定画面の中のすべて削除を実行すると、下のマクロになります。

(25)

25 Sub 年間解除()

' If Cells(6, 4).Value = 0 Then

MsgBox "データがありません。" Exit Sub End If ActiveSheet.Unprotect Range("B5").Select Selection.RemoveSubtotal Range("A2").Select ActiveSheet.Protect End Sub セルB6にはコピー元の式があります。ここを残して B6からI1005までの範囲をクリアするものです。 Sub 年間クリア()

' If Cells(6, 3).Value = 0 Then

MsgBox "データがありません。" Exit Sub End If ActiveSheet.Unprotect Range("B7:I1005").Select Selection.ClearContents Range("C6:G6").Select Selection.ClearContents Range("A2").Select ActiveSheet.Protect End Sub B6の式をコピー方式ではない別の方法でやれば、ここは1回で済みます。 Range("B6:I1005").Select Selection.ClearContents ここだけに限らず、同じ作業をするいくつかの方法があります。したがってマクロも色々な記述方法があります。 このファイルの例で言えば、 6 ページの請求へ複写のマクロは式で入力していますが、昔の私ならば、セルをコピーして値のみ貼り付けで データの数だけ実行して下のようになっていたと思います。

以上でファイルの説明は終了です。

どんな形の見積書や請求書でもこの応用で作成できるのではないでしょうか

参照

関連したドキュメント

第 1 項において Amazon ギフト券への交換の申請があったときは、当社は、対象

Jabra Talk 15 SE の操作は簡単です。ボタンを押す時間の長さ により、ヘッドセットの [ 応答 / 終了 ] ボタンはさまざまな機

Desk Navigator グ ループ 通常業務の設定」で記載されているRidoc Desk Navigator V4への登録 方法に加えて新製品「RICOH Desk

ユーザ情報を 入力してくだ さい。必要に 応じて複数(2 つ目)のメー ルアドレスが 登録できます。.

旅行者様は、 STAYNAVI クーポン発行のために、 STAYNAVI

何日受付第何号の登記識別情報に関する証明の請求については,請求人は,請求人

したがって,一般的に請求項に係る発明の進歩性を 論じる際には,

操作内容/項目説明 振込金額を入力します。 【留意点】 ・半角数字(最大10桁)