【问题标题】:C# ListObject iterate through table besides for last rowC# ListObject 遍历表除了最后一行
【发布时间】:2017-03-10 16:48:32
【问题描述】:

我有这个当前函数,它在遍历表时清除第 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.
    }

我正在尝试转换为 C# 的旧 VBA 代码

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”之后定义它 被调用。

【问题讨论】:

    标签: c# excel-interop listobject


    【解决方案1】:

    使用 for 循环。 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];
    }
    

    【讨论】:

    • 有没有办法从下面的总表数中定义减法?我将重新定义我的问题,这样我想要实现的目标就更有意义了。
    • @Brandon 你可以在你的 foreach 中做任何事情。 lr 与 foreach 中的 li 相同。因此,如果您对在 foreach 中做什么有一个概念,您也可以在 for lopp 中进行。
    • 也坚持每个帖子一个问题。如果这很清楚,请使用您的另一个问题创建一个新问题。
    • 抱歉,我间接描述了我的问题。
    猜你喜欢
    • 1970-01-01
    • 2016-03-27
    • 1970-01-01
    • 2012-11-20
    • 2011-09-16
    • 1970-01-01
    • 2016-07-20
    • 2010-10-31
    • 1970-01-01
    相关资源
    最近更新 更多