2016-06-29 11 views
0

Какой тип данных является ссылкой на ячейку Excel? Я построил строки, представляющие ссылки на ячейки (например, «G12», «AW12» и т. Д.) И хочу использовать их для создания именованных диапазонов;Какой тип данных является ссылкой на ячейку Excel (VBA)?

Dim UpperLeftHandCornerOfRangeCellReference As String 
UpperLeftHandCornerOfRangeCellReference = "G12" 
Dim LowerRightHandCornerOfRangeCellReference As String  
LowerRightHandCornerOfRangeCellReference = "AW12" 
NamedSheet.Names.Add _ 
      name:=RangeName, _ 
      RefersTo:="=Sheet!UpperLeftHandCornerOfRangeCellReference:LowerRightHandCornerOfRangeCellReference" 

, но они не интерпретируются как ссылки на ячейки, а имена соответствующих строк, и именованный диапазон, таким образом, не создается. Есть идеи? Поделись, пожалуйста. Благодаря!

Update:

Спасибо @MattCremeens за вашу помощь.

Рассмотрите, если был предстоит выполнить этот путь;

Dim myCell1 As String 
myCell1 = "G12" 
Dim myCell2 As String 
myCell2 = "AW12" 
NamedSheet.Names.Add _ 
      name:=RangeName, _ 
      RefersTo:="=Sheet!myCell1:myCell2" 

таких не будет работать, потому что цитаты в параметре «» RefersTo не позволяют строковые переменные «myCell (1/2)», который будет прочитан. Есть ли способ исправить это?

+0

Это диапазон. Таким образом, вы можете использовать 'Dim myCell as Range'. –

+0

Hi @MattCremeens --- Вы имеете в виду, что строки можно переназначить как диапазоны? Спасибо за вашу помощь. – PBG

+0

Вы можете добавить строку, представляющую ссылку на ячейку, в качестве параметра для параметра «Диапазон (...)». См. Мой ответ ниже. –

ответ

2

То, что я думаю, что вы смысл сделать

Dim UpperLeftHandCornerOfRangeCellReference As Range  
Set UpperLeftHandCornerOfRangeCellReference = Range("G12") 

Необходимо использовать Set ключевое слово при назначении диапазонов переменных.

Если вы хотите сохранить вашу строку как

myCell = "G12" 

затем просто изменить 2-й строки выше

Set UpperLeftHandCornerOfRangeCellReference = Range(myCell) 

Теперь, если у вас есть клетки, который был назван диапазон (возможно, это то, что вы имеете в виду, что ссылка на ячейку является строкой?), вы можете сделать это вместо этого

Set UpperLeftHandCornerOfRangeCellReference = Worksheets("Sheet1").Names("MyRangeName").RefersToRange 
+0

Если «G12» сам по себе является строкой, будет ли это работать? Спасибо за вашу помощь. – PBG

+0

Не уверен, что вы имеете в виду. «G12» действительно является самой строкой. –

+0

Если вместо «G12», я передаю строчную переменную, равную «G12», в диапазон (т. Е. Диапазон (CellReferenceAsString)). – PBG