- ベストアンサー
エクセル 未入力セルがあると保存できなくなるように
エクセル 未入力セルがあると保存できなくなるようにする エクセルで特定の複数セルに未入力があると保存できなくなるようにしたいのです。 (例:M12、AD12、M13、U13、AD13、K14、N14、Q14、Z14、AC14) また複数シートで、シート名は作成者各個人にてバラバラになります。 ※VBAでSheet1などと特定ができなくなると思います。 そのような状況でVBAなどで設定は出来ますでしょうか? よろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>また複数シートで、シート名は作成者各個人にてバラバラになります。 どのシートか特定できないわけで、逆に考えれば、チェックしないシートも特定できなければ手が出ませんね。 例えば、「登録」というシートを共通に挿入し、そのシートのセルA1から作成者個人のチェックするシート名(作成者個人のBook内のシート名)を登録しておけば、 イベントプロシージャ Workbook_BeforeSave をThisWorkbook に書けばいいでしょう。 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim setteiWS As Worksheet Set setteiWS = Worksheets("登録") Dim strRng As Variant strRng = Array("M12", "AD12", "M13", "U13", "AD13", "K14", "N14", "Q14", "Z14", "AC14") Dim shtName As String '// シート名 Dim s As Integer '// シートカウンタ Dim r As Integer '// セルカウンタ Dim chkFlg As Boolean '// チェック With setteiWS.Range("A1") shtName = .Offset(s, 0) While shtName <> "" For r = 0 To UBound(strRng) If Worksheets(shtName).Range(strRng(r)) = "" Then MsgBox shtName & " の " & strRng(r) & " が未入力です" chkFlg = True End If Next s = s + 1: shtName = .Offset(s, 0) Wend End With Cancel = chkFlg End Sub シート名が不定でも、チェックしないシートが無い場合(全てのシートがチェック対象)、下のように書けます。 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim strRng As Variant strRng = Array("M12", "AD12", "M13", "U13", "AD13", "K14", "N14", "Q14", "Z14", "AC14") Dim ws As Worksheet '// ワークシート Dim r As Integer '// セルカウンタ Dim chkFlg As Boolean '// チェック For Each ws In ThisWorkbook.Worksheets For r = 0 To UBound(strRng) If ws.Range(strRng(r)) = "" Then MsgBox ws.Name & " の " & strRng(r) & " が未入力です" chkFlg = True End If Next Next Cancel = chkFlg End Sub
その他の回答 (2)
- Nobu-W
- ベストアンサー率39% (725/1832)
https://kosapi.com/post-1013/ 上記サイト参考にして、2行~5行を変更して作ってみて下さい (^_^;)
補足
ありがとうございます。 まずはリンクを参照してみます。
- aokii
- ベストアンサー率23% (5210/22062)
エクセルで未入力セルがあると保存できなくなるようにするには、特定のセルを選んで「データの入力規則」を設定してみて下さい。VBAなどで設定は出来ますが、複雑です。
補足
ありがとうございます。 どのように設定をすれば良いのでしょうか?
補足
ありがとうございます。 なんだか難しそうですが、一度トライしてまた結果報告いたします。