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

解決


ミミ  2003-06-04 11:16:24  No: 107409  IP: [192.*.*.*]

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

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

編集 削除
nanashi  2003-06-04 12:04:45  No: 107410  IP: [192.*.*.*]

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

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

編集 削除
ミミ  2003-06-04 13:14:38  No: 107411  IP: [192.*.*.*]

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

関数の定義の部分で,

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

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

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

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

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

編集 削除
nanashi  2003-06-04 14:14:16  No: 107412  IP: [192.*.*.*]

> 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-04 15:20:28  No: 107413  IP: [192.*.*.*]

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

編集 削除
ミミ  2003-06-04 15:21:08  No: 107414  IP: [192.*.*.*]

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

編集 削除