Если диапазон содержит значение больше 0 - PullRequest
0 голосов
/ 01 июля 2019

Идея состоит в том, чтобы подсчитать количество ячеек в диапазоне и проверить каждую ячейку, если значение больше 0, если да, введите «Просрочено», в противном случае введите «Не просрочено» Может ли кто-нибудь помочь мне?

мой код ниже не работает

ошибка 438 / объект не поддерживает это свойство или метод

появляются в строке, где начинается IF.

Option Explicit

Sub investigate()
    Dim wb1 As Workbook
    Dim w As String
    Dim Name1 As String
    Dim Path1 As String
    Dim Lr As Integer

    w = 2  
    Name1 = ThisWorkbook.Sheets("vba").Cells(w + 4, 1).Text
    Path1 = ThisWorkbook.Sheets("Path").Cells(1, 2) & "Download\"

    Set wb1 = Workbooks.Open(Path1 & Name1)

    Lr = wb1.Sheets("Sheet1").Range("V" & Application.Rows.Count).End(xlUp).Row

    If Application.WorksheetFunction.CountIf(wb1.Range("V" & Lr), ">" & 0) > 0 Then
        ThisWorkbook.Sheets("vba").Cells(w + 4, 2).Value = "Overdue"
    Else 
        ThisWorkbook.Sheets("vba").Cells(w + 4, 2).Value = "No Overdue"
    End If

    wb1.Close
End Sub

1 Ответ

0 голосов
/ 01 июля 2019

Я не совсем уверен, что ваш код будет делать то, что вы хотите.Если вы хотите подсчитать, сколько просрочено, а сколько нет, сохранив повторный подсчет в ячейках местоположения (w + 4,2), вы получите перезаписанное значение.title в ячейках (w + 4,2) и ячейках (w + 5,2), чтобы они не перекрывались.в столбце справа вы найдете количество этих платежей.

надеюсь, вам понравится

Option Explicit

Sub investigate()
    Dim wb1 As Workbook
    Dim w As Integer
    Dim Name1 As String
    Dim Path1 As String
    Dim Lr As Integer
    Dim overdueyes as long
    Dim overdueno as long

    w = 2  
    Name1 = ThisWorkbook.Sheets("vba").Cells(w + 4, 1).Text
    Path1 = ThisWorkbook.Sheets("Path").Cells(1, 2) & "Download\"

    Set wb1 = Workbooks.Open(Path1 & Name1)

    Lr = wb1.Sheets("Sheet1").Range("V" & Application.Rows.Count).End(xlUp).Row
    ThisWorkbook.Sheets("vba").Cells(w + 4, 2).Value = "Overdue"
    ThisWorkbook.Sheets("vba").Cells(w + 5, 2).Value = "No Overdue"
    for each cell in wb1.Sheets("Sheet1").range("V1:v" & lr)
        if cell.value > 0 then 
            overdueyes = overdueyes +1
        else
            overdueno = overdueyes +1
        end if
    next
    ThisWorkbook.Sheets("vba").Cells(w + 4, 3).Value = Overdueyes
    ThisWorkbook.Sheets("vba").Cells(w + 5, 3).Value = Overdueno

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