如何在我的代码中使用VBA中的间接函数?

时间:2019-07-10 10:54:26

标签: excel vba excel-indirect

我需要在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

2 个答案:

答案 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