ハマってかなり時間を取られたので、忘れないようにメモ。
すでに入力規則が設定されているセルについて、
今設定されている入力規則を破棄し、新たな入力規則を設定しようとしたところ、
.Addの行で
「1004:アプリケーション定義またはオブジェクト定義のエラーです」
が発生。
ググったりした結果、どうやら実行前に対象のセルをSelectしてからすると出なくなると多数。
…ですがやはりうまくいかず。
Cells(7, 8).Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, _
AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, _
Formula1:="=プルダウンリスト"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.IMEMode = xlIMEModeNoControl
.ShowInput = True
.ShowError = False
End With
【結果】
今回の件、入力規則を再設定する対象のシートが保護されていることが問題でした。
ググったときにもシート保護してるとうまくいかないかもというのは見かけていましたが、
自分は、シート保護下でもマクロの処理だけは可能な
ActiveSheet.Protect UserInterfaceOnly:=True, Password:="XXXXX"
を使用していて、その問題はこれで大丈夫だろうと…
コイツが原因でした。
これを処理の最初にシートの保護解除・最後に保護をかけ直すことで解決できました。
ActiveSheet.Unprotect Password:="XXXXX"
~ 処理 ~
ActiveSheet.Protect Password:="XXXXX"