tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトル多次元配列を引数として渡したいです。
記事No7397
投稿日: 2008/04/24(Thu) 12:20
投稿者ゆうや
こんにちは。わからないことがあるので投稿しました。
WinXP で VB2005 ExpressEdition を使っています。

多次元の配列を、「別の関数」に引数として渡して、その中で配列の中にデータを入れたいと思っています。

ところが、「別の関数」をコールする場所で以下のエラーが出てしまいます。
「エラー    112
配列型の次元数が異なるため、型 'String の 2 次元配列' の値を 'String の 1 次元配列' に変換できません。」

また関数の中で、その配列の中身にデータをセットしたのですが、以下のエラーが出てしまいます。

「エラー    29    インデックスの数がインデックス付き配列の次元を超えています」


以前VB6で作っていた箇所なのですが、vb6ではなんともありませんでした。vb2005(.NETなど)では多次元配列を引数として渡すことはできませんでしょうか。。

下に、VB2005で作成したコードを載せてみました。
どなたかご存知の方、教えてください。よろしくお願いします。

Dim strArr(12, 2) As String

Call test_function(strArr,1)
Call test_function(strArr,2)
Call test_function(strArr,3)

Private Sub test_function(ByRef strArr() As String, ByRef intArrNum As Short)

    '★文字列を配列に格納
    strArr(intArrNum, 0) = "a"
    strArr(intArrNum, 1) = "b"
    strArr(intArrNum, 2) = "c"
End Sub

[ツリー表示へ]
タイトルRe: 多次元配列を引数として渡したいです。
記事No7398
投稿日: 2008/04/24(Thu) 12:46
投稿者
はじめまして、鍵と言います。
掲示板をいつも拝見させていただいてます。

strArrは2次元配列なので

> Private Sub test_function(ByRef strArr() As String, ByRef intArrNum As Short)

この部分は

Private Sub test_function(ByRef strArr(,) As String, ByRef intArrNum As Short)

この様に","を入れて指定する必要があるのではないでしょうか?
自分はVB6で試せないのでそちらで実行できてしまう理由は分かりませんが(^^;

[ツリー表示へ]
タイトルRe^2: 多次元配列を引数として渡したいです。
記事No7399
投稿日: 2008/04/24(Thu) 13:02
投稿者るしぇ
>自分はVB6で試せないのでそちらで実行できてしまう理由は分かりませんが(^^;
仕様変更です。

まず、エラーに関してはヘルプ(MSDN)に解説されています。
[タスク一覧]に表示されたエラーメッセージを選択し、[F1]キーを
押すか、エラーメッセージで検索することで辿り着けます。
http://msdn2.microsoft.com/ja-jp/library/xhyz113x.aspx
そして関連あるページへのリンクが貼られています。

いくつかのリンクを辿れば下のページが表示されます。
>配列サイズの宣言 (Visual Basic 6.0 ユーザー向け)
http://msdn2.microsoft.com/ja-jp/library/5c1seyzc.aspx
>次元数は固定する必要があります。

[ツリー表示へ]
タイトルRe^3: 多次元配列を引数として渡したいです。
記事No7420
投稿日: 2008/04/29(Tue) 18:23
投稿者ゆうや
鍵さん、るしぇさん>

大変返事が遅くなってしまいまして、すみませんでした。。

書き込みありがとうございました。
るしぇ さんの書き込みの「次元数は固定する必要があります。」が理解不能状態だったのですが、やっとわかりました(汗)

呼び出される側の関数も同じ次元配列でないといけないことですね♪

ありがとうございました!

[ツリー表示へ]