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エラー

原因は、
・シートが保護されている
・参照形式がR1C1になっている
の2つのどちらかを確認しています。

エラーの対処法

シートが保護されている

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

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」は必ず入れるようにしています。

 

< スポンサーリンク >※広告先のお問い合わせは広告主様にお願いします