プロが教えるわが家の防犯対策術!

vb.netでCSVファイルからセルの文字列を読み込むプログラムを作成しているのですがLabel1.Text = strTemp1(1)の部分でインデックスが配列の境界外です。と表示されてしまい困っています。どうすればいいのか教えてください。
Public Class Form1


Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim objFile1 As New System.IO.StreamReader("Z:\traindata\言語.csv", System.Text.Encoding.GetEncoding("shift_jis"))
'ファイルを指定して読み込むためのオブジェクト
Dim strLine1 As String 'ファイルから読み取った全駅名の文字列を格納する
Dim strTemp1() As String 'strLine1からデータを受け取り、配列にする
Dim strData1 As String 'strTemp1の配列したデータを受け取る
Dim Lineno1 As Integer 'CSVファイルから読み込みたい列の値を格納する
Dim linesta As Integer 'aを整数型で宣言をしてそれと同時にstrTempの配列を指定して、文字の最大値を返す。End Class
Lineno1 = 1 'CSVファイルから読み込みたい列を指定する
strLine1 = objFile1.ReadLine() 'objFile1に1行分の文字を読み込んで配列にして、strLine1に格納する
While (strLine1 <> "") 'strlineが空白""と等しくない限り処理を続ける
strTemp1 = Split(strLine1, ",") 'strLine1とカンマで区切られたファイルの文字列から配列を作成してstrtemp1に格納する
For intCnt = 0 To UBound(strTemp1) 'カウンタintcatが0からstrtemp1の添字の最大値以下(csvファイルに入力された終着駅の行番号)である間,処理を繰り返し行う
strData1 = strData1 + strTemp1(intCnt) 'strData1にstrTemp1の配列カウンタintcatとstrData1を足して代入する
Next
If Lineno1 = 2 Then 'Lineno1に格納したCSVファイル内の空白を除いた文字列から2列目を指定して読み込む
Label1.Text = strTemp1(1) '(列車番号を示すLabel1の内容)
End If
' csvファイルを閉じる
strLine1 = objFile1.ReadLine() 'objFileを読み込んで配列にしてstrLineに格納する
Lineno1 = Lineno1 + 1 ' Lineno と 1を足してLinenoに代入する

End While
End Sub
End Class

A 回答 (2件)

まずは



Label1.Text = UBound(strTemp1)

添え字の最大値を確認じゃないかな?
    • good
    • 0

言語.csvの2行目に項目が2つも無いのでは…



以上ご参考まで
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!