VBを勉強中です。段階としては書籍やサイトの見本プログラムを
いくつか真似て作っているところです。
質問ですがVB6で作られたプログラムのバージョンアップを
行っています。VS2005を使いアップグレードを行った際
UPGRADE_WARNINGが発生し、デバッグできない状態です。
エラーを潰してデバッグしたいのですが、どう直して良いのか
教えて下さい。
"配列型の次元数が異なるため、型 'Object の 2 次元配列' の値を 'Object の 1 次元配列' に変換できません。"
構文は以下の通りです。
Public Sub Sort(ByRef Ar() As Object, ByRef rs As Integer, ByRef cs As Integer, ByRef Re As Integer, ByRef ce As Integer, ByRef keyc As Integer)
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim aa As Object
For i = rs To Re - 1
For j = i + 1 To Re
'UPGRADE_WARNING: オブジェクト Ar(j, keyc) の既定プロパティを解決できませんでした。
'UPGRADE_WARNING: オブジェクト Ar(i, keyc) の既定プロパティを解決できませんでした。
If Ar(i, keyc) > Ar(j, keyc) Then
For k = cs To ce
'UPGRADE_WARNING: オブジェクト Ar(i, k) の既定プロパティを解決できませんでした。
'UPGRADE_WARNING: オブジェクト aa の既定プロパティを解決できませんでした。
aa = Ar(i, k)
'UPGRADE_WARNING: オブジェクト Ar(j, k) の既定プロパティを解決できませんでした。
'UPGRADE_WARNING: オブジェクト Ar(i, k) の既定プロパティを解決できませんでした。
Ar(i, k) = Ar(j, k)
'UPGRADE_WARNING: オブジェクト aa の既定プロパティを解決できませんでした。
'UPGRADE_WARNING: オブジェクト Ar(j, k) の既定プロパティを解決できませんでした。
Ar(j, k) = aa
Next
End If
Next
Next
End Sub
あくまで推測ですが…
>Public Sub Sort(ByRef Ar() As Object, ByRef rs As Integer, ByRef cs As Integer, ByRef Re As Integer, ByRef ce As Integer, ByRef keyc As Integer)
の Ar() が気に入らないんでしょうね。
これを1次元配列と認識してるんでしょう。
Ar(,) と変えてみて、何とかなりませんかね?
ちなみに配列の次元数が時と場合によって違う場合は… 関数をオーバーロードするぐらいしか
解決法を思いつきません。
お礼
ありがとうございます。 Ar(,)に変えることで解決いたしました。 ほかにもいくつかエラーがありましたが、解決し 無事にビルドできる態勢が整いました。 しかしながら、フォーム作成中にエラーが発生したので 調べてみます。 どうもありがとうございました。