初始化ComboBox失败

时间:2014-12-31 14:31:02

标签: vba excel-vba user-controls excel

我的工作表包含一个应该下拉的组合框,您选择一个团队并且工作表更新到该团队。到目前为止我所做的一切都完美无缺,除了我没有做任何事情而没有进入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_Workbook代码。

2 个答案:

答案 0 :(得分:0)

您可以将两种类型的组合框添加到工作表中:Form Control(以红色圈出)或ActiveX(以绿色圈出)。

Combo Box options called out

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

使用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 

答案 1 :(得分:0)

首先,我必须道歉,正如我在第一个问题中所提到的,这是我第一次尝试这样做。我没有意识到代码需要在Excel对象中:ThisWorbook(Module)。我将代码放在Object的各个工作表上。这让我很烦恼。

一旦我将代码复制到该对象,它就可以正常工作了。在我所做的所有研究中,我没有看到任何人提到过ThisWorkbook,当我在阅读Chrismas007的回复时,当他明确询问是否在ThisWorkbook中时,我并没有将两个和两个放在一起。

感谢您的帮助......