Как использовать косвенную функцию в VBA в моем коде? - PullRequest
0 голосов
/ 10 июля 2019

Мне нужно использовать косвенную функцию в VBA.Я хочу, чтобы косвенные ячейки C15 или C14 и C15, если это возможно.

C14 отображает имя листа: Data1 C15 отображает диапазон: J3: J45999

Это должно следовать той же концепции, что и косвенная функция в excel: = косвенная (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 ]

1 голос
/ 10 июля 2019

Нет необходимости использовать косвенный в коде, вы можете просто явно сослаться на содержимое ячейки

Set xRng = Worksheets("Data1").Range(Worksheets("Data1").Range("c15").text)

Однако ваш код использует сочетание явных ссылок на листы (рабочий лист ("data1"), неявных ссылок (диапазон ("B21") будет использовать любой лист, активный в данный момент) и ссылок на объект activesheet. Я предлагаю вам явно укажите, какой лист вы имеете в виду в каждой точке.

0 голосов
/ 10 июля 2019

Я сделал это :) Использовал следующий код:

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
...