Excel - макрос VBA и если - PullRequest
       25

Excel - макрос VBA и если

1 голос
/ 17 апреля 2020

Я новичок в VBA и пытаюсь сделать просто макрос. Мне нужно, чтобы мой макрос работал следующим образом:

  1. Если в ячейке E5 есть значение, которое больше 1, отобразите окно сообщения с текстом «Ваше значение равно» / get значение из E5 /

  2. Я хочу повторить это условие для всех ячеек в столбце E.

Сначала я начал с чего-то, что будет работать :

Sub test()
    If Range("E5").Value > "1" Then
        MsgBox "Your value is" (here I don't know how to import real value from E5)
    End If
End Sub

И тогда я могу нажать «Выполнить», и макрос работает нормально (это означает «формально хорошо», потому что это еще не целевой эффект). Но этот макрос работает только тогда, когда я нажимаю «Выполнить», и мне бы хотелось, чтобы он работал всегда, даже когда я выключаю Excel и снова включаю его. Присвоить макрос для авто-формы гораздо проще, но здесь я упал: (

1 Ответ

0 голосов
/ 17 апреля 2020

Обратите внимание, что "1" - это текст / строка, а не число. Поэтому, если вы хотите сравнить числовое значение c с > или <, вам нужно написать

If Range("E5").Value > 1 Then

или вы не получите желаемый результат.

Чтобы получить значение в окне сообщения, вам нужно объединить его с текстом, используя знак &.

MsgBox "Your value is " & Range("E5").Value

Чтобы сделать это для всех ячеек в столбце E, вам необходимо l oop

Dim LastRow As Long 'find last used row in E
LastRow = Cells(Rows.Count, "E").End(xlUp).Row

Dim iRow As Long
For iRow = 1 To LastRow
    If Cells(iRow, "E").Value > 1 Then
        MsgBox "Your value in Cell E" & iRow & " is " & Cells(iRow, "E").Value
    End If
Next iRow

Но учтите, что если у вас много значений, которые >1 в E, вы получите много окон сообщений. Если вы хотите показать только первое окно сообщения >1, поместите Exit For прямо под MsgBow. После этого проверка будет отменена после того, как будет найдено и сообщено первое неверное значение.

...