VBA Range выпущен - PullRequest
       5

VBA Range выпущен

0 голосов
/ 14 декабря 2018
Sub FormatRange()

Dim xName As Range

Set xName = Range("B3", Range("B2").End(xlDown))

Sheet2.Activate

xName.Font.Color = vbRed

xName.Font.Italic = True

End Sub

в приведенном выше коде я установил свой начальный диапазон в Sheet1.без ссылки на лист1.Даже после того, как я активировал sheet2.Форматирование применяется к диапазону sheet1.почему это возможно?почему он не был применен к sheet2?

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Решает ли это вашу проблему?(не проверено)

Set xName = ActiveSheet.Range("B3", ActiveSheet.Range("B2").End(xlDown))
0 голосов
/ 14 декабря 2018

Когда вы определяете диапазон и присваиваете его объекту диапазона, это относится к листу, который был активен в то время.Это красота этого.Таким образом, вам не нужно использовать .Select/.Activate для работы с объектом диапазона.

Дело в том, что вы смотрите только на Rng.Address.Чтобы увидеть полный адрес, попробуйте это

Sub Sample()
    Dim rng As Range

    Set rng = Range("A1")

    Debug.Print rng.Address(, , , True)
End Sub

Возможно, вы захотите прочитать о Свойство Range.Address (Excel)

PS :Как упомянуто в комментарии, .Parent.Name дал бы вам подсказку.Он показывает вам «родительский» лист этого диапазона:)

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