
以下コードは動くのですが、受けとりで動きます
【受取】
Sub あいうえお(wb1 As Workbook, ws1 As Worksheet)
【実行】
ws1.Cells(1, 1) = "あいうえお"
しかし
受取の変数をa、bに変えると、動かなくなります
参照渡しについて、ネットで調べると、ほとんどの事例が
受取時には変数の名前を変えています
ゆえに、受取時の変数の名前を変更しても動くとは思います
なぜ、受取時の変数の名前を変えて動かなくなるのでしょうか?
【参考、リンク】
http://officetanaka.net/excel/vba/tips/tips94.htm
【受取】
Sub あいうえお(a As Workbook, b As Worksheet)
【変数】
Workbook(マクロブック以外の別のブックが変数として格納)
Worksheet)(別シートが格納)
【コード】
Sub 別ブックへ転記()
Dim filepath1 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")
Dim buf As String
Call あいうえお(wb1, ws1)
End Sub
Sub あいうえお(wb1 As Workbook, ws1 As Worksheet)
ws1.Cells(1, 1) = "あいうえお"
End Sub
No.2ベストアンサー
- 回答日時:
> ちなみに、変数の名前を変更しないで、同じ変数名にて
> 受け取ってもいいのですか???
参照の話は置いといて。
関数の引数として受け取った変数は、関数の中のみ有効です。
関数の外に影響を与えないので、同じ変数でもOKです。
変数のスコープ、有効な範囲とかって考え方です。
webとかで
「vba 変数 スコープ」
「vb 変数 スコープ」
とかで解説記事探して読んでみるとか。
VBAより、プログラミングに突っ込んだ話なので、VBのキーワードで調べるのが良いかも。
ちゃんとした解説はMicrosoft Learnだけど、基本英文からの自動翻訳だし、用語とかも含めて分かりにくい。自分もよう読まん。
ぱっと見分かりやすそうな記事は探せなかった。
--
差し当たりの問題は、
Option Explicit
で解決すると思う。
というか、これ書いてないソースは信頼できないし、これ追記してエラーが出るようになるならそもそもダメだ。
No.1
- 回答日時:
> しかし
> 受取の変数をa、bに変えると、動かなくなります
Sub あいうえお(wb1 As Workbook, ws1 As Worksheet)
ws1.Cells(1, 1) = "あいうえお"
End Sub
↓
Sub あいうえお(a As Workbook, b As Worksheet)
ws1.Cells(1, 1) = "あいうえお"
End Sub
こうするってこと?
そりゃ、a, bを受け取った後、a, bに対して何もしないんだから、a, bや参照先の内容変わらないのが正しい動作。
関数の引数を変更したいのなら、
Sub あいうえお(a As Workbook, b As Worksheet)
a.Cells(1, 1) = "あいうえお" ' ←ws1でなくてaを処理する
End Sub
とすべき。
関数外部でグローバル変数としてaを使ってるとかだとややこしいけど。
--
VB、VBAではデフォルトだと変数を宣言しなくても使えるから、上の場合関数に渡されていないws1も「ああ、新しい変数のws1ね」って解釈されて、エラーにならずに処理される。
お気軽な仕様。
モジュールの先頭に、
Option Explicit
書くと、変数の宣言を強制してくれて、そういうのはエラー扱いしてくれる。
まさに、↓の記事で言う所の「間違い」してる。
Excel VBA 環境によるグラフィックス機能を活用したプログラミング入門 - 変数の宣言を強制する
https://katakago.sakura.ne.jp/pgm/vba/pgm01/expl …
| VBAでは、変数は宣言せずに使用することができます。しかし、変数名を宣言せずに使用すると間違いに気づきにくくなります。
以下、理解しました。ありがとうございます
ちなみに、変数の名前を変更しないで、同じ変数名にて
受け取ってもいいのですか???
NETで調べる、変数、受け渡しは全て違う名前に変数をしているので
変数を渡す 受け取る時は あえて、違う名前にするのが
お作法なのかなぁと思ってしまいます
【同じ変数の名前にて受け取る】
Sub あいうえお(wb1 As Workbook, ws1 As Worksheet)
>お返事ありがとうございますそりゃ、a, bを受け取った後、a, bに対して何>もしないんだから、a, bや参照先の内容変わらないのが正しい動作。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【マクロ】1つのマクロの中に、ブック指定とシート指定が混在しても良いのですか? 2 2024/05/16 07:13
- Excel(エクセル) 【マクロ】VLOOKUPにて参照元にデータが無い場合【該当なし】と表示したい 3 2024/06/08 16:45
- Visual Basic(VBA) VBA 複数の各シートに行を追加したいです 2 2024/02/28 22:09
- Excel(エクセル) 【マクロ】セルに関数を入れる場合、列を追加した後に実行すると【文字列】になってしまう 1 2024/06/09 16:41
- Excel(エクセル) 【マクロ】毎回、ファイル名が変わるファイルへの 文字列の転記 2 2024/05/02 14:17
- Excel(エクセル) 【マクロ】関数をセルに入力するも、スピルしない件 1 2024/06/09 22:15
- Excel(エクセル) 【マクロ】アクティブセルにブックやシートを指定する方法 2 2024/06/12 09:10
- Excel(エクセル) 【マクロ】その時、その時で変わる範囲を、フォルダの違う別ブックへ転記する為には ※参考画像あり 3 2024/05/11 10:33
- Visual Basic(VBA) Excelのマクロについて教えてください。 2 2024/06/14 16:38
- Visual Basic(VBA) VBAに関して 2 2023/11/09 20:57
このQ&Aを見た人はこんなQ&Aも見ています
-
いちばん失敗した人決定戦
あなたの「告白」での大失敗を教えてください。
-
ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
ゴリラ向け動画配信サイト「ウホウホ動画」にありがちなことを教えて下さい。
-
限定しりとり
文字数6文字以上の単語でしりとりしましょう
-
スタッフと宿泊客が全員斜め上を行くホテルのレビュー
スタッフも宿泊客も、一流を通り越して全員斜め上なホテルのレビューにありがちな内容を教えて下さい
-
あなたが好きな本屋さんを教えてください
どのくらいの規模間で、どのような本が並んでいるか、どのような雰囲気なのかなどなど...
-
【マクロ】Call関数で呼び出した場合、共通の変数宣言は、省略できますか?
Excel(エクセル)
-
【マクロ】Withステートメント2つを簡略する為には?
Excel(エクセル)
-
Excel 関数での質問です
Excel(エクセル)
-
-
4
質問58753 このコードでうまく動作しません。どうしたら良いですか Private Sub Wor
Visual Basic(VBA)
-
5
日付がバラバラ
Excel(エクセル)
-
6
【マクロ】参照渡しとモジュールレベル変数 どっちが よく使うものですか?
Excel(エクセル)
-
7
【マクロ】データ移動について代替案(コード)or助言を下さい
Excel(エクセル)
-
8
以下のプログラムの実行結果はどうなると思いますか? その理由も教えてください。
Visual Basic(VBA)
-
9
別のシートの指定列の最終行を返す関数の式を教えて下さい。
Excel(エクセル)
-
10
Excel関数の解決方法
Excel(エクセル)
-
11
Excelのデーターバーについて
Excel(エクセル)
-
12
【マクロ】Formulaプロパティにて、3行全てに、数式を入れるためには?
Excel(エクセル)
-
13
【マクロ】データ移動について代替案(コード)or助言を下さい
Excel(エクセル)
-
14
役所でもらった書類をエクセル化するには? 役所に申請する用紙があります。A4で表になっていて枠内に文
その他(Microsoft Office)
-
15
エクスプローラーで見ることはできますか
Excel(エクセル)
-
16
Excelの関数を教えて下さい。
Excel(エクセル)
-
17
システムファイルについて
Excel(エクセル)
-
18
VBAの「To」という語句について
Visual Basic(VBA)
-
19
Excelの条件付書式について教えてください。
Excel(エクセル)
-
20
Excelでの文字入力について
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・昔のあなたへのアドバイス
- ・字面がカッコいい英単語
- ・許せない心理テスト
- ・歩いた自慢大会
- ・「I love you」 をかっこよく翻訳してみてください
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・はじめての旅行はどこに行きましたか?
- ・準・究極の選択
- ・この人頭いいなと思ったエピソード
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでカウントする
-
エクセルについてどう関数を使...
-
エクセルのファイルのコピーを...
-
【マクロ、画像あり】A表かB表...
-
【マクロ】コードを少しでも、...
-
列挿入をVBAで
-
Excelファイルを開くと私だけVA...
-
エクセルでラベルシールを印刷...
-
空白処理を空白に
-
【マクロ 画像あり】Exact関数...
-
エクセルの循環参照を削除したい!
-
名前の間のスペースをそろえる...
-
重複しない値を抽出したい
-
エクセルの難問。「コピペする...
-
至急お願いします!エクセルの...
-
エクセルで教えてください。 例...
-
Excel 日付の表示が直せません...
-
【マクロ 画像あり】セル範囲の...
-
Excelの数式?について質問です...
-
スプレッドシート(Excelでも良...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの設定、下へスクロー...
-
別のシートの指定列の最終行を...
-
【マクロ】シート追加時に同じ...
-
Excelファイルを開くと私だけVA...
-
Excelの関数を教えて下さい。
-
マクロを実行すると、セル範囲...
-
エクセルの設定、特定の列以降...
-
Excelの条件付書式について教え...
-
Excelで作成した出欠表から日付...
-
Excelでの文字入力について
-
Excel 日付の表示が直せません...
-
Excel関数の解決方法
-
システムファイルについて
-
自動的に日付入力 応用
-
UNIQUE関数の代用
-
エクセル内に読み込んが画像の...
-
勤務外時間を出す表が作りたい
-
Excel 偶数月の15日(土日祝...
-
【マクロ】Call関数で呼び出し...
-
【マクロ】1回目の実行後、2...
おすすめ情報