我是VBA的新手,我正在尝试简单地执行宏。我需要我的宏像这样工作:
-
如果E5单元格中有一个大于1的值,则显示一个消息框,其中包含"Your value is"/从E5/获取值
-
我想对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
。这将在发现并报告第一个无效值后取消验证。