首页 > 解决方案 > Excel - VBA 宏和 if

问题描述

我是 VBA 的新手,我正在尝试做简单的宏。我需要我的宏像这样工作:

  1. 如果 E5 单元格中有一个大于 1 的值,则显示一个消息框,其中包含“您的值是”/从 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 并再次打开它也是如此。将宏分配给自动形状要容易得多,但在这里我摔倒了:(

标签: excelvbaif-statementmessagebox

解决方案


请注意,这"1"是一个文本/字符串,而不是一个数字。所以如果你想比较一个数值>或者<你需要写

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

或者你没有得到你想要的结果。

要将值放入您的消息框中,您需要使用&符号将其连接到您的文本。

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

要对 E 列中的所有单元格执行此操作,您需要循环

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

但请注意,如果>1E 中有许多值,那么您将获得许多消息框。如果您只想显示第一个消息框,请在下方>1放置一个。这将在找到并报告第一个无效值后取消验证。Exit ForMsgBow


推荐阅读