3

文字列を分割し、分割された部分を取得して変数に割り当てようとしています。これは最初の変数では正常に機能しますが、2番目の変数を機能させることができません。

For Each columnQuarter As DataColumn In dt.Columns
            Dim s As String = columnQuarter.ColumnName
            Dim words As String() = s.Split("-")
            Dim Year As String = words(0)
            Dim Quarter As String = words(1)
            Debug.WriteLine(Year)
            Debug.WriteLine(Quarter)

「DimQuarterAsString = words(1)」の行で、「IndexOutofRangeExceptionが処理されませんでした。インデックスが配列の境界外にありました。」というエラーコードが表示されます。

ColumnNameの例は2012-Q1です。

追加情報:

dataTableに列を追加するために使用するコードは次のとおりです。ご覧のとおり、最初の2列には「-」が含まれていません。

tickerColumn = New DataColumn("Ticker", Type.GetType("System.String"))
consistencyColumn = New DataColumn("Consistency", Type.GetType("System.Int32"))
dt.Columns.Add(tickerColumn)
dt.Columns.Add(consistencyColumn)

    With Me
        lr = Now.Year - 1901
        For i = 1 To lr
            column = New DataColumn
            column.DataType = System.Type.GetType("System.Int32")
            column.ColumnName = Now.Year - i & "-Q4"
            dt.Columns.Add(column)

            column = New DataColumn
            column.DataType = System.Type.GetType("System.Int32")
            column.ColumnName = Now.Year - i & "-Q3"
            dt.Columns.Add(column)

            column = New DataColumn
            column.DataType = System.Type.GetType("System.Int32")
            column.ColumnName = Now.Year - i & "-Q2"
            dt.Columns.Add(column)

            column = New DataColumn
            column.DataType = System.Type.GetType("System.Int32")
            column.ColumnName = Now.Year - i & "-Q1"
            dt.Columns.Add(column)
        Next i
    End With
4

1 に答える 1

3

最初の2つの列にはダッシュがないため、それらを除外してみてください。

For Each columnQuarter As DataColumn In dt.Columns
  Dim s As String = columnQuarter.ColumnName
    If s.Contains("-") Then
      Dim words As String() = s.Split("-")
      Dim Year As String = words(0)
      Dim Quarter As String = words(1)
      Debug.WriteLine(Year)
      Debug.WriteLine(Quarter)
    End If
Next
于 2013-02-01T15:26:37.743 に答える