我有几个可能需要排序的范围。我想使用从下拉列表中选择的范围名称来选择和排序该范围:
Sub Sorts()
Dim Wb As Workbook
Dim Ws1 As Worksheet
Dim rng As String
Set Wb = ThisWorkbook
Set Ws1 = ThisWorkbook.Sheets("Products")
Set rng = Ws1.Range("G76").Value
Ws1.Range("rng").Sort Range("rng").Cells(1, 1)
End Sub
宏停在St rng .......需要对象
答案 0 :(得分:1)
除了细节之外,您的代码还可以。 正确的代码应该是这一行:
Ws1.Range(rng).Sort Range(rng).Cells(1, 1)
这是由于变量和字符串之间的差异。您的rng
是字符串类型的变量;这意味着它是一个字符串,但它包含一个特定的value
,你在这里“几乎”正确引用了这个字符串:
Set
关键字:
rng = Ws1.Range("G76").Value
但是,如果您使用引号rng
传递变量""
,VBA将会理解必须查找名为rng
的范围;显然,它不存在,所以你得到一个对象未设置错误。