こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VBAで入力規則の設定がうまくいかない・・・

VBAで入力規則の設定がうまくいきません どなたかご教示ください。
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Dim A As String
If Target.Column = 3 And Target.Row >= 77 And Target.Row <= 65536 Then
If Target.Value <> "" Then
Worksheets("Sheet2").Range("A1:Z5").Copy _
Destination:=Target.Offset(5, -1)
For i = 5 To 9
For k = 5 To 23 Step 2
A = "=INDIRECT(" & Target.Offset(0, 3).Address & ")"
Target.Offset(i, k).Validation.Delete
Target.Offset(i, k).Validation.Add Type:=xlValidateList, Formula1:=A
Next
Next
End If
End If
End Sub
「実行時エラー '1004' : アプリケーションの定義またはオブジェクト定義のエラー」が出てしまします。
A = "=INDIRECT(" & Target.Offset(0, 3).Address & ")"
Target.Offset(i, k).Validation.Delete
Target.Offset(i, k).Validation.Add Type:=xlValidateList, Formula1:=A

"=INDIRECT(""" & Target.Offset(0, 3).Address & """)"こうすることや"INDIRECT(" & Target.Offset(0, 3).Address & ")"こうするとエラーは発生しません。これはバグなのでしょうか?
上記だとリストに値がうまく設定されません。

このプログラムの意味ですが・・・
ttp://www.relief.jp/itnote/archives/000822.php
こちらにあるような物を参考にしています。
ドロップダウンリストを連動させて使いたいのです。

投稿日時 - 2009-01-31 08:12:28

QNo.4676219

すぐに回答ほしいです

質問者が選んだベストアンサー

>この方法は連動しません
当たり前です
INDIRECTでのアドレス指定は何も無い所を指定しているのですから
連動するわけがありません
何処を参照したいの?
コードからは何処の値を参照したいのか読み取れません
したがってエラー対処のみです
これ以上は、詳細を提示してもらわないと回答の使用がありません

投稿日時 - 2009-02-02 14:59:07

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

>これはバグなのでしょうか?
いいえ違います
VBA上での文字列の扱いが間違っています
セルに入力の場合は
=INDIRECT("A1")
VBA上では
"=INDIRECT(""A1"")"

>上記だとリストに値がうまく設定されません。
A=INDIRECTに設定されるアドレスが違うと思います
多分、LISTなので A1:A10 など範囲で設定するのが普通だと思いますが
Aには単一セルのアドレスしか設定されていませんよ

参考までに

投稿日時 - 2009-01-31 22:54:36

お礼

この方法は連動しません・・・回答有難うございます。

投稿日時 - 2009-02-02 00:28:00

あなたにオススメの質問