【问题标题】:Create a VBA Message Box Based on Cell Value根据单元格值创建 VBA 消息框
【发布时间】:2019-12-20 04:40:19
【问题描述】:

所以,这应该很容易实现,但我无法显示消息框。

上下文 - 这是一个估计工具 - 如果用户为特定单元格输入的值小于最小阈值,我想弹出一个消息框让他们知道这不是一个有效的条目。

我所指的单元格被命名(假设为TEST)。它的位置在 UI 选项卡上(工作簿中 4 个选项卡中的 1 个)是第 47 行第 17 列。

这是我目前尝试过的代码:

Sub UI Alerts()
    If Cells(47, 17) < "1000" Then
        MsgBox ("Minimum Value is 1000")
        Exit Sub
    End If

同理,命名单元格

Sub UI Alerts()
    If ("TEST").value < "1000" Then
        MsgBox ("Minimum Value is 1000")
        Exit Sub
    End If

我已在与 UI 选项卡对应的 VBA 模块中进行了设置,因此我不必引用工作表。知道为什么消息框不显示吗?是否可以根据单元格值自动显示消息框?

谢谢。

【问题讨论】:

  • 为什么选择 VBA?为什么不进行数据验证?
  • ("TEST") 是带有多余括号的字符串文字,它没有 .Value 成员。你的意思是ThisWorkbook.Names("TEST").RefersToRange.Value

标签: excel vba


【解决方案1】:

除非有特定原因我们需要将其作为宏,否则听起来标准数据验证在这里适合您。试试这个:选择要应用规则的单元格,然后在功能区/工具栏上找到数据 > 数据验证。您可以要求一个大于 1,000 的整数(或另一个单元格中的值),在用户选择单元格时显示一个带有说明的注释框,如果输入了无效数字,则会显示错误消息。

【讨论】:

    【解决方案2】:

    您需要在工作表中使用 Change 事件。以下是应与您的命名范围一起使用的示例代码。无论如何,它应该向您展示如何做到这一点。

    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Address = Range("TEST").Address Then
            If Range("TEST").Value < 1000 Then
                MsgBox ("Minimum Value is 1000")
            End If
        End If
    End Sub
    

    【讨论】:

      【解决方案3】:

      您需要将代码添加到工作表“更改”事件中。

      现在,您有代码,但它永远不会被调用。

      【讨论】:

      • 这更像是评论而不是答案:)
      • 这不是答案吗?它具体解释了为什么它不起作用以及如何使它起作用。
      猜你喜欢
      • 2013-04-12
      • 1970-01-01
      • 1970-01-01
      • 2013-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多