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
以上何か良い方法があれば教えて頂きたいです。また不明な点があれば
ご質問ください
No.1ベストアンサー
- 回答日時:
Priavateで宣言する必要はありません。
myfunctionを呼び出すときに引数付にすればよいです。
以下の様にすればよろしいかと思います。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ・・・・・・・
・
・
If Target.Value = ・・・・・
Call myfunction(Target)
End If
End Sub
Sub myfunction(Target As Range)
If 条件 Then
Target.Offset(0, 1).Value = "aaa"
End If
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/05/26 17:19
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Visual Basic(VBA) [Excel VBA] このコードでは行の挿入や行の消去をすると13のエラーが出てしまう。 3 2022/12/09 00:29
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) 【再々投稿】VBAのプログラムで動作しなくて困っています 8 2022/10/14 09:06
- Visual Basic(VBA) エクセルのVBAでダブルクリックでチェックを入れたあと 1 2022/10/26 20:30
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) VBAのトグルボタンでのマクロについて質問です 3 2022/10/10 17:23
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessのマクロでモジュールを...
-
Access VBAで行ラベルが定義さ...
-
エクセルVBAでUserFormを起動し...
-
ACCESS2007インポート時の空白...
-
callで順に実行されるプロシー...
-
VBA プロシージャの名前の取得
-
Excel:ThisWorkbookオブジェク...
-
Excel VBAで「プログラム実行」...
-
今まで使ってたユーザーフォー...
-
或るプロシージャの呼び出し元判定
-
ExcelVBAでしりとりのやり方を...
-
DBMS_OUTPUT.PUT_LINEを実行し...
-
【Excel VBA】 WorksheetやRa...
-
OutlookVBAで作成したマクロに...
-
エクセルVBAで条件式について
-
Access VBA ラベル印刷開始位置...
-
VBA 「文字が入っていたら、...
-
Statement ignored というエラー
-
SQLサーバで和暦から西暦に変換...
-
sqlplusでヘッダーが付かない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessのマクロでモジュールを...
-
Access VBAで行ラベルが定義さ...
-
エクセルVBAでUserFormを起動し...
-
VBA プロシージャの名前の取得
-
callで順に実行されるプロシー...
-
【Excel VBA】 WorksheetやRa...
-
或るプロシージャの呼び出し元判定
-
OutlookVBAで作成したマクロに...
-
Accessでグローバル変数を宣言...
-
ACCESS2007インポート時の空白...
-
excel/vba/public変数
-
Excel VBAで「プログラム実行」...
-
エクセルVBAが対応できるプログ...
-
DBMS_OUTPUT.PUT_LINEを実行し...
-
PL/SQLのエラーについて
-
VBA 「文字が入っていたら、...
-
ブックオープン時にテキストボ...
-
Accessのプロシージャ名が勝手...
-
DB2でのストアドプロシージャの...
-
Excel:ThisWorkbookオブジェク...
おすすめ情報