Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


49801 / 76736 ←次へ | 前へ→

【31835】Re:変数を引き継ぎたいです
発言  ichinose  - 05/11/30(水) 18:11 -

引用なし
パスワード
   ▼つつ さん:
こんばんは。

>値渡しというのはどういう意味でしょうか?
↑これは、次回にしましょう!!
>Application.Run "macro2"
>と書いていただけで

だとするとパラメータ渡しということではなさそうなので・・・。

ここからは、想像です。

標準モジュールに
'================================
Sub macro1()
  Dim 変数i As Variant
  Application.Run "macro2"
  MsgBox 変数i
End Sub
'=========================
Sub macro2()
  変数i = 500
End Sub

こんなコードで「変数iはEmptyです」とおっしゃっているのでしょうか?
だとしたら、これは、そうなります。

macro1の中の変数iとmacro2の中の変数iは、同じ名前の変数でも
別の変数だと解釈されますから、macro1の変数iには500は入っていません。

では、どうすればよいかと言うと、

'==========================================================
Private 変数i As Variant
Sub macro1()
  Application.Run "macro2"
  MsgBox 変数i
End Sub
'==========================================================
Sub macro2()
  変数i = 500
End Sub

とすればmacro1の
Msgbox 変数i
で500と表示されます。

さらにこの場合、Runメソッドは必要ないので

'========================================================
Private 変数i As Variant
Sub macro1()
  Call macro2
  MsgBox 変数i
End Sub
'=========================================================
Sub macro2()
  変数i = 500
End Sub


記述できます。

それとここからは、仕様にもよりますが、
'==========================
Sub macro1()
  Dim 変数i As Variant
  Call macro2(変数i)
  MsgBox 変数i
End Sub
'=======================================
Sub macro2(Macro2の出力データ As Variant)
  Macro2の出力データ = 500
End Sub

これがパラメータ渡しです。

これらの例題コードとつつさんのコードとを
比べてみてください。

0 hits

【31812】変数を引き継ぎたいです つつ 05/11/30(水) 14:12 質問
【31814】Re:変数を引き継ぎたいです ichinose 05/11/30(水) 14:23 発言
【31824】Re:変数を引き継ぎたいです つつ 05/11/30(水) 16:10 お礼
【31835】Re:変数を引き継ぎたいです ichinose 05/11/30(水) 18:11 発言
【31848】Re:変数を引き継ぎたいです つつ 05/12/1(木) 0:26 お礼
【31819】Re:変数を引き継ぎたいです Kein 05/11/30(水) 15:30 発言

49801 / 76736 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free