質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

解決済

1回答

2482閲覧

VBA 入力規則設定(Validation)のエラーに関して

Taro0827

総合スコア16

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2023/05/18 02:48

編集2023/05/18 03:26

実現したいこと

入力規則設定を使用して、セルにプルダウリストを作成したいと考えていますがエラーが出てしましました。

前提

入力規則設定を使用して、セルにプルダウリストを作成したいと考えています。

発生している問題・エラーメッセージ

エラーメッセージ

実行時エラー1004 アプリケーション定義またはオブジェクト定義のエラーです。.Add Type:=~の部分を実行すると、エラー起きます。

該当のソースコード

dropDownValues = Split("30,35,40,45,50,60,65,70,75,80,85,90,95,100") ' ドロップダウンリストを設定する

If Target.Address = "$C$2" Then ' C2セルに数字を入力したときにドロップダウンリストを設定する Range("E11:E45").Validation.Delete 'D3セルからD12セルまでのドロップダウンリストを削除 Range("E11:E45").ClearContents '数字も削除 Range("E11:E45").Borders.LineStyle = xlLineStyleNone a = Range("C2").Value For a = 1 To a - 2 u = a * 2 + 12 ActiveSheet.Unprotect Application.ReferenceStyle = xlA1 With Range("E" & u).Validation .Delete .Add Type:=xlValidateList, _  →ここでエラーおきます。 AlertStyle:=xlValidAlertStop, _ Formula1:=Join(dropDownValues, ",")  '赤枠にする Range("E" & u).Borders.Color = RGB(255, 0, 0) End With ActiveSheet.Protect Next a End If

試したこと

上記プログラムを作成し、実行しましたが、エラー1004が出てしまします。
・シートが保護されている
・参照形式がR1C1になっている
この2つが原因かなと思い、付け加えてみたのですが、エラーが出てしまいます。

他、原因が分かればいいのですが、エラーが起きるときと起きないときがあります。
どなたかわかる方おられませんか?よろしくお願いいたします。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bebebe_

2023/05/18 04:46 編集

シート上にフォーカスがない場合も同様のエラーがでるという情報がありました。 「Range("E" & u).Validation」の前に「Range("A1").Select」等を入れた場合はどうですか?
Taro0827

2023/05/18 05:19 編集

できました!!ありがとうございます。 一度セルを選んだ状態でないと、エラーおきてしまうのでしょうか? 理由が分かれば、教えていただきたいです。
bebebe_

2023/05/18 06:20

エラーがでる詳細な原因が探しても見つからないですね。 「Validation.Delete」はシート上の図形等が選択されていても問題ないみたいですが「Add」の場合はエラーになってしまうようです。
Taro0827

2023/05/18 06:30

ありがとうございます。 助かりました。
guest

回答1

0

自己解決

一度、他のセルを選択した状態で、入力規制を行うと、エラーでなくなりました。

Range("A1").Select 'A1を選択→これを入れることで、解決しました。

With Range("E" & u).Validation
.Delete
.Add Type:=xlValidateList, _  
AlertStyle:=xlValidAlertStop, _
Formula1:=Join(dropDownValues, ",") 

投稿2023/05/18 05:42

Taro0827

総合スコア16

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問