No.4ベストアンサー
- 回答日時:
No.1・2です。
補足の
>複数の相手が10行目以下の白いセルに入力していく形です。
>BCDEに1つでも未入力セルがある場合
を見逃していました。
前回のコードはすべて消去し、↓のコードに変更してみてください。
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 'この行から
Dim i As Long, c As Range
With Worksheets("Sheet1")
For i = 10 To .Cells(Rows.Count, "A").End(xlUp).Row '★
If .Cells(i, "A") <> "" Then
Set c = Cells(i, "A").Resize(, 5).Find(what:="", LookIn:=xlValues, lookat:=xlWhole) '★
If Not c Is Nothing Then
MsgBox "未入力セルがあります。"
c.Select
Exit For
Cancel = True
End If
End If
Next i
End With
End Sub 'この行まで
※ 「★」の行を少し変えています。
こんなんではどうでしょうか?m(_ _)m
No.3
- 回答日時:
こんにちは。
少し口を挟ませていただきますが、画像をみて、最初のご質問と合わせると混乱しますね。
>相手がA列に入力しているのにBCDEに1つでも未入力セルがある場合、
画層からすると、
A列に対して右側のセルが結合状態であるなら、B列以降の結合されているセルまで、基本的には、その結合部分のデータは左端でしか認識されません。
なお、データのあるなしの判定は、
=COUNTA(A:A)
=COUNTA(B:D)
全体でなければ、一定の範囲で、ワークシート関数を書き換えて、マクロコードに埋め込めばよいです。
なお、見えない数式が埋め込まれている場合、
=COUNTIF(A:A,"=*")
で検出が可能です。つまり、数式は数に入れないようにも可能です。
=COUNTA(A:A) - COUNTIF(A:A,"=*")
ということです。
'//ThisWorkbook モジュールに貼り付ける
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If SaveAsUI = True Then
MsgBox "これブックは上書き保存のみです。", vbExclamation
Cancel = True
Exit Sub
End If
With Worksheets("Sheet1") '←シート名
If WorksheetFunction.CountA(.Range("A:A")) > 0 Then '←ここを調整
If WorksheetFunction.CountA(.Range("B:D")) = 0 Then '←ここを調整
MsgBox "B列からD列が、空白のままで、保存が出来ません。", vbCritical
Cancel = True
End If
End If
End With
End Sub
'//
No.2
- 回答日時:
No.1です。
画像を拝見すると8・9行目が結合されているようですが、
それは考えないで・・・
前回のコードの
>For i = 1 To .Cells(Rows.Count, "A").End(xlUp).Row
を
>For i = 8 To .Cells(Rows.Count, "A").End(xlUp).Row
に変更してみてください。
おそらく前回同様の動きになると思います。m(_ _)m
No.1
- 回答日時:
こんにちは!
>保存できなくする設定を教えていただけますか?
「上書き保存」ができないようにしてみました。
VBAになりますが、一例です。
Alt+F11キー → 画面左下の「ThisWorkbook」をダブルクリック → カーソルが点滅しているところに
↓のコードをコピー&ペーストしてください。
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 'この行から
Dim i As Long, c As Range
With Worksheets("Sheet1")
For i = 1 To .Cells(Rows.Count, "A").End(xlUp).Row
If .Cells(i, "A") <> "" Then
Set c = Cells(i, "A").Resize(, 4).Find(what:="", LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
MsgBox "未入力セルがあります。"
c.Select
Exit For
Cancel = True
End If
End If
Next i
End With
End Sub 'この行まで
このファイルを一旦
ファイルの種類は「マクロ有効BOOK」として名前を付けて保存します。
次にファイルを立ち上げたとき、B~D列に空白セルがあると
何らかのデータを入力しない限り「上書き保存」ができなくなります。
※ メッセージボックスは表示されますが、
ファイルを閉じることはできます。m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルVBAについて 2 2023/01/31 16:21
- Visual Basic(VBA) excelにて、特定の列に数字入力してあれば、入力してある行コピーして 別ファイルに張り付ける 2 2022/08/11 05:33
- Excel(エクセル) エクセルについて教えてください。 1回目が80以上(数字) or 対象外 (文字列)or (空欄) 2 2022/10/17 11:42
- Excel(エクセル) エクセルの散布図で新たに入力した値のデータラベルが空欄になる現象 1 2022/04/26 09:31
- Excel(エクセル) Excel 記入欄に網掛けして、文字が入力されたら網掛けが消える設定 5 2023/02/05 11:00
- Excel(エクセル) 【エクセル】複雑な関数を教えてください 1 2023/06/05 18:09
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- Excel(エクセル) エクセルのマイナス表示 3 2022/03/28 16:35
- Excel(エクセル) エクセルの計算式を教えてください 3 2023/03/14 13:48
- Excel(エクセル) エクセル365の関数。誕生日表記がおかしい 2 2022/10/17 18:52
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル マクロ オートフィ...
-
excel 小さすぎて見えないセル...
-
excelのデータで色つき行の抽出...
-
エクセルで特定の文字列が入っ...
-
【Excel関数】UNIQUE関数で"0"...
-
結合されたセルをプルダウンの...
-
[EXCEL]ボタン押す→時刻が表に...
-
エクセル 上下で列幅を変えるには
-
アクティブになっている行をマ...
-
特定の文字がある行以外を削除...
-
AのセルとB行を比較して、一致...
-
Excel グラフのプロットからデ...
-
EXCELで最後の行を固定
-
セルの色によって条件文をつけ...
-
エクセル マクロ等を利用した各...
-
Excel2007で、指定範囲の行高さ...
-
エクセル マクロで数値が変っ...
-
Excelマクロ 期間を指定してデ...
-
貼り付けた数式を最終行まで繰...
-
Excel VBA アクティブセルから...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで特定の文字列が入っ...
-
エクセル マクロ オートフィ...
-
【Excel関数】UNIQUE関数で"0"...
-
[EXCEL]ボタン押す→時刻が表に...
-
結合されたセルをプルダウンの...
-
エクセル マクロで数値が変っ...
-
Excel グラフのプロットからデ...
-
AのセルとB行を比較して、一致...
-
エクセル 上下で列幅を変えるには
-
Excel ウインドウ枠の固定をす...
-
特定の文字がある行以外を削除...
-
excelのデータで色つき行の抽出...
-
エクセル2016で時間を入力して...
-
excel 小さすぎて見えないセル...
-
EXCELで最後の行を固定
-
エクセルVBA 最終行を選んで並...
-
VBAで色の付いているセルの行削除
-
エクセルマクロで偶数行(又は...
-
エクセルのセルに指定画像(.jpg...
-
罫線の斜線を自動で引くマクロ
おすすめ情報
早速ありがとうございます。
私の説明不足でした。申し訳ございません。
画像のようなファイルになっており、
複数の相手が10行目以下の白いセルに入力していく形です。
相手が何行目まで入力するかは相手によります。
この状態で、相手がA列に入力しているのに
BCDEに1つでも未入力セルがある場合、
エラーメッセージ(できれば)とともに
保存できないようにしたいのですが、
可能でしょうか?
なお、お礼は月曜日以降になってしまいます。
併せてお詫び申し上げます。
お二方、ありがとうございます。
たびたび申し訳ございませんが、
CとDがリストから選択するセル、
BとEは直接入力するセルです。
宜しくお願い致します。