0

私の次のコードについて質問がありました:

    For Each c In "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
        If Not String.IsNullOrWhiteSpace(exsheet.Range((c & "5")).Value.ToString) Then
            pointer = pointer + 1
            XRisks(pointer) = exsheet.Range(c & "6").Value.ToString

        End If
    Next

本質的に、コードは Excel スプレッドシート (exsheet と呼ばれる) の各列の 5 行目を調べます。そのセルに何かがある場合は、それを配列 (XRisks) に保存します。

ただし、私の Excel スプレッドシートは Z を過ぎて、列見出しで AA AB AC AD などに続きます。つまり、現在のコードでは、列 Z の後に列の読み取りが停止します。

& "AA" & "AB" & "AC" などをアルファベット文字列の最後に追加しようとしましたが、これはすべて、A を保存し、次に A を保存し、次に A を保存し、次に B を保存するだけでした。私の文字列の文字。

私がそれを十分に説明したことを願っています。前もって感謝します!

ジョー

4

1 に答える 1

1

文字ではなくインデックスを 使用する.Cells代わりに、単純に使用できます。.Range

    For i As Integer = 1 To 50
        If Not String.IsNullOrWhiteSpace(exsheet.Cells(5, i).Value.ToString) Then
        ...
    Next

すべての列を反復処理するには、usedRangeを試すことができます。ただし、これは安全ではない可能性があります。これは、usedRangeが最初の列が空の場合、必ずしも最初の列から開始するとは限らないためです(つまり、ほとんどのテーブルのようなシートでは十分に安全です)。

    For i As Integer = 1 To exsheet.UsedRange.Columns.Count
        If Not String.IsNullOrWhiteSpace(exsheet.Cells(5, i).Value.ToString) Then
        ...
    Next
于 2013-03-17T15:43:51.190 に答える