
以下コードは、参照渡し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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【マクロ】Call関数で呼び出した場合、共通の変数宣言は、省略できますか?
Excel(エクセル)
-
ユーザーマクロ作成
Excel(エクセル)
-
質問58753 このコードでうまく動作しません。どうしたら良いですか Private Sub Wor
Visual Basic(VBA)
-
-
4
【マクロ】コードを少しでも、減らする為には
Excel(エクセル)
-
5
Excelの計算が合いません。 諸事情で会計の簡素な購入・販売諸元表を作っているのですが、一つの項目
Excel(エクセル)
-
6
システムファイルについて
Excel(エクセル)
-
7
VBAの「To」という語句について
Visual Basic(VBA)
-
8
【マクロ】データ移動について代替案(コード)or助言を下さい
Excel(エクセル)
-
9
【マクロ】データ移動について代替案(コード)or助言を下さい
Excel(エクセル)
-
10
役所でもらった書類をエクセル化するには? 役所に申請する用紙があります。A4で表になっていて枠内に文
その他(Microsoft Office)
-
11
【マクロ】条件付き書式設定をマクロ化するには?
Excel(エクセル)
-
12
(マクロ)値を返す時は subでもfunctionでもどちらでも良いのでしょうか?
Excel(エクセル)
-
13
excelVBAについて。
Excel(エクセル)
-
14
ファイル名の変更
Excel(エクセル)
-
15
エクスプローラーで見ることはできますか
Excel(エクセル)
-
16
エクセルの設定、下へスクロールすると表のヘッダ項目がシートの列番号の部分に表示される
Excel(エクセル)
-
17
以下のプログラムの実行結果はどうなると思いますか? その理由も教えてください。
Visual Basic(VBA)
-
18
自動的に日付入力 応用
Excel(エクセル)
-
19
Excel関数の解決方法
Excel(エクセル)
-
20
別のシートの指定列の最終行を返す関数の式を教えて下さい。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル
-
【マクロ】WEBシステムから保存...
-
Excelの新しい空白のブックを開...
-
【マクロ】宣言は、何のために...
-
【マクロ】アクティブセルの2...
-
【エクセル】期限アラートについて
-
【関数】不規則な文章から●●-●●...
-
スプレッドシートで複数のプル...
-
excelで日付関数の文字列変換の...
-
Excelについての質問です 並べ...
-
VBA チェックボックスをオーバ...
-
findメソッドで、10:00:01 を検...
-
派遣会社とかハローワークとか...
-
マクロOn Error GoTo ErrLabel...
-
エクセルの循環参照、?
-
【マクロ】A列にある、日付(本...
-
空白セルに斜線(罫線)
-
Excelファイルを開くと私だけVA...
-
Excelオンライン 条件にあい、...
-
エクセルで教えてください。 例...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelファイルを開くと私だけVA...
-
エクセルについてどう関数を使...
-
マクロ・VBAで、当該ファイルの...
-
エクセルのセルに画像は埋め込...
-
エクセルで、一部のセルだけ固...
-
【マクロ、画像あり】A表かB表...
-
エクセルでカウントする
-
【マクロ】コードを少しでも、...
-
VBA_日時のソート
-
エクセルで教えてください。 例...
-
エクセル 月間シフト表で曜日ご...
-
セルの左に余白を付ける
-
エクセル
-
エクセルについて教えてください
-
2枚のエクセル表で数字をマッチ...
-
ExcelのIF関数との組み合わせの...
-
エクセルのファイルのコピーを...
-
エクセルで二つのブックの違い...
-
空白処理を空白に
-
Excelのチェックボックスについ...
おすすめ情報