当另一个框在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中的单元格。的主要内容,如果未能解决你的问题,请参考以下文章

在excel中如何用vba来实现查找特定的字符串?

excel VBA 组合框 取值

当另一个文本框在报告中增加其大小时如何停止增加文本框的大小

在EXCEL中 如何用VBA查找某特定单元格并返回该单元格的行和列值?

Excel / VBA代码忽略输入的参数

具有用户定义数据的 NumberFormat VBA