Как найти любое число больше 0 в столбце - PullRequest
0 голосов
/ 14 января 2019

Я пытаюсь написать код, чтобы помочь мне найти любые числа больше 0 в столбце и показать мне результат, число за номером, в окне сообщения.

Dim n
n = 1

Do Until Cells(n + 1, 1) = ""
    n = n + 1
    If Cells(n, 17).Value > 0 Then
        MsgBox Cells(n, 17).Value
    End If
Loop

Оно должно показывать мне окно сообщения как минимум три раза (на основании таблицы данных, над которой я сейчас работаю), но у меня ничего нет!

1 Ответ

0 голосов
/ 14 января 2019

Показать положительное число в столбце

Проблема вашего кода может заключаться в том, что вы «делаете», пока «» не появится в столбце A , но вы показываете значения столбца Q , например если A2 не больше 0, окна сообщений не будут.

Для следующей версии

Sub ShowPositive()

    Const cSheet As Variant = "Sheet1"  ' Worksheet Name/Index
    Const cFirstR As Integer = 1        ' First Row Number
    Const cColumn As Variant = 17       ' Column Letter/Number e.g. "Q" or 17

    Dim lastR As Long   ' Last Row Number
    Dim i As Long       ' Row Counter

    With ThisWorkbook.Worksheets(cSheet)
        ' Calculate Last Row Number.
        lastR = .Cells(.Rows.Count, cColumn).End(xlUp).Row
        ' Loop through all rows.
        For i = cFirstR To LastR
            ' Check if current cell contains a number AND
            ' if it is greater than 0.
            If IsNumeric(.Cells(i, cColumn)) And .Cells(i, cColumn) > 0 _
                    Then MsgBox .Cells(i, cColumn)
        Next
    End With

End Sub

Версия Do Loop

Sub ShowPositive2()

    Const cSheet As Variant = "Sheet1"  ' Worksheet Name/Index
    Const cFirstR As Integer = 1        ' First Row Number
    Const cColumn As Variant = 17       ' Column Letter/Number e.g. "Q" or 17

    Dim n As Long       ' Row Counter

    With ThisWorkbook.Worksheets(cSheet)

        n = cFirstR ' To skip First Row.
        Do Until .Cells(n + 1, cColumn) = ""
            n = n + 1
            If IsNumeric(.Cells(n, cColumn)) And .Cells(n, cColumn) > 0 _
                Then MsgBox .Cells(n, cColumn)
        Loop

    End With

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