3

テーブルを反復処理しているときに、列 2 の値が -1 に等しい行をクリアするこの現在の関数があります。私が抱えている問題は、テーブルの最後の行をチェックしたくないということです。どうすればこれを行うことができますか?

foreach (Excel.ListRow lr in xlWorkBook.Worksheets["Sheet1"].ListObjects["table1"].ListRows)
{
    CurrentRow = CurrentRow + 1;
    if (xlWorkBook.Worksheets["Sheet1"].ListObjects["table1"].Range[CurrentRow, 2].value == -1)
    {
        lr.Range.Clear();
        //CALL MoveEmUP
        //ListRow = ListRow - 1? I'd like to possibly do something like this.
    }

古い VBA コードを C# に変換しようとしています

For CurrentRow = 1 To Tablesize
    If Lo.ListColumns("Column2").DataBodyRange(CurrentRow) = -1 Then
        Ros(CurrentRow).Range.Clear
        MoveEmUpOne Lo, CurrentRow, Tablesize
        Tablesize = Tablesize - 1 'table didn't really get smaller, but number of "real"rows decreased by 1
        CurrentRow = CurrentRow - 1 ' check this row again -- stuff from below might need cleard
    End If

だから、「MoveEmUp」が呼び出された後に定義しようとしています。

4

1 に答える 1

1

ループに使用します。Count プロパティは、コレクション内の行数を返します。count-2 を指定して、0 から lastOne-1 までにします。

var listRowsValue = WorkBook.Worksheets["Sheet1"].ListObjects["table1"].ListRows;

for(int i=0; i < listRowsValue.Count - 2; i++)
{
    //do your stuff; 

    var lr = listRowsValue[i];
}
于 2016-10-27T21:07:57.167 に答える