Excel VBAのValidationで実行時エラー1004が出る

Excel VBAで「Validation」オブジェクトを使って、セルをプルダウン(リスト)入力できるようにした時に、実行時エラー1004が出た時の対処法の記録です。

< スポンサーリンク >

 

現象

下記のようにプルダウンで入力出来るように実行したところ、実行時エラー1004「アプリケーション定義またはオブジェクト定義のエラーです。」とメッセージが出ました。

Sub test()
    With Range("B1").Validation
        .Delete
        .Add Type:=xlValidateList, Formula1:="=A1:A5"
    End With
End Sub

VBAエラー

VBAエラー

 

対処

シートが保護されている

シートが保護されていると、色々と制限がかかります。

VBAエラー

 

「Validation」の前にシート保護を解除する

ActiveSheet.Unprotect

を入れ、「Validation」の後にシートを保護する

ActiveSheet.Protect

を入れます。

Sub test()

    ActiveSheet.Unprotect

    With Range("B1").Validation
        .Delete
        .Add Type:=xlValidateList, Formula1:="=A1:A5"
    End With

    ActiveSheet.Protect

End Sub

VBAエラー

 

参照形式がR1C1になっている

私はVBAを作るときによくR1C1参照形式にして、そのまま・・・ということがあり、よくこの1004エラーが出ます。

VBAエラー

 

A1参照形式にする

Application.ReferenceStyle = xlA1

を「Validation」の前に入れます。

VBAエラー

 

私はほとんど、この2つの対処法で解決しています。

とくにA1参照形式にする「ReferenceStyle」は必ず入れるようにしています。

 

< スポンサーリンク >



サブコンテンツ

関連ページ

このページの先頭へ