【问题标题】:Detect ComboBox Change Excel VBA检测组合框更改 Excel VBA
【发布时间】:2020-10-01 11:41:53
【问题描述】:

我有一张带有一堆组合框(表单控件)的工作表,我想检测用户何时更改其中任何一个并在单元格中写入文本。在目标单元格上使用 Worksheet_Change 不起作用。我尝试了一堆不起作用的东西。我不确定私有子行或 if 语句中需要包含什么。

Private Sub DropDowns_DropButtonClick()
If ActiveSheet.DropDowns.Value > 1 Then
    Cells(13, 5).Font.Bold = True
    Cells(13, 5).Font.Color = vbRed
    Cells(13, 5).Value = "!!! Selections have been changed. !!!"
End If
End Sub

我试过了

ComboBox_AfterUpdate()
ComboBox_Change()
DropDowns_AfterUpdate()
DropsDowns_Change()

还有我能找到的任何其他东西。我还在 if 语句中尝试了一些不同的东西,但没有运气。

感谢您的帮助。

克里斯

【问题讨论】:

  • 直接给组合框分配宏?
  • Forms 让生活更轻松。如果您制作正确的表格,那么所有这些事件都会起作用。
  • 我在一张纸上有 63 个,在另一张纸上有 207 个,这对于每个盒子的单个宏来说太多了。感谢您的建议。

标签: excel vba combobox dropdown


【解决方案1】:

如果我没看错,你的组合框就在用户表单中。如果我是正确的,只需在“Visual Basic”中打开您的用户窗体,然后双击相关的组合框。这将打开代码窗格并创建一个名为“Private Sub Combobox Name> ()”的空 Private Sub 例程。

输入您的代码,将您的数据(或任何您想要的)放入子例程中,Bob 应该是您的叔叔。

如果我遗漏了什么,请提前道歉。

RannochRob

编辑...

好吧,我错了,它是一个表单控件。

我的第一条评论是,如果可以的话,使用 activex 控件会更容易......但是,对于表单控件,应该 (a) 使用“格式控件”下拉菜单中的单元格链接框(“控件”选项卡) 将结果放在一个单元格中...但是,该结果将不是框的内容,而是一个整数,该整数等于所选条目在组合框中的条目列表中的位置。然后,您需要 (b) 为组合框分配一个宏,该组合框将获取结果并使用它从包含条目列表的范围中获取所需的信息。就像我说的,使用 activex 控件更容易......

RannochRob

【讨论】:

  • 谢谢。如果我无法弄清楚,这不是一个大问题。我现在在工作表的开发中,返回并将近 300 个组合框更改为活动 x 是不值得的。
【解决方案2】:

您可以通过将宏分配给组合框(右键单击组合框>分配宏)来做到这一点,如 cmets 部分中提到的@BigBen:

Option Explicit

Sub DropDown1_Change()
    Dim sht As Worksheet
    Dim dd As DropDown
    Set sht = ThisWorkbook.Worksheets("Name of your Worksheet") 'Name of the worksheet in which the combobox is located
    Set dd = sht.DropDowns("Drop Down 1") 'name of your combobox
    sht.Range("G1").Value = "The selected value is: " & dd.List(dd.Value) 'dd.value returns the index of the selected value
End Sub

您可以为每个组合框使用相同的代码。 出于演示目的,我使用了以下设置:

您可以轻松修改代码以最适合您的需求。

【讨论】:

  • 嗨,谢谢你的想法。我在一张纸上有 63 个组合框,我需要这个,而在另一张纸上有 207 个,写的宏有点太多了,因此我一直在寻找一种方法来一次查看它们。弄清楚这一点对我来说并不重要,所以如果没有简单的方法,我就不会担心。
猜你喜欢
  • 2014-07-28
  • 2019-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-12
  • 2021-02-15
  • 2016-08-05
  • 1970-01-01
相关资源
最近更新 更多