2015-02-12 2 views
2

Я пытаюсь определить именованный диапазон (с областью рабочей книги) в VBA на основе определенных входных данных, чтобы помочь выяснить ячейки, которые должны быть включены в диапазон. Чтобы сделать это очень простым, я пробовал следующие два с ошибками, указанными ниже. A, B, X, Y определяются из некоторых расчетовУстановить диапазон и определить именованный диапазон в VBA

rName = <some string that decides the name> 
Set TempRng = .Range(.Cells(A,B), .Cells(X,Y)) 
ActiveWorkbook.Names.Add Name:=rName, RefersTo:=Worksheets("Sheet1").TempRng 

Это дает мне «объект или метод не поддерживается» ошибка или что-то подобное, на линии Set TempRng.

rName = <string ...> 
Set TempRng = Worksheets("Sheet1").Range(Cells(A,B), Cells(X,Y)) 
ActiveWorkbook.Names.Add Name:=rName, RefersTo:= <blah blah...> 

Это дает мне «определенную или определенную объектом ошибку» в той же строке.

Не могли бы вы помочь мне найти правильный способ определения этого диапазона?

ответ

1

Использование: ""

Refersto:="=" & TempRng.Address 

Или более непосредственно (как говорит L42)

TempRng.Name = stName 

Чтобы установить диапазон убедитесь, что вы включили "С", прежде чем начать ИНГ вещи

With wsWhatever 
    Set TempRng = .Range(.Cells(A,B), .Cells(X,Y)) 
end with 
+0

Второй код является правильным. Тем не менее я бы дал свой голос. – L42

+0

Я попробую это, как только я пройду линию Set TempRng. Можете ли вы рассказать мне, как я должен установить диапазон (я имею в виду степень)? – Jabberwocky

+0

Ой, попробуйте явные ссылки на ячейки, как вы делали выше, т.е. Установить TempRng = Рабочие листы («Лист1»). Диапазон (Рабочие листы («Лист1»). Ячейки (A, B), Рабочие листы («Лист1»). Ячейки (X, Y)) Или просто: С рабочими листами («Лист1»). set TempRng = .Range (.Cells (a, b). Ячейки (b, c)) Возможно, вы оставили «С» в верхней части и оставили объект Worksheet для второго? – Simon

2

Я думаю, что это немного более прямолинейно.

TempRng.Name = rname 

Или вы даже можете напрямую назначить имя без использования переменной.

TempRng.Name = "myrangename" 

Объем названия Workbook только в том случае, имеет решающее значение для ваших нужд. НТН.

+0

Не понимаю. Я не думаю, что есть проблема с назначением имени. В обоих случаях, когда я отлаживаю, я получаю сообщение об ошибке в строке Set TempRng. – Jabberwocky

+0

о, хороший! uped – Simon

+0

Да, простите, я пропустил ваш пост (где вы четко сказали, что это были «установленные» линии, которые терпели неудачу). См. Мой отредактированный/пересмотренный ответ выше: – Simon

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