Excel 関数をまたいだTargetの使用
excel2013 OS はwindows8を使用しています。
Excelのマクロで、以下のコードについて質問です。(コード内の・・・は省略の意)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ・・・・・・・
・
・
If Target.Value = ・・・・・
Call myfunction
End If
End Sub
Sub myfunction()
If 条件 Then
Target.Offset(0,1).Value = "aaa"
End If
End Sub
このマクロのPrivate Sub Worksheet_Change(ByVal Target As Range)を実行するとエラーが
出ます。エラーの内容は「オブジェクト変数またはwithブロック変数が設定されていません」
となり、 Target.Offset(,1).Value = "aaa" の行が黄色く表示されます。
myfuncton内で使用しているTargetが何なのかがわからないというエラーだと理解しています。
そこで私は以下の2つを試しました。
1つめはうまくいかず、2つめは何か2度手間のような感じがするのですが、正常動作する
ようです。
そこで質問なのですが、Targetをプロシージャをまたいで利用したい場合に一般的に用いら
れている手法などがあれば教えて頂きたいです。
1つめ・・Targetをプロシージャをまたいで使えるようにコードの一番上の部分
、つまり、Private Sub Worksheet_Change(ByVal Target As Range)の一行上の
部分にDim Target As Range と宣言してみました。が、これはうまくいきませんでした。
2つめ・・適当な(この場合e)変数を宣言し、プロシージャをまたいで使用する。
Dim e As Range
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ・・・・・・・
・
・
If Target.Value = ・・・・・
Set e = Target
Call myfunction
End If
End Sub
Sub myfunction()
If 条件 Then
e.Offset(0,1).Value = "aaa"
End If
End Sub
以上何か良い方法があれば教えて頂きたいです。また不明な点があれば
ご質問ください
お礼
ありがとうございます!! 動作確認できました!!! 機会がありましたら、またよろしくお願いします!