我需要在VBA中使用间接功能。我想间接调用单元格C15或C14和C15(如果可能)。
C14显示工作表名称:Data1 C15显示范围:J3:J45999
这应该遵循与excel中的间接函数相同的概念: = indirect(C14&“!”&C15)
Private Sub Unique_Click()
Dim xRng As Range
Dim xLastRow As Long
Dim xLastRow2 As Long
Dim I As Integer
On Error Resume Next
Set xRng = Worksheets("Data1").Range([indirect("c15")]).Select
If xRng Is Nothing Then Exit Sub
On Error Resume Next
xRng.Copy Range("B21")
xLastRow = xRng.Rows.Count + 1
ActiveSheet.Range("B21:B" & xLastRow).RemoveDuplicates Columns:=1, Header:=xlNo
End Sub
答案 0 :(得分:1)
无需在代码中使用间接,只需显式引用单元格的内容即可
Set xRng = Worksheets("Data1").Range(Worksheets("Data1").Range("c15").text)
但是,您的代码混合使用了显式工作表引用(Worksheet(“ data1”),隐式引用(range(“ B21”)将使用当时处于活动状态的工作表)和对activesheet对象的引用。我建议您明确指定您要指的是哪张纸。
答案 1 :(得分:0)
我做到了:)使用了以下代码:
Private Sub Unique_Click()
Dim xRng As Range
Dim xLastRow As Long
Dim xLastRow2 As Long
Dim I As Integer
On Error Resume Next
Set xRng = Worksheets("Data1").Range(Range("C15"))
If xRng Is Nothing Then Exit Sub
On Error Resume Next
xRng.Copy Range("B21")
xLastRow = xRng.Rows.Count + 1
ActiveSheet.Range("B21:B" & xLastRow).RemoveDuplicates Columns:=1, Header:=xlNo
End Sub