Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 表单控件下拉框出现问题_Excel_Vba_Combobox_Dropdown - Fatal编程技术网

Excel 表单控件下拉框出现问题

Excel 表单控件下拉框出现问题,excel,vba,combobox,dropdown,Excel,Vba,Combobox,Dropdown,我在创建依赖下拉框时遇到一些问题,根据第一个下拉框的值,返回列表或值: 我的第一个下拉列表(“下拉列表6”)由两个选项组成(命名范围) 我的第二个下拉列表(“下拉列表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 =

我在创建依赖下拉框时遇到一些问题,根据第一个下拉框的值,返回列表或值:

我的第一个下拉列表(“下拉列表6”)由两个选项组成(命名范围)

我的第二个下拉列表(“下拉列表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编辑器中逐行运行,下拉列表确实会更新,但是,当仅使用下拉列表时,更改不会继续进行。

您需要稍微不同地执行此操作

将此代码粘贴到模块中

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
现在右键单击
下拉列表6
,然后单击分配宏。将
DropDown6\u Change
分配到此下拉列表,您就完成了:)

正在进行(演示)


是。根据所选的CFR或DCR,dd值等于1或2。谢谢你的帮助,我把宏分配到了错误的下拉框。谢谢你的帮助。也很酷的视频。非常感谢!
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