
目次
セルの空白入力を拒否する方法はデマが多い
Googleスプレッドシートで空白入力を拒否する方法をGoogleで検索すると間違った方法や、そのような方法などの、デマを目にすることが多いので注意が必要です。
Google Apps Script (GAS)を使用すればセルの空白入力は拒否できます。
=NOT(ISBLANK(A1))では空白入力を禁止できない
Googleで検索したり、GeminiやChatGPTなどの生成AIに「空白入力を拒否する方法」を質問するとデータの入力規則でカスタム数式に「=NOT(ISBLANK(A1))」のルールを追加すれば空白を拒否できると表示されます。
しかし、これはデマで「=NOT(ISBLANK(A1))」を設定しても空白を拒否できません。
ちなみにExcelでも「=NOT(ISBLANK(A1))」の入力規則を設定しても空白を拒否できません。
空白を拒否はできないというデマ
入力規則で空白を拒否する方法をGoogleで検索するとYahoo!知恵袋の「入力規則で空白を拒否できないか」というWebページが検索結果の上位に表示されます。
ベストアンサーには「空白を拒否はできません。」が選ばれていますが、空白の拒否の処理はGASを使用すれば可能なので、これはデマです。

Google Apps Scriptで空白入力を拒否する方法
空白入力を拒否するにはGoogle Apps Scriptで以下のコードを貼り付けるだけで実装できます。
function onEdit(e) {
const newValue = e.value
const oldValue = e.oldValue
// 値が空(空白またはDeleteキー押下)の場合
if (!newValue || newValue.trim() === '') {
e.range.setValue(oldValue || '');
SpreadsheetApp.getActiveSpreadsheet().toast('❌️ セルを空欄にすることはできません。', '入力エラー', 5)
}
}このコードが保存されていれば、例えば「sample」と入力されているセルがDeleteで空白になった場合は下図のようにトーストで「❌️ セルを空欄にすることはできません。」という入力エラーが表示されて、セルの値が「sample」に戻ります。

Google Apps Scriptで空白入力を拒否するサンプル
セルの範囲をA1:C3に限定したい場合は、以下のように該当のrange以外はreturnで処理を拒否すれば反映されません。
function onEdit(e) {
const range = e.range
// A1:C3 以外は何もしない
if (
range.getRow() < 1 ||
range.getRow() > 3 ||
range.getColumn() < 1 ||
range.getColumn() > 3
) {
return
}
const newValue = e.value
const oldValue = e.oldValue
// 値が空(空白またはDeleteキー押下)の場合
if (!newValue || newValue.trim() === '') {
range.setValue(oldValue || '')
SpreadsheetApp
.getActiveSpreadsheet()
.toast('❌️ セルを空欄にすることはできません。', '入力エラー', 5)
}
}Excelで空白入力を拒否する方法
前述のGASを使用した方法はExcelでは使えないため、同様の処理をしたい場合はVBAに変換して実装します。
ただし、Excelは古い値の参照やトーストが使えないので、古い値の復元はUndo、入力エラーはステータスバーに表示させます。
Private Sub Worksheet_Change(ByVal Target As Range)
' 複数セルの同時変更(範囲消去など)は対象外
If Target.CountLarge > 1 Then Exit Sub
' 値が空、またはスペースのみの場合
If Trim(CStr(Target.Value)) = "" Then
Application.EnableEvents = False
' 操作を巻き戻して古い値を復元
Application.Undo
' ステータスバーにメッセージを表示
Application.StatusBar = "❌️ セルを空欄にすることはできません。"
' 5秒後にメッセージを消去する
Application.OnTime Now + TimeValue("00:00:05"), "ClearStatusBar"
Application.EnableEvents = True
End If
End Sub

