Excel - VBA macro and if



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

  1. 如果E5单元格中有一个大于1的值,则显示一个消息框,其中包含"Your value is"/从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"是一个文本/字符串,而不是一个数字。因此,如果你想将数值与><进行比较,你需要编写
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

但请注意,如果您在E中有许多值是>1,那么您将得到许多消息框。如果只想显示第一个消息框>1,则在MsgBow的正下方放一个Exit For。这将在发现并报告第一个无效值后取消验证。

最新更新