Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Как привязать экземпляр класса к имени листа - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Как привязать экземпляр класса к имени листа
RAN Дата: Среда, 16.05.2012, 12:35 | Сообщение № 1
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Приветствую!
Создаю для книги несколько экземпляров класса (словарей).
Не могу сообразить, как привязать каждый из словарей к своему листу (имени листа), для которого он был создан?
По индексу не подходит, т.к. порядок создания словарей произвольный, да и перемещение листа блокировать не хочется.
К сообщению приложен файл: 3029954.xls (38.5 Kb)


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеПриветствую!
Создаю для книги несколько экземпляров класса (словарей).
Не могу сообразить, как привязать каждый из словарей к своему листу (имени листа), для которого он был создан?
По индексу не подходит, т.к. порядок создания словарей произвольный, да и перемещение листа блокировать не хочется.

Автор - RAN
Дата добавления - 16.05.2012 в 12:35
Саня Дата: Среда, 16.05.2012, 12:53 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 1068
Репутация: 560 ±
Замечаний: 0% ±

XL 2016
класс:
[vba]
Code
Public clsDict As Object
Public WSh As Worksheet   '<====================

Private Sub Class_Initialize()
        Set clsDict = CreateObject("Scripting.Dictionary")
End Sub
[/vba]

модуль:[vba]
Code

Public obDict(1 To 2) As New clsDict
Sub qqq()
        For i = 1 To 2
            arr = Sheets(i).Range("A1:A10").Value
            For j = 1 To 10
                obDict(i).clsDict.Item(arr(j, 1)) = 1                    
            Next

            Set obDict(i).WSh = Sheets(i)     '<====================
        Next
End Sub
[/vba]
 
Ответить
Сообщениекласс:
[vba]
Code
Public clsDict As Object
Public WSh As Worksheet   '<====================

Private Sub Class_Initialize()
        Set clsDict = CreateObject("Scripting.Dictionary")
End Sub
[/vba]

модуль:[vba]
Code

Public obDict(1 To 2) As New clsDict
Sub qqq()
        For i = 1 To 2
            arr = Sheets(i).Range("A1:A10").Value
            For j = 1 To 10
                obDict(i).clsDict.Item(arr(j, 1)) = 1                    
            Next

            Set obDict(i).WSh = Sheets(i)     '<====================
        Next
End Sub
[/vba]

Автор - Саня
Дата добавления - 16.05.2012 в 12:53
RAN Дата: Среда, 16.05.2012, 13:57 | Сообщение № 3
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Привет, Саня!
Твой вариант меня в полный ступор загнал.
Что с ним делать?
В модуле листа1 мне понятно.
Изобрази свой в файле.
К сообщению приложен файл: 8917284.xls (48.0 Kb)


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеПривет, Саня!
Твой вариант меня в полный ступор загнал.
Что с ним делать?
В модуле листа1 мне понятно.
Изобрази свой в файле.

Автор - RAN
Дата добавления - 16.05.2012 в 13:57
Саня Дата: Среда, 16.05.2012, 16:48 | Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 1068
Репутация: 560 ±
Замечаний: 0% ±

XL 2016
Quote (RAN)
Твой вариант меня в полный ступор загнал.

словарь - это свойство класса
я добавил еще одно свойство - лист - для связки со словарем

Quote (RAN)
Изобрази свой в файле.

вот так например
К сообщению приложен файл: ran.xls (47.5 Kb)
 
Ответить
Сообщение
Quote (RAN)
Твой вариант меня в полный ступор загнал.

словарь - это свойство класса
я добавил еще одно свойство - лист - для связки со словарем

Quote (RAN)
Изобрази свой в файле.

вот так например

Автор - Саня
Дата добавления - 16.05.2012 в 16:48
nerv Дата: Среда, 16.05.2012, 16:56 | Сообщение № 5
Группа: Редакторы
Ранг: Обитатель
Сообщений: 431
Репутация: 193 ±
Замечаний: 0% ±

Quote (Саня)
словарь - это свойство класса

а я думал свойства могут быть только у объектов smile , а "модули классов" - конструктор этих самых объектов

[vba]
Code
' Class1: code

Public x
Public y

' Module1: code

Sub Example()
      Dim z As New Class1
      MsgBox VarType(z) = vbObject
      z.x = 1
End Sub
[/vba]


Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


YM 41001156540584 / WM WMR R21924176233

https://github.com/nervgh/vba


Сообщение отредактировал nerv - Среда, 16.05.2012, 17:09
 
Ответить
Сообщение
Quote (Саня)
словарь - это свойство класса

а я думал свойства могут быть только у объектов smile , а "модули классов" - конструктор этих самых объектов

[vba]
Code
' Class1: code

Public x
Public y

' Module1: code

Sub Example()
      Dim z As New Class1
      MsgBox VarType(z) = vbObject
      z.x = 1
End Sub
[/vba]

Автор - nerv
Дата добавления - 16.05.2012 в 16:56
Саня Дата: Среда, 16.05.2012, 18:18 | Сообщение № 6
Группа: Друзья
Ранг: Ветеран
Сообщений: 1068
Репутация: 560 ±
Замечаний: 0% ±

XL 2016
Quote (nerv)
а я думал свойства могут быть только у объектов

да, конечно.
класс как шаблон объекта свойствами не обладает, он описывает свойства своей будущей реализации - объекта...
 
Ответить
Сообщение
Quote (nerv)
а я думал свойства могут быть только у объектов

да, конечно.
класс как шаблон объекта свойствами не обладает, он описывает свойства своей будущей реализации - объекта...

Автор - Саня
Дата добавления - 16.05.2012 в 18:18
RAN Дата: Среда, 16.05.2012, 21:57 | Сообщение № 7
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Спасибо за все ответы!
Буду изучать/учиться!
На чем остановлюсь - не знаю.
Но будем учиться далее!


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеСпасибо за все ответы!
Буду изучать/учиться!
На чем остановлюсь - не знаю.
Но будем учиться далее!

Автор - RAN
Дата добавления - 16.05.2012 в 21:57
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!