当另一个框在excel(VBA)中具有特定值时,如何引用msgBox中的单元格。
Posted
技术标签:
【中文标题】当另一个框在excel(VBA)中具有特定值时,如何引用msgBox中的单元格。【英文标题】:How to reference a cell in a msgBox when another box has a certain value in excel (VBA). 【发布时间】:2015-04-22 21:51:13 【问题描述】:当该行中的单元格达到某个值时,我试图将相应的单元格输入到 msgBox 中。例如,如果 C1 > 3.45,我想要一个消息框显示“+ Range("A1") + 处的值太高”。这将扩展到整个数组。
我一直在尝试修改简单的脚本。
Private Sub Worksheet_Change(ByVal Target As Range)
Set Target = Me.Range("C1:C100")
If Target.Value > 3.45 Then
MsgBox "The Value at "+ Range("A1:A100") + " exceeded limit."
End If
End Sub
我知道我遗漏了一些东西,但我不知道如何关联这些数字并让它们返回。我知道我可以使用 Match 并利用
的一般形式 Set targetRange = [range]
targetRange.FormulaArray = "=[insert array formula]"
但我似乎无法让它们正常工作。
提前感谢您的帮助。
【问题讨论】:
在我看来,您想要做的是遍历一个范围内的所有单元格,如果其中一个数字超过阈值,则弹出msgbox
?
那是正确的。
如果找到阈值后它会继续通过单元格,那也是首选。如果它找到了,我不希望它停下来。
【参考方案1】:
为什么不试试类似的东西
for i = 1 to 100
if cells(i, 3) > 3.45 then
msgbox "Cell C" & i & " is too high. The corresponding time stamp is " & cells(i, 1) & "."
end if
next i
这将在每次该范围内的单元格“太高”时提醒用户。
【讨论】:
我会尝试的,但您能否解释一下,以便我有更深入的了解,而不仅仅是复制/粘贴。当您使用单元格(i ,3)时,这会自动循环吗?本质上使用 i 作为占位符? (抱歉,如果这是一个愚蠢的问题,我已经很久没有使用 VBA 了) 它将“循环”通过单元格 C1 到 C100。 C 是第 3 列,因此 3.i 指的是行号 1 到 100。这根本不是一个愚蠢的问题。继续学习! 另外,引用单独的单元格是否复杂得多?我真的不想特别引用单元格的原因是单元格按日期/时间分类,该日期/时间位于 A 列中,数据本身位于 C 列中。能够看到时间戳最初摆脱了更多搜索。 感谢您的解释。 我不确定我是否关注了您的最后评论。【参考方案2】:没有循环的单班轮(为了好玩 - 触摸更难理解!)
MsgBox Join(Filter(Application.Transpose(Application.Evaluate("=IF(ISNUMBER(C1:C100),IF(C1:C100>3.45,""C""& ROW(C1:C100),""x""),""x"")")), "x", False), ",")
【讨论】:
以上是关于当另一个框在excel(VBA)中具有特定值时,如何引用msgBox中的单元格。的主要内容,如果未能解决你的问题,请参考以下文章