Vba 初始化组合框失败

Vba 初始化组合框失败,vba,excel,user-controls,Vba,Excel,User Controls,“我的工作表”包含一个下拉组合框,当您选择一个团队时,工作表将更新到该团队。到目前为止,我所做的一切工作都非常完美,除了在不进入VBA并手动触发初始化事件的情况下,我所做的任何事情都不会初始化组合框。我不熟悉在常规工作表上使用这些,而且我觉得为一个选择创建用户表单并不明智 Public Sub Workbook_Open() Dim akw As Worksheet Dim akd As Worksheet Set akw = Worksheets("Agent

“我的工作表”包含一个下拉组合框,当您选择一个团队时,工作表将更新到该团队。到目前为止,我所做的一切工作都非常完美,除了在不进入VBA并手动触发初始化事件的情况下,我所做的任何事情都不会初始化组合框。我不熟悉在常规工作表上使用这些,而且我觉得为一个选择创建用户表单并不明智

    Public Sub Workbook_Open()
    Dim akw As Worksheet
    Dim akd As Worksheet
    Set akw = Worksheets("Agent KPI Per Week")
    Set akd = Worksheets("Agent KPI Per Day")
    On Error Resume Next
    With akw.OLEObjects("PWTeamSelect").Object
        .Clear
        .AddItem "01 XT"
        .AddItem "02 XT"
        .AddItem "03 XT"
        .AddItem "04 XT"
        .AddItem "05 XT"
        .AddItem "06 XT"
        .AddItem "07 XT"
        .AddItem "08 XT"
        .AddItem "09 XT"
        .AddItem "10 XT"
        .AddItem "11 XT"
        .AddItem "12 XT"
        .AddItem "13 XT"
        .AddItem "14 XT"
        .AddItem "15 XT"
        .AddItem "t01 XT"
        .AddItem "t02 XT"
        .AddItem "t03 XT"
        .AddItem "t04 XT"
    End With

    With akd.OLEObjects("PDTeamSelect").Object
        .Clear
        .AddItem "01 XT"
        .AddItem "02 XT"
        .AddItem "03 XT"
        .AddItem "04 XT"
        .AddItem "05 XT"
        .AddItem "06 XT"
        .AddItem "07 XT"
        .AddItem "08 XT"
        .AddItem "09 XT"
        .AddItem "10 XT"
        .AddItem "11 XT"
        .AddItem "12 XT"
        .AddItem "13 XT"
        .AddItem "14 XT"
        .AddItem "15 XT"
        .AddItem "t01 XT"
        .AddItem "t02 XT"
        .AddItem "t03 XT"
        .AddItem "t04 XT"
    End With
End Sub

这是我的Open_工作簿代码。

有两种类型的组合框可以添加到工作表中:表单控件(红色圆圈)或ActiveX(绿色圆圈)

根据您描述的行为,我认为您的代码和组合框不匹配

使用ActiveX组合,您编写的代码应该可以工作(我完全按照您编写的方式复制了它,并填充了组合框)。只要使用ActiveX选项(绿色圆圈)创建新的组合框,正确命名它们,我认为您的代码就能工作

如果要保留已创建的组合框并修改代码,请将第一行替换为
Shapes
引用,如图所示,填充应该可以工作。请注意,我已经删除了
.Clear
语句,该语句将在此上下文中引发错误:

With akw.Shapes("PWTeamSelect").ControlFormat
    .AddItem "01 XT"
    .AddItem "02 XT"
    .AddItem "03 XT"
    .AddItem "04 XT"
    .AddItem "05 XT"
    .AddItem "06 XT"
    .AddItem "07 XT"
    .AddItem "08 XT"
    .AddItem "09 XT"
    .AddItem "10 XT"
    .AddItem "11 XT"
    .AddItem "12 XT"
    .AddItem "13 XT"
    .AddItem "14 XT"
    .AddItem "15 XT"
    .AddItem "t01 XT"
    .AddItem "t02 XT"
    .AddItem "t03 XT"
    .AddItem "t04 XT"
End With 

首先我必须道歉,正如我在第一个问题中提到的,这确实是我第一次尝试这样做。我没有意识到的是,代码需要在Excel对象中:ThisWorbook(模块)。我将代码放置在各个工作表的对象上。这就是把我搞砸的原因

一旦我把代码复制到那个对象上,它就工作得很好。在我所做的所有研究中,我没有看到任何人提到这本手册,当我读到Chrismas007的回答时,当他特别询问这本手册中是否有这本手册时,我也没有把二和二放在一起

谢谢你的帮助


G

当用户从组合框中选择一个项目时,您是否在寻找“更改时”事件?否,我希望加载此工作簿并能够单击下拉框。现在,当它发生时,会发生两种情况之一,这取决于书的保存方式。1.组合框的值是我保存的值,或者两个,我手动初始化它们,它们是空的。在任何一种情况下,当我重新加载工作簿时,都没有可供选择的选项,我希望有:/Remove the
On Error
行发生了什么?什么也没有发生。这就是lol的问题所在。不管是否存在“错误”,或者它是公共的、私有的,实际上加载时什么都不会发生。我可以从代码中手动触发初始化,但它自己不会这样做。子文件存储在哪里?我删除了CB只是为了确保这一点,并创建了一个新的。仍然有同样的问题。如果我手动触发公共子触发器()或公共子工作簿_Open(),CB将填充。-可以肯定的是,这些代码应该放在工作表上,是吗?因为它是存储在该工作表上的ActiveX组件?