
以下コードは、参照渡しorモジュールレベル変数にて記述したコードです
どちらも、同じように動きます
●●●では、どちらが、一般的には使われるのでしょうか?●●●
時分は、モジュールレベル変数の方が 分かりやすいと思いました
【参照渡しコード】
Sub 別ブックへ転記()
Dim filpath1 As String
Dim wb1 As Workbook
Dim ws1 As Worksheet
filepath1 = ThisWorkbook.Worksheets("Sheet1").Cells(141, 1)
Set wb1 = Workbooks.Open(filepath1)
Set ws1 = wb1.Worksheets("Sheet1")
Call あいうえお(wb1, ws1)
End Sub
Sub あいうえお(ByRef a As Workbook, b As Worksheet)
b.Cells(1, 1) = "あいうえお"
End Sub
【モジュールレベル変数 コード】
Dim filpath1 As String
Dim wb1 As Workbook
Dim ws1 As Worksheet
Sub 別ブックへ転記()
filepath1 = ThisWorkbook.Worksheets("Sheet1").Cells(141, 1)
Set wb1 = Workbooks.Open(filepath1)
Set ws1 = wb1.Worksheets("Sheet1")
Dim buf As String
Call あいうえお
End Sub
Sub あいうえお()
ws1.Cells(1, 1) = "あいうえお"
End Sub
No.2ベストアンサー
- 回答日時:
こんばんは
以下の「アンチパターン」の5番目に書かれていますね。
https://qiita.com/k_maki/items/c40c0eab5af4984f0 …
ご提示の例について言えば、必要のないものも多いです。
ThisWorkbookはブック内共通なので、どこからも参照できる関係から、グローバル変数にする意味はあまりありません。
「Sub あいうえお」は二つの引数を取っていますが、実際に使用しているのは一つだけなので、二つ取る意味がありません。
仮に、両方を使うにしてもシートオブジェクトからブックの参照ができるので、シートオブジェクトだけを渡せば済むはずです。
原則は参照レベルなんですね
また、本事例では、変数は1つしか利用しないので
2つ渡す意味はないですね
ご指導ありがとうございます
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【マクロ】Call関数で呼び出した場合、共通の変数宣言は、省略できますか? 2 2025/02/09 10:17
- Visual Basic(VBA) 【マクロ】1つのマクロの中に、ブック指定とシート指定が混在しても良いのですか? 2 2024/05/16 07:13
- Excel(エクセル) 【マクロ】関数をセルに入力するも、スピルしない件 1 2024/06/09 22:15
- Excel(エクセル) 【マクロ】セルに関数を入れる場合、列を追加した後に実行すると【文字列】になってしまう 1 2024/06/09 16:41
- Excel(エクセル) 【マクロ】AブックからBブックへデータコピーの後、Bブックに上書きされないようにするには? 3 2024/12/22 11:53
- Excel(エクセル) 3つのマクロを連続実行の中で、1つ目のマクロ要件を満たさなかったら、マクロ2・3を実行しない為には 1 2023/10/15 13:42
- Excel(エクセル) 【マクロ】違うフォルダにあるファイルから、転記するには? 4 2023/09/26 19:49
- Visual Basic(VBA) VBA 複数の各シートに行を追加したいです 2 2024/02/28 22:09
- Visual Basic(VBA) VBAに関して 2 2023/11/09 20:57
- Visual Basic(VBA) クリップボードに貼付している文字列が、マクロで別ブックへ転記すると、消えてしまう 1 2023/10/15 13:36
このQ&Aを見た人はこんなQ&Aも見ています
-
【マクロ】Call関数で呼び出した場合、共通の変数宣言は、省略できますか?
Excel(エクセル)
-
ユーザーマクロ作成
Excel(エクセル)
-
質問58753 このコードでうまく動作しません。どうしたら良いですか Private Sub Wor
Visual Basic(VBA)
-
-
4
【マクロ】コードを少しでも、減らする為には
Excel(エクセル)
-
5
Excelの計算が合いません。 諸事情で会計の簡素な購入・販売諸元表を作っているのですが、一つの項目
Excel(エクセル)
-
6
【マクロ】データ移動について代替案(コード)or助言を下さい
Excel(エクセル)
-
7
役所でもらった書類をエクセル化するには? 役所に申請する用紙があります。A4で表になっていて枠内に文
その他(Microsoft Office)
-
8
システムファイルについて
Excel(エクセル)
-
9
VBAの「To」という語句について
Visual Basic(VBA)
-
10
【マクロ】条件付き書式設定をマクロ化するには?
Excel(エクセル)
-
11
【マクロ】データ移動について代替案(コード)or助言を下さい
Excel(エクセル)
-
12
エクセルの循環参照、?
Excel(エクセル)
-
13
【マクロ】宣言は、何のためにするんですか???しなくても、普通に動いしまうのはなぜ?
Excel(エクセル)
-
14
【マクロ】WEBシステムから保存ではなく、開いたExcelデータを変数に入れる事が出来る?
Excel(エクセル)
-
15
(マクロ)値を返す時は subでもfunctionでもどちらでも良いのでしょうか?
Excel(エクセル)
-
16
別のシートの指定列の最終行を返す関数の式を教えて下さい。
Excel(エクセル)
-
17
Excel関数の解決方法
Excel(エクセル)
-
18
excelVBAについて。
Excel(エクセル)
-
19
以下のプログラムの実行結果はどうなると思いますか? その理由も教えてください。
Visual Basic(VBA)
-
20
【マクロ】1回目の実行後、2回目からは実行できないようにはできますか?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
9月17日でサービス終了らし...
-
エクセル ドロップダウンリスト...
-
特定のセルだけ結果がおかしい...
-
エクセルのdatedif関数を使って...
-
【関数】同じ関数なのに、エラ...
-
エクセルの循環参照、?
-
エクセル
-
【マクロ】アクティブセルの時...
-
【マクロ】A列にある、日付(本...
-
iPhoneのExcelアプリで、別のシ...
-
【マクロ】3行に上から下に並...
-
【条件付き書式】シートの中で...
-
【マクロ】EXCELで読込したCSV...
-
【エクセル】期限アラートについて
-
【マクロ】列を折りたたみ非表...
-
【マクロ】WEBシステムから保存...
-
【マクロ】オートフィルターの...
-
Excel 複数のセルが一致すると...
-
エクセルに、105と入力すると、...
-
3〜400人分のデータをExcelで管...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelファイルを開くと私だけVA...
-
エクセルについてどう関数を使...
-
マクロ・VBAで、当該ファイルの...
-
エクセルのセルに画像は埋め込...
-
エクセルで、一部のセルだけ固...
-
【マクロ、画像あり】A表かB表...
-
エクセルでカウントする
-
【マクロ】コードを少しでも、...
-
VBA_日時のソート
-
エクセルで教えてください。 例...
-
エクセル 月間シフト表で曜日ご...
-
セルの左に余白を付ける
-
エクセル
-
エクセルについて教えてください
-
2枚のエクセル表で数字をマッチ...
-
ExcelのIF関数との組み合わせの...
-
エクセルのファイルのコピーを...
-
エクセルで二つのブックの違い...
-
空白処理を空白に
-
Excelのチェックボックスについ...
おすすめ情報