2017-01-31 5 views
1

У меня есть файл Excel с именем «Book1» с «Sheet1» и «Sheet2». В Sheet1 значение Cell A1 равно «'[Book1.xlsb] Sheet2'! $ A $ 14", которое получается как результат некоторой формулы. Я хочу, чтобы ссылка на ячейку, упомянутая в ячейке A1, выбиралась через VBA.Как передать ячейку другого листа, упомянутого в ячейке через VBA

Я поставил VB код, как

Range(Range("A1")).Select or Range([Indirect("A1")]).Select 

Этот код работает только тогда, когда клетка упоминается в А1 в одном листе, но она не работает, если ячейка называется в другом листе

Может кто-то помочь решить эту пожалуйста

ответ

0

вы можете сделать в любом случае из следующих:

With Worksheets("Sheet2") 
    .Activate 
    .Range([Indirect("Sheet1!A1")]).Select 
End With 

или

With Worksheets("Sheet2") 
    .Activate 
    .Range(Worksheets("Sheet1").Range("A1")).Select 
End With 
+0

БЛАГОДАРЯ много .. это работает ... :) –

+0

Добро пожаловать. Затем вы можете принять ответ. Спасибо! – user3598756

3

Так как оба рабочих листов («Лист1» и «Лист2») находятся в той же книге, значение в «Лист1» Cell A1 должно быть «Лист2! $ A $ 14».

Код ниже немного дольше, чем нужно, но я хотел бы пройти все шаги, чтобы лучше объяснить.

Я использую функцию Split, чтобы отделить имя Worksheet и Range.Address, и поместите результат в 2 элемента массива.

После этого вы извлекаете первый массив RngString в качестве имени рабочей таблицы, а затем вторым элементом массива является range.address.

Код

Option Explicit 

Sub SelectRange() 

Dim Rng As Range 
Dim RngString As Variant 
Dim ShtName As String 
Dim RngAddress As String 

RngString = Split(Worksheets("Sheet1").Range("A1").Value, "!") 

' sheet name is the first array element 
ShtName = RngString(0) 

' Range address is the second array element 
RngAddress = RngString(1) 

' setting the Rng object 
Set Rng = Worksheets(ShtName).Range(RngAddress) 

' since your range is in another worksheet, you need to activate it first 
Worksheets(ShtName).Activate 
' select the range 
Rng.Select 

End Sub 
Смежные вопросы