- ベストアンサー
ExcelVBAで必須セルを入力しないと保存不可設定したが、未入力有でメールして来られる。対策は?
知恵袋にも質問しましたが、回答を頂けるか不安で、こちらにも質問します。 ExcelのVBAで、先日、次の要望(1)~(5)を満たすコード(下記記載)を教えて頂き、大変助かりました。 ただ、新たな問題(最後に書いてます)が発生しましたので、ご回答をお願いいたします。 (1)特定のセル(A1,B5,C10等)を入力しないとファイルを保存できない設定 (2)全て入力してたら、閉じる時に普段どおり、『「保存しますか?」の質問に「はい」「いいえ」「キャンセル」』のメッセージボックスが出るように (3)入力してなかったら、閉じる時に『「未入力ですので、保存できません」』の質問に「保存しません」「キャンセル」』のメッセージボックスが出るように (4)上書可能で、上書きする時に特定のセル(D12)にその時の日を入力したいが、その日には条件があって、16:00より前ならその日、16:00以降なら翌日に入力されるように (5)また、作成者がそこを空白のまま保存できないので、作成者については、その制限がかからない方法 ブックモジュール[ThisWokbook]に Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) If Application.UserName = ThisWorkbook.BuiltinDocumentProperties("Author") Then Exit Sub '許可するユーザー名 Dim myRng As Range Dim myStr As String With Worksheets("Sheet1") Set myRng = Union(.Range("A1"), .Range("B5"), .Range("C10")) End With If WorksheetFunction.CountA(myRng) < 3 Then Cancel = True myStr = "未入力セルがあります" & vbCrLf & _ "[OK....保存しないで終了]" & vbCrLf & _ "[キャンセル..編集に戻る]" If MsgBox(myStr, vbOKCancel) = vbOK Then ThisWorkbook.Close False End If End If Worksheets("Sheet1").Range("D12") = Date + IIf(Time < TimeValue("16:00"), 0, 1) End Sub 新たな問題ですが、このExcelファイルは依頼書で各営業が全て入力してからメールでこちら部署に送って来ます。そこで、営業が上書きせずに(必須項目未入力有)、Excelの「メニューバー(?)」の「ファイル」「送信」「メールの宛先」でファイルを送って来て、困ってます。何か対策はないでしょうか?上記コードを生かしたコードを教えていただくと助かります。
- みんなの回答 (3)
- 専門家の回答
お礼
ご回答ありがとうございました。 大変助かりました!!