VB. Net Для L oop не выполняется - PullRequest
0 голосов
/ 08 июля 2020

У меня есть приведенный ниже код VB. Net, который в настоящее время выполняется в UiPath с использованием действия «Invoke Code». Оператор For l oop не выдает никаких синтаксических ошибок, но оператор If, похоже, не выполняется. Есть ли проблема с тем, как я ссылался на диапазон в l oop (т.е. ws.range("F" & i).Value)?

'create instances of excel and open final file
Dim excel As Microsoft.Office.Interop.Excel.Application
Dim wb As Microsoft.Office.Interop.Excel.Workbook
Dim ws As Microsoft.Office.Interop.Excel.Worksheet
    excel = New Microsoft.Office.Interop.Excel.ApplicationClass
    wb = excel.Workbooks.Open("FilePath.xlsx")
    ws= DirectCast(wb.Worksheets(1),Microsoft.Office.Interop.Excel.Worksheet)
    
'Delete the first row of the worksheet
ws.Range("A1").EntireRow.Delete

'Define the last row of the worksheet
Dim LastRow As Long
    LastRow = ws.UsedRange.Rows.Count

'Delete the last row (the Total column)
        ws.Range("A" & LastRow).EntireRow.Delete

LastRow = ws.UsedRange.Rows.Count

Dim i As Long

    For i = 2 To LastRow
        If ws.range("F" & i).Value Is "Declined"  Then 
            ws.range("F" & i).EntireRow.ClearContents
        End If
    Next i
      
'Save and close application
excel.activeworkbook.save
excel.Workbooks.close()
excel.Quit()

1 Ответ

3 голосов
/ 08 июля 2020

Ваше условие If всегда будет возвращать false, потому что Is не сравнивает содержимое; он проверяет, ссылаются ли две объектные ссылки на один и тот же объект (да, строка является объектом), что в данном случае является ложным.

Вместо этого вы должны использовать оператор = для сравнения двух строк. Однако, поскольку типом времени компиляции Range.Value является Object, вы должны сначала преобразовать его в строку. Измените свой код на что-то вроде этого:

For i = 2 To LastRow
    Dim currentCell = ws.Range("F" & i)

    If currentCell.Value IsNot Nothing AndAlso currentCell.Value.ToString() = "Declined" Then
        currentCell.EntireRow.ClearContents()
    End If
Next

Ссылки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...