2015-04-22 84 views
1

我试图获得一个相应的单元格,当该行中的单元格击中某个值时,将被输入到msgBox中。例如,如果C1> 3.45,我想要一个消息框,指出“范围(”A1“)+”的值太高。“这将扩展到整个阵列。如何在另一个盒子在Excel中具有特定值(VBA)时引用msgBox中的单元格。

我一直在试图修改简单的脚本。

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 

我知道我错过了一些东西,但我无法弄清楚如何关联数字并让它们返回。我知道我可以用匹配和利用一般形式

Set targetRange = [range] 
targetRange.FormulaArray = "=[insert array formula]" 

但我似乎无法让他们正常工作。

非常感谢您的帮助。

+0

在我看来,你想要做的是循环遍历所有单元格的范围内,并弹出一个'MSGBOX '如果其中一个数字超过阈值? –

+0

这是正确的。 –

+0

如果一旦发现阈值,它将继续通过细胞一次,那也是优选的。如果它找到一个,我不希望它停止。 –

回答

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 

这每一次在该范围内的单元格是“过高”会提醒用户。

+0

我会尝试,但是你能否解释一些内容,以便我有更深入的了解,而不仅仅是复制/粘贴。 当你利用细胞(我,3),这是否自动循环?基本上使用我作为一个管家? (道歉,如果这是一个愚蠢的问题,我还没有在VBA工作很长时间) –

+0

它将循环通过C1到C100单元格。 C是第3列,因此3.我指的是行号1至100.根本不是一个愚蠢的问题。保持学习! –

+0

另外,引用一个单独的单元格要复杂得多吗?我不想具体引用单元格的原因是,单元格按日期/时间分类,该日期/时间位于列A中,而数据本身位于列C中。能够看到时间戳记最初摆脱了更多搜索。 –

0

没有循环单排(为了好玩! - 触摸更难理解)

MsgBox Join(Filter(Application.Transpose(Application.Evaluate("=IF(ISNUMBER(C1:C100),IF(C1:C100>3.45,""C""& ROW(C1:C100),""x""),""x"")")), "x", False), ",") 
相关问题