VBAでセルに入力規則(選択し)を設定する
EXCELのシート上のボタンに下のようなコードを書いて実行すると
「アプリケーション定義又はオブジェクト定義のエラー」が矢印のところで出てしまいます。
独学でチャレンジしていますが、原因がわかりません。どなたか原因と対策を教えて下さい。
//ボタンの中のコード
//セル、$E$147:$E$158 にセットした「選択し」をセル E7 へセットする。
Dim CRng As Range
Set CRng = Range("E7")
With CRng.Validation
.Delete
.Add Type:=xlValidateList, Formula1:="=$E$147:$E$158" ←ここでエラー
End With
No.4ベストアンサー
- 回答日時:
またまた、myRangeです。
原因がわかりました。
試したところエクセルのバージョンによって上手くいったりいかなかったりするようです。
xl2000は、質問者の言うとおりエラーが出る
xl2010は、上手く動作する
(xl2003、2007は使える環境にないので試していません)
但し、CommandButtonを使わないで直接マクロを実行するとどちらでも動作します。
で、解決策として、コードの最初に、
Range("E7").Select
を入れてセルE7をアクティブにしてやるとバージョンに関係なく動作するようです。
以上です。
ご回答、ありがとうございます。
Range("E7").Select を追加しましたら、うまく動作するようになりました。
どうもありがとうございました。
No.3
- 回答日時:
回答2、myRangeです。
あらら、シートは保護してなかったですか。。
では、提示したコードだけではなくて、
質問者のシート構成、コードの場所など以下のことを補足してください。
さすれば、すぐ解決するでしょう。。。(^^;;;
●入力規則をセットするセルE7のシート名
●リストのE147~E158のシート名(E7と同じでしょうが念のため)
●ボタンの配置してあるシート名
●ボタンの種類はフォームのボタンなのか、コントロールツールボックスのボタンなのか
●コードの書いてある場所(標準モジュールか、ボタンのあるシートモジュールか)
●コードを端折らずに、Sub xxxx_Click()~~End Subまで全て提示
▲データの内容は不要です。
以上です。
補足事項に関しては以下の通りです。
●入力規則をセットするセルE7のシート名 ⇒sheet1
●リストのE147~E158のシート名(E7と同じでしょうが念のため)⇒sheet1
●ボタンの配置してあるシート名 ⇒sheet1
●ボタンの種類はフォームのボタンなのか、コントロールツールボックスのボタンなのか コントロールツーボックスのボタンです。
●コードの書いてある場所(標準モジュールか、ボタンのあるシートモジュールか)⇒ボタンの中です。
●コードを端折らずに、Sub xxxx_Click()~~End Subまで全て提示
以下のとおりです。
Private Sub CommandButton1_Click()
ActiveSheet.Unprotect
Dim CRng As Range
Set CRng = Range("E7")
With CRng.Validation
.Delete
.Add Type:=xlValidateList, Formula1:="=$E$147:$E$158"
End With
MsgBox "選択肢の更新が完了しました。", vbOKOnly + vbInformation
End Sub
念のため、新しいBookを作り、sheet1にボタンを追加してコードを記述してみました。
当然、sheet1のボタン以外には何もコードが記述されていない状態です。参照もしていません。
しかし、結果は同じようにエラーです。
コードそのもがおかしいのでは?と感じていますが。
No.2
- 回答日時:
コード的には問題はないので、考えられるとしたら。。。
シートの保護、をしてませんか?
であれば、
コードの最初で
Activesheet.UnProtect
コードの最後で、
Activesheet.Protect
としてみるといいでしょう。
●尚、Protect,UnProtectの引数(PassWordなどは省略してます)
引数は、シート保護のマクロ記録を取ってみるとわかります。
以上です。
回答、ありがとうございます。
シートの保護はしていません。
念のため、Activesheet.UnProtect を追加しましたが、結果は変わらずエラーとなりました。
データがおかしいのかと思い、選択肢に文字を再セットしましたが、結果はエラーでした。
No.1
- 回答日時:
エラーが出たという場所のセルの住所を「E147からE158まで」を「E10からE15まで」に変えただけですが、ちゃんとできましたよ?
Sub test()
Dim CRng As Range
Set CRng = Range("E7")
With CRng.Validation
.Delete
.Add Type:=xlValidateList, Formula1:="=$E$10:$E$15" '←147を10に、158を15に。
End With
End Sub
ご回答、ありがとうございます。
ご回答のとおり私もやってみましたが、同じエラーが出てしまいました。
ボタンを新しく作成し、やってみましたがやはり、エラーです。
何が違うのでしょうか。
私のPCは
OS:XP
エクセル:Excel2000
VB:Visual Basic 6.0
です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Excel(エクセル) EXCEL マクロで行を挿入して貼り付けようとするとエラーになる。 2 2022/05/24 09:43
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Visual Basic(VBA) エクセル365のVBAで困っています。どう修正したらよいか添削をお願いします 2 2023/05/03 17:35
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/05/26 17:19
- Excel(エクセル) VBA オリジナル関数で選択セルの合計を作成したい 3 2023/03/19 19:45
- Visual Basic(VBA) 【VBA】Excelの特定範囲のセルを画像で保存したい 2 2023/01/25 13:06
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ユーザーフォームに別シートか...
-
現在のブックを閉じないで、マ...
-
【VBA】マクロの入ったファイル...
-
IEの通知バー制御ができなくなった
-
Excel VBA 定義されたプロージ...
-
Excel-VBAのmsgBox()の不思議
-
VBA初心者 Ctrl+での操作、ボタ...
-
VBA 複数条件の分岐処理の上手...
-
エクセルのマクロについて教え...
-
VBAに詳しい方教えてください。
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
ExcelVBA シート名を複数セルか...
-
FileCopy時のエラー
-
VBAで各列の"+"と"o"の合計数を...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
VBA listBoxについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのコードを教えてください
-
【ExcelVBA】インデックスが有...
-
ExcelVBA シート名を複数セルか...
-
エクセルvbaについて
-
エクセルのマクロについて教え...
-
【VBA】マクロの入ったファイル...
-
VBA UserFormからの転記で
-
エクセルVBAの配列について
-
Excelで「Ctrl+c」、「Ctrl+v...
-
VBAコードについて教えてくださ...
-
ExcelのVBAコードについて教え...
-
Excel マクロについての相談
-
VBAで質問があります
-
VBAコードについて
-
【ExcelVBA】VBA実行でダイアロ...
-
Excel関数またはVBAでの質問に...
-
ExcelのVBAコードについて教え...
-
ExcelのVBAコードについて教え...
-
ExcelのVBAコードについて教え...
-
Outlookの「受信日時」「件名」...
おすすめ情報