Ваш блок With
содержит ссылку на объект Range
.
Вы можете использовать свойство .Cells
(без параметров), чтобы получить ссылку на этот Range
объект:
Set fittings(y) = .Cells
Или, чтобы было более ясно, что это диапазон из одной ячейки:
Set fittings(y) = .Cells(1, 1)
Это делает неявный вызов члена по умолчанию, который в конечном итоге оказывается эквивалентным:
Set fittings(y) = .Item(1, 1)
Это работает для Range
. Для многих других классов не существует свойства, которое возвращает ссылку на объект. Например, Collection
:
With New Collection
.Add 42
Set foo = ???? ' can't get a reference to the Collection object!
End With
Общее решение состоит в том, чтобы извлечь блочную переменную With
в локальную переменную, и теперь эта переменная доступна, как и любая другая локальная переменная:
Dim c As Collection
Set c = New Collection
With c
.Add 42
Set foo = c
End With
Для пользовательского класса, которым вы управляете, вы можете иметь метод получения свойства, который возвращает Me
:
Public Property Get Self() As Class1
Set Self = Me
End Property
И теперь переменная блока With
доступна через это свойство:
With New Class1
.Something = 42
Set foo = .Self
End With