在VBA中为每个语句编写更快捷的方法

met*_*lah 4 excel vba

我正在编写VBA代码来填充具有相同数据的三个不同的组合框.我只是想知道是否有一种更有效的方式来编写它然后我现在在做什么?

' Create fac1 cbo
For Each c_fac In ws_misc.Range("fac")
    With Me.cbo_fac1
    .AddItem c_fac.Value
    .List(.ListCount - 1, 1) = c_fac.Offset(0, 1).Value
    End With
Next c_fac

' Create fac2 cbo
For Each c_fac In ws_misc.Range("fac")
    With Me.cbo_fac2
    .AddItem c_fac.Value
    .List(.ListCount - 1, 1) = c_fac.Offset(0, 1).Value
    End With
Next c_fac

' Create fac3 cbo
For Each c_fac In ws_misc.Range("fac")
    With Me.cbo_fac3
    .AddItem c_fac.Value
    .List(.ListCount - 1, 1) = c_fac.Offset(0, 1).Value
    End With
Next c_fac
Run Code Online (Sandbox Code Playgroud)

感谢您抽出宝贵的时间!

nut*_*sch 8

更进一步,可能:

dim lLoop as long
' Create fac1 cbo
For Each c_fac In ws_misc.Range("fac")
    For lLoop=1 to 3
        Me.controls("cbo_fac" & lLoop).AddItem c_fac.Value
        Me.controls("cbo_fac" & lLoop).List(Me.controls("cbo_fac" & lLoop).ListCount - 1, 1) = c_fac.Offset(0, 1).Value
    next lLoop
Next c_fac
Run Code Online (Sandbox Code Playgroud)

  • 很好,但为什么不将范围值分配给组合框列表?Additem非常慢 (2认同)