Excel VBA – 级联下拉菜单清除/重置

这是我的第一篇文章,我很激动。 另外有点强调,因为我需要很快find一个解决我的问题的工作,但是我们会到达那里。

所以,我想出了一个两张excel文件。 一个(“数据库”)有一个大约一百行我们项目的表格,其中一列是“地区”和“办公室”。 该地区是项目所在地,办公室是该地区内哪个办事处pipe理该项目。

第二个工作表(“dashboard2”)有一套使用复杂公式的指标。 两个下拉菜单(我曾经把它们称为表单控件combobox,但它似乎像Excel命名为“下拉1”和“下拉2”)允许用户select一个区域和办公室。 第二个下拉菜单已经根据第一个下拉菜单的值从已命名的范围中进行select。 这是伟大的。

现在,你可能会看到我要去的地方:除了当我改变区域时,“办公室”不会重置,这一切都可以正常工作。 更具体地说,如果我select该地区的第一个区域和第四个办事处,然后切换到第二个区域,那么我将为该地区的第四个办事处提供数据,而不是消隐第二个下拉菜单。

我不熟悉VBA,我已经尽了最大的努力去做所有事情。 但是,在这种情况下,感觉就像是必须的,我被困住了。 使用各种网站和教程,我有以下代码:

Private Sub DropDown1_Change() myVal = ThisWorkbook.Sheets("Dashboard2").DropDown1.Value 'loop thru col G of Database lr = ThisWorkbook.Sheets("Database").Cells(Rows.Count, 1).End(xlUp).Row 'clear combobox 2 ThisWorkbook.Sheets("Dashboard2").DropDown2.Clear 'loop thru For x = 10 To lr If myVal = ThisWorkbook.Sheets("Database").Cells(x, 8) Then 'add to combobox ThisWorkbook.Sheets("Dashboard2").DropDown2.AddItem ThisWorkbook.Sheets("Database").Cells(x, 7) End If Next x 

“7”和“8”是指我的第一张桌子的“办公室”和“地区”信息所在的G和H列。 “for”循环从10开始,因为这是第一个项目的行。 如果我没有弄错,上面的代码的目标是,在第一个下拉菜单的变化,在清除和重新填充第二个下拉菜单。

但是,我得到了第二个下拉菜单中没有信息,或者我得到一个运行时错误438“对象不支持此属性或方法”,我不知道该怎么办。 侧面的问题包括:“VBA代码是否应该在”microsoft excel对象“类别或”模块“类别的表单元素中? “这是正常的,我的下拉框似乎被称为Excel中的”下拉1“在Excel文档和”下拉1“在VBA编辑器?(我已经尝试使用类似Set d1 = ThisWorkbook.Sheets(” Dashboard2“)。DropDowns(”下拉1“),但无济于事)。

就是这样,伙计们,就是我所拥有的。 我全都听取build议。 提前感谢!