Мне нужно считывать и хранить (ну, например, в словаре) набор свойств объекта (например, Range). Свойств много (с десяток). Не хотелось бы тупо в программе считывать и записывать их по одному. Удобно было бы пройтись циклом по стринг-массиву с именами требуемых свойств и считать их значения. Вот, например, функция, возвращающая массив некоторых свойств диапазона: [vba]
Код
Function GetRngProps(rRng As Range) Dim Arr(), iArr Arr = Array("Address", "AllowEdit", "Name", "Left", "Width", "Top", "Height") With CreateObject("Scripting.Dictionary") For Each iArr In Arr .Item(iArr) = rRng.iArr 'так не пройдёт, т.к. не верное обращение к объекту: rRng.iArr Next iArr GetRngProps = .Items End With End Function
[/vba] точно также не пройдёт и обращение .Item(iArr) = rRng(iArr) , т.к. это не коллекция...
P.S. Range и именно такой набор свойств взят для примера. Объект и свойства могут быть другими. Тут вопрос именно об альтернативном синтаксисе обращения к объектам. Т.е. не через точку, а через имя свойства.
Мне нужно считывать и хранить (ну, например, в словаре) набор свойств объекта (например, Range). Свойств много (с десяток). Не хотелось бы тупо в программе считывать и записывать их по одному. Удобно было бы пройтись циклом по стринг-массиву с именами требуемых свойств и считать их значения. Вот, например, функция, возвращающая массив некоторых свойств диапазона: [vba]
Код
Function GetRngProps(rRng As Range) Dim Arr(), iArr Arr = Array("Address", "AllowEdit", "Name", "Left", "Width", "Top", "Height") With CreateObject("Scripting.Dictionary") For Each iArr In Arr .Item(iArr) = rRng.iArr 'так не пройдёт, т.к. не верное обращение к объекту: rRng.iArr Next iArr GetRngProps = .Items End With End Function
[/vba] точно также не пройдёт и обращение .Item(iArr) = rRng(iArr) , т.к. это не коллекция...
P.S. Range и именно такой набор свойств взят для примера. Объект и свойства могут быть другими. Тут вопрос именно об альтернативном синтаксисе обращения к объектам. Т.е. не через точку, а через имя свойства.Alex_ST
Леш, думаю, тебе нужно будет объявлять пользовательский тип как то: Public Type SPdata SPfam As String SPname As String SPfath As String SPdate As Date SPrab As Date End Type потом присваивать ему значения, и только потом извлекать их В общем гемор суппозитории не стоит.
Леш, думаю, тебе нужно будет объявлять пользовательский тип как то: Public Type SPdata SPfam As String SPname As String SPfath As String SPdate As Date SPrab As Date End Type потом присваивать ему значения, и только потом извлекать их В общем гемор суппозитории не стоит.KuklP
Ну с НДС и мы чего-то стoим! kuklp60@gmail.com WM Z206653985942, R334086032478, U238399322728
Спасибо, Серёга. Обидно. Так красиво было бы свойства объекта Font запоминать... (ну, ты, наверное, понял, откуда мой вопрос всплыл ) Придётся делать в лоб. Прямым указанием каждого свойства в коде...
Спасибо, Серёга. Обидно. Так красиво было бы свойства объекта Font запоминать... (ну, ты, наверное, понял, откуда мой вопрос всплыл ) Придётся делать в лоб. Прямым указанием каждого свойства в коде...Alex_ST