我有以下代码
Set wb = ThisWorkbook`
ComboBox7.RowSource = wb.Worksheets("Sheet5").Range("A2", _
Range("A65536").End(xlUp)).Address
如果我没有在此行之前放置wb.Sheets("Sheet5").Select
,则此代码会抛出错误
"Application defined or object-defined error"
我希望此代码能够在不选择Sheet5的情况下工作。
如果我放ComboBox7.RowSource = wb.Worksheets("Sheet5").Range("A2:A7").Address
,那么它可以正常工作而不选择sheet5。
有没有办法在不选择表单的情况下使用End(xlUp)
?
答案 0 :(得分:5)
是的,这是可能的。
逻辑:找到最后一行,然后使用它创建一个可以分配给组合框的范围。
这是你在尝试的吗?
Private Sub CommandButton1_Click()
Dim wb As Workbook
Dim ws As Worksheet
Dim lRow As Long
Dim rng As Range
Set wb = ThisWorkbook
Set ws = wb.Sheets("Sheet5")
With ws
lRow = .Range("A" & .Rows.Count).End(xlUp).Row
Set rng = .Range("A1:A" & lRow)
End With
ComboBox5.RowSource = rng.Address
End Sub
答案 1 :(得分:-1)
另一件事就是在一行中做到这一点
Private Sub CommandButton1_Click()
Set wb = ThisWorkbook
Set ws = wb.sheets("sheets5")
ComboBox7.RowSource = ws.Range("A2", ws.Range("A65536").End(xlUp)).Address
第二个范围认为它是在活动工作表中工作,否则你需要告诉它。
使用With更好,但如果您为了完成某项工作而快速编写代码,则这是一行。