2016-10-27 2 views
3

У меня есть эта текущая функция, которая очищает строку, где значение столбца равно -1, итерации по таблице. Проблема, с которой я столкнулась, заключается в том, что я не хочу проверять последнюю строку в таблице. Как я могу это сделать?C# ListObject итерации через таблицу, кроме последней строки

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. 
    } 

OLD 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" вызывается.

ответ

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]; 
} 
+0

Есть ли способ определить вычитание из общего количества таблиц ниже? Я переформулирую свой вопрос, поэтому имеет смысл, чего я пытаюсь достичь. – Brad

+0

@Brandon вы можете делать все как в своем foreach. Lr является одним и тем же li в foreach. Поэтому, если у вас есть концепция, что делать в foreach, вы можете сделать это и для lopp. – mybirthname

+0

Также придерживайтесь одного вопроса за сообщение. Если это ясно, создайте новый с другим вопросом. – mybirthname