【问题标题】:Combo box VBA Excel组合框 VBA Excel
【发布时间】:2014-06-30 12:27:02
【问题描述】:

我使用了大约 8-10 个组合框(表单控件),每个组合框都填充了相同的项目列表。根据用户从下拉列表中的选择,某个值会显示在不同的单元格中。我想知道是否有办法在不使用循环(用于下拉菜单)的情况下做到这一点,因为它们都具有相同的功能。这是我正在使用的代码:

Dim ws As Sheets
Set ws = ThisWorkbook.Sheets(Array("S1 Fuel Consumption", "EF_Stat", "Summary"))
Dim i As Integer


For i = 1 To 8
With ws(1).Shapes("Fuel " & i).ControlFormat    ~~> 'This is the loop I'm talking about(for 8 shapes)

Select Case .ListIndex

Case 1
ws(3).Range("B" & i).Value = Empty
Case 2
ws(3).Range("B" & i).Value = ws(2).Range("B4").Value
Case 3
ws(3).Range("B" & i).Value = ws(2).Range("C4").Value
Case 4
ws(3).Range("B" & i).Value = ws(2).Range("D4").Value

End Select
End With
Next i

【问题讨论】:

  • 从你的问题中我不确定你到底在问什么?您是否尝试在没有循环的情况下填充组合框?您的代码中没有循环。
  • 我有 8-10 个已经填充的组合框。在代码中,您会看到一个循环“for i = 1 to 8.....shapes("fuel" & i)"..

标签: vba excel


【解决方案1】:

将相同的宏分配给所有组合框并使用:

With WS(1).Dropdowns(Application.Caller)

获取对触发宏的组合框的引用。

如果您需要找出最初在循环中使用的 'i' 值,您可以执行以下操作:

Dim ws As Sheets
Dim sCaller As String
Dim i As Integer
Dim rgOutput As Range

Set ws = ThisWorkbook.Sheets(Array("S1 Fuel Consumption", "EF_Stat", "Summary"))

sCaller = Application.Caller

Set rgOutput = ws(3).Range("B" & Replace(sCaller, "Fuel ", ""))

Select Case ws(1).DropDowns(sCaller).ListIndex

    Case 1
        rgOutput.Value = vbNullString
    Case 2
        rgOutput.Value = ws(2).Range("B4").Value
    Case 3
        rgOutput.Value = ws(2).Range("C4").Value
    Case 4
        rgOutput.Value = ws(2).Range("D4").Value

End Select

【讨论】:

  • 这个引用是否也能够为不同组合框之间的选择存储单独的值?如果之前不清楚,我很抱歉。正如您在代码中看到的那样,根据从下拉列表中选择的项目说“燃料 1”(下拉列表),显示一个值 { Range("B4").value}
  • 范围是如何确定的?
  • 每个值都应该存储在不同的单元格中。就像假设有 4 个组合框,有“这个”“那个”和“那里”选项。现在说,对于第一个组合框,如果选项是“this”,则值“0.1”将存储在 B1 单元格中。对于第二个组合框,如果选项是“那个”,0.2 将存储在 B2 中
  • 我尝试将您的代码用于其他目的 => 来填充我的下拉列表。但它说“无法获得工作表类的下拉属性”:/
  • 仍然不清楚代码应该如何确定去哪里。如果您需要获取您原来拥有的相关i值,您可以使用CLng(replace(application.Caller, "Fuel ", ""))
猜你喜欢
  • 2019-06-08
  • 1970-01-01
  • 1970-01-01
  • 2013-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多