【问题标题】:VBA Alert pop up for values in a column为列中的值弹出 VBA 警报
【发布时间】:2018-06-28 03:46:41
【问题描述】:

我正在尝试在 Excel 列中创建一个 VBA -Alert 弹出窗口。 在基于某些计算的 Excel 表中,将计算一些 Growth%(H 列),如果 Growth% > 20%,将生成一个警报弹出窗口,询问原因代码,需要将其放入 I 列。 该代码对于特定单元格(比如H7)运行良好,但是当我将它扩展到一个范围(比如H7:H700)时,它不起作用。 有人可以帮我解决这个问题。 代码:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Range("H7:H700") > 0.2 Then
        MsgBox "GR% >20%, Put the reason code"
    End If
End Sub

% 增长原因代码 34% 20% 18%

更新后的excel表格截图:

现在 ASM/RSM 可以更新他们的预测并自动在 H 列中计算增长 % ...相同的值将被复制到 I 列(作为特殊粘贴),如果增长 % > 20% ,那么会弹出警报...

我正在使用的代码(在 JC Guidicelli 的帮助下):

Private Sub Worksheet_Change(ByVal Target As Range)
Dim xCell As Range, Rg As Range
On Error Resume Next
 Sheets("Sheet1").Range("H7:H700").Copy
 Sheets("Sheet1").Range("I7:I700").PasteSpecial xlPasteValues
Set Rg = Application.Intersect(Target, Range("I7:I700"))
If Not Rg Is Nothing Then
    For Each xCell In Rg
        If xCell.Value > 0.2 Then
            xCell.Select
            MsgBox "GR% >20%, Put the reason code"
            Exit Sub
        End If
    Next
End If

结束子

问题在于 Growth% 20%,它抛出了弹出窗口但卡住了.. 有人可以帮我解决这个问题吗..

【问题讨论】:

  • 因此,您有 2 列和多行,对于每一行,您需要检查值是否 > 0.2,并且您需要提醒用户每行 > 0.2。我对你的理解正确吗? ...(如果您在问题中包含电子表格数据的样本,人们会更容易理解您的要求并测试可能的解决方案。)
  • Worksheet_Change 不会在计算公式的值发生变化时触发。
  • 您需要对 worksheet_change 进行更多研究。 1. 禁用事件 2. 错误控制 3. 当目标多于一个单元格时处理目标。 4. 触发 Worksheet_Change 的原因。
  • @SeanW333....是的...这正是我想做的...

标签: vba excel


【解决方案1】:

编辑: 当您在所选范围内添加或粘贴值时,将显示消息;) 试着告诉我,它对我有用:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim xCell As Range, Rg As Range
    On Error Resume Next
    Set Rg = Application.Intersect(Target, Range("H7:H700"))
    If Not Rg Is Nothing Then
        For Each xCell In Rg
            If xCell.Value > 0.2 Then
                xCell.Select
                MsgBox "GR% >20%, Put the reason code"
                Exit Sub
            End If
        Next
    End If
End Sub

【讨论】:

  • @ JC Guidicelli ......非常感谢您的详细回答..尝试使用提到的代码......当我最后运行宏时它正在工作......所以假设有 5 种情况 GR% >20%,出现 5 次弹出窗口...我尝试的代码略有不同...对于 H7:H700 范围,每当我打算在 H7 中输入值时: H700 范围和值 >20% ,它应该弹出一个弹出窗口,而不是在填充结束时..根据代码我应该遇到 5 次弹出窗口......每次发生后.. .你能帮我解决这个问题吗...提前谢谢!!
  • 看答案。我编辑了代码并让我知道;)
  • 太棒了。很高兴为您提供帮助
  • @JC Guidicelli ...谢谢您的帮助....是否有可能使用一些变体...?假设在 H7:H700 列中计算增长百分比...我在 I7:I700 列中制作特殊粘贴...并且每当 I7:I700 中的值时,它都会弹出相同的弹出窗口...所以基本上,如果它是一个计算值,而不是数据输入,可以设置弹出窗口......正在尝试(附上发布问题中的快照)..Sheets(“Sheet1”).Range(“H7:H700”) .Copy Sheets("Sheet1").Range("I7:I700").PasteSpecial xlPasteValues...但它不起作用...如果可能请告诉我...非常感谢..!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-22
  • 2012-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多