2017-05-11 18 views
1

私の問題を与えるコードの私の部分はこれです。それは言う:Visual Basic - System.IndexOutOfRangeException

型「System.IndexOutOfRangeException」の未処理の例外がWindowsApplication1.exe

で発生しました追加情報:インデックスが本当にLabel1.Text = question(i - 1,0)のために、アレイ

の範囲外だったと私理解していない。

私は始めにプログラミングのことを学びたいと思っています。

Public Class Test1 
Dim question(2, 5) As String 
Dim i As Integer = 2 
Private Sub Test1_Load() 
    question(1, 0) = "2+2=" 
    question(1, 1) = "1" 
    question(1, 2) = "2" 
    question(1, 3) = "3" 
    question(1, 4) = "4" 
    question(2, 0) = "How old are you?" 
    question(2, 1) = "12" 
    question(2, 2) = "13" 
    question(2, 3) = "17" 
    question(2, 4) = "18" 
    Label1.Text = question(i - 1, 0) 
    nr1.Text = question(i - 1, 1) 
    nr2.Text = question(i - 1, 2) 
    nr3.Text = question(i - 1, 3) 
    nr4.Text = question(i - 1, 4) 

End Sub 
+0

今後の参考として、VB.NETとVBAは同じではありません。 VBAは、Microsoft Officeでマクロを作成するために使用する言語です。 –

+0

例外がスローされたときの 'i'の値は何ですか? – jmcilhinney

+0

ええと、私の値は2です。私は思う。私はあなたが求めているものではありません。 – Axel8017

答えて

1

あなたのコードは、dotnetfiddle.netにエラーを与えませんでした。だから、 "質問"は0-2と0-5からインデックスされた2D配列です。次のようになります。

0 1 2 3 4 5 
0 s s s s s s 
1 s s s s s s 
2 s s s s s s 

それぞれの文字列は文字列を表します。したがって、質問(0、0)にアクセスしている場合は、左上に「s」が表示されます。あなたが質問(0、1)にアクセスしているなら、それはその質問の右側にあるでしょう。配列の範囲外にあるものにアクセスしようとすると、たとえばquestion(3、0)にアクセスしようとするとエラーが発生します。

エラーを修正するには、iの値が何であるか把握する必要があります。エラーが発生する行の直前に、

MessageBox.Show(i) 

を入力してください。

+0

ありがとう、今私はどこが間違っていたか知っています。 :D – Axel8017