プロが教える店舗&オフィスのセキュリティ対策術

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
こちらにあるような物を参考にしています。
ドロップダウンリストを連動させて使いたいのです。

A 回答 (2件)

>この方法は連動しません


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

>これはバグなのでしょうか?


いいえ違います
VBA上での文字列の扱いが間違っています
セルに入力の場合は
=INDIRECT("A1")
VBA上では
"=INDIRECT(""A1"")"

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

参考までに
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/02/02 00:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!