excel vba组合框?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (201)

我想使用VBA填充一个组合框,其中包含来自另一个工作表的行(不是列)的内容。如果我将List分配给行的范围,我只看到第一个值,所以我想excel坚持要有一列范围。所以,我正在尝试添加项目:

Private Sub ComboBox2_GotFocus()

 Dim i As Integer
 Dim myArray As Variant

 myArray = Worksheets("data").Range("A4:PB4").Value

 For i = LBound(myArray) To UBound(myArray)
  Me.ComboBox2.AddItem myArray(i)
 Next

End Sub

两个问题。我不认为这是一个数组,它是一个范围。并且,如果我使用add,我需要每次都清除它,但不知何故在同一例程中使用ComboBox2.Clear即使在加载后也会清除它?所以没有出现:(

有什么想法?

提问于
用户回答回答于

您可能希望避免此处的数组声明,只使用您正在使用的东西的本机格式(范围)。clear在填充组合框之前调用该方法似乎对我来说很好。它清除然后重新填充。?

Private Sub Worksheet_Activate()
 Dim i As Integer
 Dim myRange As Range
 ComboBox1.Clear
 Set myRange = Worksheets("data").Range("A4:PB4")
 Dim c As Range
 For Each c In myRange 
  Me.ComboBox1.AddItem c.Value
 Next
End Sub
用户回答回答于

你犯的唯一错误就是没有转置和改变myArray来输入'Range'

    myArray = WorksheetFunction.Transpose(Worksheets("data").Range("A4:PB4"))
     For each cell in myArray
     Me.combobox2.additem(cell)
    Next

扫码关注云+社区

领取腾讯云代金券