Step33 請求書No.が登録済みかチェック: Excel請求書

一覧シートに請求書No.をキーに登録するようにしました。これにより請求書No.は重要な要素なので、シートに変更がある場合、印刷や保存前にチェックするようにします。

チェックのコードは良く使うので、標準モジュールに入力します。前回作成したMyFindNumberプロシージャも標準モジュールに移動します。
変更の有無は、ActiveWorkbook.Savedで判定します。Trueが返れば変更なし、Falseが返れば変更ありになります。
Excelファイルの保存前に確認するには、Workbook_BeforeSaveイベントに記載します。
続けて実行するかどうかはMsgBoxを使い、引数にvbYesNoCancelを使い、vbYesが返った時のみ継続するようにします。


Homeに戻る > Excelでアプリケーションソフト3 > 請求書アプリ

作成画面

■標準モジュールの追加

メニューの[挿入]-[標準モジュール]をクリックします。
標準モジュール

下矢印のように追加できました。

MyFindNumberプロシージャをThisWorkbookから移動してください。
その時、Private FunctionからPublic Functionに変更してください。
Public Functionに変更


■印刷や保存前に請求書No.登録済みかチェックする

印刷前に下記のコードを追加します。

Private Sub CommandButton1_Click()
    Dim lRet As Long
    
    If MyCodeCheck = True Then
        lRet = MsgBox("入力されている請求書No.は既に使用されています。" & vbCrLf & _
        "印刷を続けますか?", vbYesNoCancel + vbCritical, "Excel請求書")
        If lRet <> vbYes Then
            Exit Sub
        End If
    End If
請求書シート変更があり、請求書No.が登録済みの場合「入力されている請求書No.は既に使用されています。印刷を続けますか?」とメッセージが表示されます。
[はい]をクリックすると印刷され、それ以外をクリックすると印刷は中止します。
印刷を続けますか?

保存ボタンクリックコードに下記のコードを追加します。

Private Sub CommandButton2_Click()
    Dim sSaveFile As String
    Dim sNewBook As String
    Dim sSrcBook As String
    Dim lRet As Long
    
    If MyCodeCheck = True Then
        lRet = MsgBox("入力されている請求書No.は既に使用されています。" & vbCrLf & _
        "保存しますか?", vbYesNoCancel + vbCritical, "Excel請求書")
        If lRet <> vbYes Then
            Exit Sub
        End If
    End If
印刷前と同様に下のメッセージが表示されます。
保存ボタンクリックコード

PDFファイル保存ボタンクリックコードに下記のコードを追加します。

Private Sub CommandButton3_Click()
    Dim sSaveFile As String
    Dim sNewBook As String
    Dim sSrcBook As String
    Dim lRet As Long
    
    If MyCodeCheck = True Then
        lRet = MsgBox("入力されている請求書No.は既に使用されています。" & vbCrLf & _
        "PDFファイルに保存しますか?", vbYesNoCancel + vbCritical, "Excel請求書")
        If lRet <> vbYes Then
            Exit Sub
        End If
    End If
印刷前と同様に下のメッセージが表示されます。
PDFファイル保存ボタンクリックコード

Excelブック保存前のイベントにに下記のコードを追加します。

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Dim lRet As Long
    
    If MyCodeCheck = True Then
        lRet = MsgBox("入力されている請求書No.は既に使用されています。" & vbCrLf & _
        "保存しますか?", vbYesNoCancel + vbCritical, "Excel請求書")
        If lRet <> vbYes Then
            Cancel = True
        End If
    End If
End Sub

印刷前と同様に下のメッセージが表示されます。
Excelブック保存前のイベント

[関連リンク]

ブックが閉じる前に処理を実行する
ブックのイベント
モジュール入力画面の表示方法


Homeに戻る > Excelでアプリケーションソフト3 > 請求書アプリ

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved