二次元配列を関数で引数に設定するには

解決


ミミ  2003-06-04 20:16:24  No: 107409

関数を作成する際に、二次元配列を引数に設定したいのですが、
一次元のように
Private Sub NF(N As Integer, _
O() As Double, DOO() As Double)

とやると引渡しがうまくいきません。
なにか特別な方法があるのでしょうか。
いろいろ試したんですがなかなかうまくいきません。
宜しくお願いします。


nanashi  2003-06-04 21:04:45  No: 107410

> とやると引渡しがうまくいきません。
どううまくいかないんですか?

試したところByrefで指定してあげれば大丈夫です。
(デフォルトがByrefなので大丈夫なはずなんですが)
もしくはVariantじゃダメですか?


ミミ  2003-06-04 22:14:38  No: 107411

説明不足で申し訳ありません。

関数の定義の部分で,

1:   Private Sub NF2(SC() as double)
と定義してるのですが、(この宣言の仕方が一次元なのでたぶんおかしいと。。。)
この関数の中で、

2:   Call NF23(SC(1, 9), SE(1, 9))

と、別の関数を呼び出す時に、二次元配列を引数に渡すと、
「型が一致しません。配列またはユーザー定義型を指定してください」
とエラーが表示されるのです。

Byref指定でやってみたんですが、同じエラーがでました。

1: の部分で二次元配列の定義づけをしたいのですが
それがうまくいかないという状況です。


nanashi  2003-06-04 23:14:16  No: 107412

> 1:   Private Sub NF2(SC() as double)
> 2:   Call NF23(SC(1, 9), SE(1, 9))

使ってる関数と宣言されている関数が違うのでなんとも言えませんが(汗

1での宣言はあっています。
その宣言で2次元でも3次元でも受け渡せます。

問題は2の使い方。
SC(1,9)とかを渡そうとしてますが、それ自体は配列でもなんでもなくって
ただのDouble型の値です。
配列そのものを渡すつもりなら
    Call NF23(SC, SE)
のようにします。

SC(1,9)の値だけを渡したいなら関数の宣言の方で
配列じゃないDouble型を宣言する必要があります。


ミミ  2003-06-05 00:20:28  No: 107413

nanashiさん
解決しました。ありがとうございます!


ミミ  2003-06-05 00:21:08  No: 107414

解決済みチェック入れ忘れました(汗
申し訳ありません。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加