【问题标题】:Trouble with Form Control dropdown box表单控件下拉框出现问题
【发布时间】:2021-02-22 01:10:18
【问题描述】:

我在创建依赖下拉框时遇到了一些问题,其中基于第一个下拉框的值,要么返回一个列表,要么返回一个值:

我的第一个下拉菜单(“Drop Down 6”)由两个选项(命名范围)组成

LU Classification:
        CFR
        DCR 

我的第二个下拉菜单(“Drop Down 11”)的代码如下:

'Declare variables
Dim wb As Workbook
Dim ws As Worksheet
Dim c_list As Worksheet

'Assign variables
Set wb = ThisWorkbook
Set ws = ActiveSheet
Set c_list = wb.Worksheets("C_List")
      
'DropDown level 1
Dim dd As DropDown
Set dd = ws.Shapes("Drop Down 6").OLEFormat.Object

'DropDown level 2
Dim dd2 As DropDown
Set dd2 = ws.Shapes("Drop Down 11").OLEFormat.Object

'DropDown level 2 values
With dd2
    If dd.Value = 1 Then
        dd2.ListFillRange = "LU_BBP"
    Else
        dd2.ListFillRange = "Packer"
    End If
End With

End Sub

当我在第一个下拉菜单中选择 CFR 时,我的 if 语句似乎不起作用,应该返回一个列表。

有什么想法吗?

编辑:如果我在 VBA 编辑器中逐行运行,下拉菜单会更新,但是,当简单地使用下拉菜单时,更改不会继续。

【问题讨论】:

  • yes dd.Value 等于 1 或 2,取决于选择的 CFR 或 DCR

标签: excel vba combobox dropdown


【解决方案1】:

你需要做的稍微不同。

将此代码粘贴到模块中

Option Explicit

Sub DropDown6_Change()
    Dim ws As Worksheet
    Set ws = ActiveSheet
    
    Dim dd As DropDown
    Set dd = ws.Shapes("Drop Down 6").OLEFormat.Object

    Dim dd2 As DropDown
    Set dd2 = ws.Shapes("Drop Down 11").OLEFormat.Object
    
    If dd.Value = 1 Then
        dd2.ListFillRange = "LU_BBP"
    Else
        dd2.ListFillRange = "Packer"
    End If
End Sub

现在右键单击Drop Down 6,然后单击分配宏。将DropDown6_Change 分配给这个下拉列表,你就完成了:)

实战(演示)

【讨论】:

  • 搞定了,伙计。谢谢您的帮助,我将宏分配给了错误的下拉框。感谢你的帮助。视频也很酷。非常感谢!
猜你喜欢
  • 1970-01-01
  • 2013-09-02
  • 2019-12-23
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多