|
もとあし さん、Jaka さん、こんばんは。
>
>ありがとうございます。
>>>マクロでの入力はワークシートチェンジイベントは無効なのでしょうか。
>>そんなことは無いです。by2002SP3
>
>実際にJakaさんのコードをコピペして試しました。
>いけました!
>ですが、手元のものは、なぜかリストが作成されません。
>Worksheet_Changeイベントは私が作成したものではないのですが、
>Jakaさんのコード例を変えてみると以下のような形です。
>
>Private Sub Worksheet_Change(ByVal Target As Range)
> If Target.Address = "$A$1" Then
msgbox Target.Address(, , , True)
> TEST
> End If
>End Sub
>
>'**同ブック内にある別の標準モジュールで**
>Sub TEST()
msgbox Range("a1").Address(, , , True)
> If Range("A1").Value = "あ" Then
> With Range("A2").Validation
> .Delete
> .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
> xlBetween, Formula1:="1,2,3,4,5"
> .ErrorMessage = "正しい値をいれてください"
> .IMEMode = xlIMEModeAlpha
> End With
> End If
>End Sub
>
として再度ためしてみてください。
ふたつMsgbox関数では、同じアドレスを表示していますか?
違うアドレスが表示された場合は、それが原因です。
TESTを標準モジュールに記述するなら、
当該シートモジュールに
'===============================================
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
TEST Target
End If
End Sub
標準モジュールに
'===================================================
Sub TEST(ByVal rng As Range)
If rng.Value = "あ" Then
With rng.Offset(1, 0).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="1,2,3,4,5"
.ErrorMessage = "正しい値をいれてください"
.IMEMode = xlIMEModeAlpha
End With
End If
End Sub
というようにRangeオブジェクトをパラメータで渡せば、上記のような
間違いはないですよ!!
|
|