Точечная переменная VBA для диапазона - PullRequest
0 голосов
/ 16 июля 2009

Я хочу указать на ячейку как диапазон в VBA. Я пытался использовать:

         Dim range
         range = Sheet("sheet").Range("A1")

Но это просто возвращает значение в диапазоне. Что мне действительно нужно, так это объект диапазона, чтобы я мог им манипулировать, например, установив range.Value = "Hello"

Есть идеи?

1 Ответ

4 голосов
/ 16 июля 2009

Во-первых, я настоятельно рекомендую сделать явное объявление переменных в вашем коде обязательным. Перейдите к Инструменты - Параметры , в вкладке Редактор отметьте "Требуется объявление переменной" или введите Option Explicit в первой строке всех ваших сценариев.

Во-вторых, я думаю, что в вашем коде есть небольшая опечатка, она должна быть Sheets.("sheet").

Чтобы ответить на ваш вопрос, с помощью range = Sheets("sheet").Range("A1") вы присваиваете переменную-значение, а не объект. Поэтому переменная по умолчанию объекта диапазона присваивается неявно, что составляет value. Чтобы назначить объект, используйте ключевое слово Set. Мой полный пример кода выглядит так:

Option Explicit

Public Sub Test()
    Dim RangeObject As range
    Set RangeObject = Sheets("Sheet1").range("A1")    
    RangeObject.Value = "MyTestString"
End Sub

Это должно поместить текст «MyTestString» в ячейку A1.

Редактировать: Если вы используете именованные диапазоны, попробуйте RangeObject.Value2 вместо RangeObject.Value. Именованные диапазоны не имеют свойства Value.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...