powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / как изменить значение из колеекции
5 сообщений из 5, страница 1 из 1
как изменить значение из колеекции
    #36364088
Mozok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет.
Возникла надобность поскриптовать на ВБА для Экселя, натолкнулся моментально на непонятные моменты.
Суть в том, что необходимо построить что-то наподобии древовидной структуры, где листами будут числа. Доступ к каждой следующей ветви происходит по текстовому ключу. Реализовал это следующим образом:
1) рутовая коллекция, каждым элементом которой является коллекция ветвей. Ключами служат названия ветвей;
2) коллекция ветви, каждым элементом которой служит некое число, а ключом - название этого элемента.
И вот возникла потребность прибавить единичку к уже записанному в коллекцию числу. Кто подскажет, как это можно сделать (и можно ли вообще).
--------------
Festina lente
...
Рейтинг: 0 / 0
как изменить значение из колеекции
    #36364511
Mozok,

Файл Leaf.cls, вставлять в VBA-проект через меню File, Import File... :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
VERSION  1 . 0  CLASS
BEGIN
  MultiUse = - 1   'True
  Persistable =  0   'NotPersistable
  DataBindingBehavior =  0   'vbNone
  DataSourceBehavior  =  0   'vbNone
  MTSTransactionMode  =  0   'NotAnMTSObject
END
Attribute VB_Name = "Leaf"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
Option Explicit

Public Value As Double
Attribute Value.VB_VarUserMemId =  0 
Проверка:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Public Sub Test()
 Dim c As Collection
 Set c = New Collection
 c.Add New Leaf, "L1"
 c.Add New Leaf, "L2"
 Debug.Print c( 1 ), c("L2") 'напечатает 0      0
 c( 1 ) = c( 1 ) +  1 
 c("L2") =  2 
 Debug.Print c( 1 ), c("L2") 'напечатает 1      2
End Sub
...
Рейтинг: 0 / 0
как изменить значение из колеекции
    #36364657
Mozok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13-й квартал,

Ого, спасибо огромное. А можно какую-нибудь ссылку на FAQ по написанию этих самых CLS-файлов?
Я так понимаю, это описание классового модуля.
...
Рейтинг: 0 / 0
как изменить значение из колеекции
    #36365991
Mozok,

пожалуйста. Да, это модуль класса. Он на самом деле очень короткий, если посмотрите в редакторе VBA - две строки, и то первая необязательна (но желательна, этакая ритуальная фраза). Маленькое шаманство со вставкой через импорт понадобилось для того, чтобы обойти ограничение редактора VBA относительно редактора VB: невозможность назначения некоторых атрибутов процедуре/члену. В данном случае член у класса один, Value, и ему выставлен атрибут "по умолчанию". Это позволяет не писать каждый раз c(индекс).Value, а просто c(индекс).
Где найти FAQ честно говоря не знаю, попробуйте найти на firststeps.ru, или родную MS-овскую документацию по данному вопросу для VB.
...
Рейтинг: 0 / 0
как изменить значение из колеекции
    #36366265
Mozok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13-й квартал,

спасибо.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / как изменить значение из колеекции
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]