从单元格的下拉列表中select命名范围

我有几个范围,可能需要sorting。 我想使用从下拉列表中select的范围名称来select和sorting该范围:

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 

macros停在St rng …….对象需要

你的代码是好的,除了一点细节。 正确的代码行应该是这样的:

 Ws1.Range(rng).Sort Range(rng).Cells(1, 1) 

这是由于variablesstring之间的区别。 你的rng是一个stringtypes的variables ; 这意味着它是一个string,但是它包含了一个特定的value ,您在这里已经“几乎”正确地引用了这个值(对于string,您不需要Set关键字:

 rng = Ws1.Range("G76").Value 

但是,如果将variablesrng用引号""传递,VBA就会明白必须查找名为rng的范围。 这显然不存在,所以你得到一个对象未​​设置的错误。