我怎样才能使用一个macros命名一个范围(“B1:Bn”),其中'n'将来可能会增加

基本上我想命名一个范围(“B1:Bn”),以便我可以使用该名称作为组合Combobox来列出该范围的值,但是这里范围/列表可能会增加,所以我希望这个范围是透明的,所以应该有该范围的同名。 我已经写了一个代码如下:

 Private Sub ComboBox1_Change() Dim Total_Row As Integer Total_Row = Worksheets("Database").Range("B1").CurrentRegion.Rows.Count Range("B1:B11").Select 'Now I want something like `Range("B1:B***Total_Row***").Select` End sub 

或者我们可以让它dynamic使用下面的代码?

  ActiveWorkbook.Names.Add Name:="Testing", _ RefersToR1C1:="=Database!R2C2:R***(Total_Row)***C2" End Sub 

试试这个(不要忘了定义Worksheet_Name

 Private Sub ComboBox1_Change() Dim Total_Row As Integer Dim Pasted_Range As String Total_Row = Worksheets("Database").Range("B1").CurrentRegion.Rows.Count Pasted_Range = "=" & Worksheet_Name & "!R2C2:R" & Total_Row & "C2" ActiveWorkbook.Names.Add Name:="Testing", RefersToR1C1:=Pasted_Range End Sub 

检查这个更多的信息: 复制范围到另一个工作表,并从input框中插入名称与此副本

以下是你想要的吗? 我提到第二栏

 Range(Cells(1,2), Cells(Total_Row, 2)).Select 

范围参数是string,所以你只需要连接它作为string

 Range("B1:B" & Total_Row).Select 

和下面一样

 RefersToR1C1:="=Database!R2C2:R" & Total_Row & "C2"