1

我有以下代码

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)不选择工作表的情况下使用?

4

2 回答 2

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
于 2013-05-01T08:57:21.157 回答
-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 更好,但如果您为了完成某件事而快速编写代码,那么这是一行。

于 2013-08-23T21:40:19.710 回答