
Sub TestB(ByVal MyArray() As Integer)
のようにして、
配列引数をByValで渡そうとすると
エラーが出てしまいます。
http://vba.doorblog.jp/archives/51291826.html
このページにあるように
variantとして渡せば
エラーは出ないのですが
byrefとして扱われてしまいます。
なぜVBAでは配列を値渡しすることができないのでしょうか?
何が問題なのでしょうか?
No.2ベストアンサー
- 回答日時:
VBで配列を引数で渡す場合、先頭のアドレス(住所)を渡しています。
(C言語のポインター)
その為、サブルーチンの引数の型は、その「アドレスを表す変数」が値渡しか参照渡しかを表すことであって、配列の中身を値渡しか参照渡しかを指定している訳ではありません。
つまり、
Sub TestB(Byref MyArray() As Integer)
※MyArray変数がByref
Sub TestB(Byval MyArray As Variant)
※MyArray変数がByval
詳しくは、以下のサイトを参考にしてみてください。
https://msdn.microsoft.com/ja-jp/library/eek064h …
No.1
- 回答日時:
言語仕様
言語的に、メモリ領域を正確にコピーするのが面倒だったんじゃないですかね。
配列やオブジェクトのようなものはすべて参照渡しです。
そもそも引数で受け取った値を直接変更するというコードはタブーなので、どっちでもいいですし、無駄なメモリ領域の消費という意味ではすべて参照渡しにしてくれた方がいいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
配列の参照渡しで型が一致しません。
Visual Basic(VBA)
-
<input type=hidden" >で配列(複数の要素)を渡したいとき?"
PHP
-
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
-
4
VBで構造体の配列を関数に渡す方法?
Visual Basic(VBA)
-
5
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
6
「Columns(A:C")」の列文字を数字にして表記したい"
Excel(エクセル)
-
7
条件が合致する列を削除したい(VBA)
Excel(エクセル)
-
8
Changeイベントでの複数セルのクリアの処理について
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
配列のペースト出力結果の書式...
-
vba フィルター 複数条件 3つ以...
-
Dir関数で読み取り順を操作でき...
-
C#でbyte配列から画像を表示さ...
-
配列の中の最大値とそのインデ...
-
構造体配列の特定のメンバーをF...
-
エクセルでXY座標に並べられた...
-
大量の変数を定義するにはどう...
-
VBA どっちが速い?
-
VB6からの移行したいけど、VB.N...
-
Redim とEraseの違いは?
-
EXCELを使って、アクセスログを...
-
7億ある配列を含んだ計算をした...
-
VB2008EE でS-JISでエンコード...
-
レコードセットの中身を配列に...
-
Imagelist の使い回しについて
-
DBから取得した値を配列へ代入する
-
VBAで配列引数を値渡しできない...
-
コンボボックスのインデックス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
C#でbyte配列から画像を表示さ...
-
エクセルでXY座標に並べられた...
-
Dir関数で読み取り順を操作でき...
-
vba フィルター 複数条件 3つ以...
-
配列のペースト出力結果の書式...
-
複数のtextboxの処理を一括で行...
-
Excelのメモリ(配列)の上限は2G...
-
配列の中の最大値とそのインデ...
-
大量の変数を定義するにはどう...
-
Excel2010のinputboxで複数デー...
-
COBOLの基本的な事なので...
-
構造体配列内の文字列検索のよ...
-
VBAでMODE関数をつくる
-
Redim とEraseの違いは?
-
VBScriptでCSVファイルを読み出...
-
VB6のメモリ解放に関して
-
VB.NETの配列にExcelから読み込...
-
Segmentation Fault (メモリ制限?)
-
ActiveReports(アクティブレポ...
おすすめ情報
納得しました。
ありがとうございます。