Excel VBA質問箱 IV

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

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


43947 / 76732 ←次へ | 前へ→

【37811】Re:メンバの参照渡し
発言  ichinose  - 06/5/19(金) 9:27 -

引用なし
パスワード
   ▼Yj さん:
おはようございます。

>> メンバ変数の型を String から Long に変更した場合を試してみたところ、「参照渡し」になっていました。

> これは勘違いです。Long 型に対しても「値渡し」になっていました。
ですよね?
私も以前これは、試してみたことがあったので・・・。

例えば、クラスモジュールClass1では

Public cvalue As Long

という変数宣言だけのクラスを定義して

標準モジュールにて、

'==================================================
Sub main()
  Dim cls As New Class1
  Call test(cls.cvalue)
  MsgBox cls.cvalue
  
End Sub
'===================================================
Sub main1()
  Dim myvalue As Long
  Call test(myvalue)
  MsgBox myvalue
End Sub
'====================================================
Sub test(tvalue As Integer)
  tvalue = 100
End Sub

上記のmainは、取りあえず作動しますが、
main1は、型が一致しないというエラーが呼び出し(Call test(myvalue))
で発生します(これは、コンパイルエラーですね?)

つまり、クラスのプロパティの型までは、VBAはチェックしていません。
Vbaでは、オブジェクトは、クラスモジュールで作成しているオブジェクトのみしか
扱えないわけではありませんよね?


型のチェックをしていない(できない)プロパティに対して、
参照渡しでのパラメータを許すことは、Excelの立場になって考えると
大変だったのではないでしょうかねえ??
値渡しなら、安心だということだったのではないかと推測します。

0 hits

【37748】メンバの参照渡し Yj 06/5/17(水) 19:00 質問
【37750】Re:メンバの参照渡し neptune 06/5/17(水) 21:06 発言
【37751】Re:メンバの参照渡し neptune 06/5/17(水) 21:08 発言
【37765】Re:メンバの参照渡し Yj 06/5/18(木) 13:03 お礼
【37754】Re:メンバの参照渡し ichinose 06/5/17(水) 22:46 発言
【37756】Re:メンバの参照渡し kobasan 06/5/17(水) 23:56 発言
【37766】Re:メンバの参照渡し Yj 06/5/18(木) 13:40 お礼
【37796】Re:メンバの参照渡し Yj 06/5/18(木) 21:06 発言
【37811】Re:メンバの参照渡し ichinose 06/5/19(金) 9:27 発言

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