powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Элементы управления ActiveX на рабочем листе Excel
21 сообщений из 21, страница 1 из 1
Элементы управления ActiveX на рабочем листе Excel
    #38062080
Nika.dn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемые форумчане!
Мне нужна именно Ваша помощь, т.к. многие из Вас сталкиваются с программированием
Объясняю все по порядку:
В моем проекте Excel есть лист, на котором хранятся справочники с той или иной информацией. Их несколько и структура у них разная.
Например, в справочниках городов и улиц есть только код и наименование; в справочниках сотрудников и поставщиков - код, имя фамилия, адрес и куча другой информации, ну и т. д.
Эти справочники находятся на одном листе(!), каждый в виде таблицы (ListObject), которая динамически создается и заполняется из БД Access при вызове того или иного справочника. Вызов справочника осуществляется по ссылке, а сами ссылки - в столбце А. Но это только прелюдия.
Главная причина, по которой я к Вам обращаюсь - это контролы
Каждый справочник требует своей обработки (добавления, редактирования, удаления, поиска записей). В моем проекте это реализовано прямо на листе - сверху таблицы-справочника находятся контролы (элементы управления ActiveX), которые соответствуют полям текущего справочника. Но так как справочники различны по структуре, то и количество полей в них различное, а значит контролы тоже динамически должны убираться и появляться на нужном месте при вызове нужного справочника.
Моя просьба о помощи заключается в следующем: я не знаю как работать с группой однотипных контролов, создавать их посредством VBA на рабочем листе, а не на форме (пока только они созданы криво - при помощи команды Вставить на вкладке Разработчик) . Но это мне не совсем подходит, потому что не получается универсальности. Например, количество контролов типа "Label" должно создаваться именно по количеству столбцов таблицы-справочника, а Caption у них соответственно - это название столбца-поля
Затем другая проблема: Каждому "Lable" соответствует свой контрол с информацией изтекущей строки таблицы - где-то нужно создать поле, а где-то - выпадающий список. Например, календарь или флажок создать можно основываясь на формате определенного столбца таблицы (если в столбце таблицы хранится дата, то напротив соответствующего "Label" создается календарь). А различить поле или выпадающий список можно только связями между таблицами в БД (например в справочнике Товары есть подстановка категории из справочника КатегорийТовара), однако в таблице Excel этих связей и подстановок не видно - в этом-то и проблема.

У Вас наверное возникнет вопрос, а погуглить? Я ищу эту информацию довольно долго и ничего подходящего толком пока не нашла. "Рою носом, грызу гранит..." в книгах, но ничего подходящего пока нет ни на форумах, ни у Уокенбаха. Есть обработка группы, но на форме. А у меня НА ЛИСТЕ.
Я % на 30 знаю Excel, а уж о VBA и говорить стыдно но я учусь и развиваюсь. (Оффтоп) . Так вот, на одном из сайтов, т.е. здесь http://www.sql.ru/forum/actualthread.aspx?tid=744303, я набрела на такой ответ
Shocker.Pro.Михаил. Создать класс (или структуру), в котором будут ссылки на 11 кнопок, ссылки инициализировать при загрузке формы. Создать свойство (для класса) или процедуру (для структуру), в которой циклом все Visible=False для 11 кнопок.
Создать класс с автоматически собираемыми ссылками на контролы всей формы. Объединить их в именованные произвольные пересекающиеся группы контролов с помощью коллекций, сделать пользовательский редактор вхождения контролов в эти группы и хранение результатов в БД или еще где-то. Манипулировать свойствами Visible, Enabled, Value и прочими ништяками сразу именованных групп, не обращаясь к каждому контролу по отдельности. Назначить пользователей, права, раздать права группам, автоматически разрешать доступность контролов определенным пользователям....................................... Все это замечательно, у меня есть такой движок.... Только это все - для больших проектов, ИМХО, автору все это нафих не нужно, вполне обойдется фреймом

Этот ответ меня заинтересовал и поэтому я обращаюсь к ВАМ за помощью. Можно ли что-нибудь подобное сотворить и с ActiveX-ми на листе?
Я пробовала уже созданные контролы определенного типа собрать в массив и работать с ним, но у меня пока не выходит
Также пробовала создавать формы для различных справочников и на них размещать соответсвующие контролы, только мне нужно, чтобы форма высвечивалась без рамки (только рабочая область) и в нужном мне месте, которое я не могу указать: left - top не помогают, не там показывается. А по поводу рамки - нашла вот такой код, но ни тот ни другой код не работает - рамка все равно высвечивается
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
'Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
'Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
'Private Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long
'Private Declare Function FindWindowA Lib "user32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
'
'Private Const GWL_STYLE = -16
'Private Const WS_CAPTION = &HC00000
'
'Private Sub UserForm_Initialize()
'    Dim lngWindow As Long
'    Dim lFrmHdl As Long
'    lFrmHdl = FindWindowA(vbNullString, Me.Caption)
'    lngWindow = GetWindowLong(lFrmHdl, GWL_STYLE)
'    lngWindow = lngWindow And (Not WS_CAPTION)
'    Call SetWindowLong(lFrmHdl, GWL_STYLE, lngWindow)
'    Call DrawMenuBar(lFrmHdl)
'End Sub

Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function DrawMenuBar Lib "user32.dll" (ByVal hWnd As Long) As Long

Private Sub UserForm_Initialize()
    Dim ihWnd As Long, iStyle As Long

    ihWnd = FindWindow(vbNullString, Me.Caption)
    iStyle = GetWindowLong(ihWnd, -16&)
    SetWindowLong ihWnd, -16&, iStyle And Not &HC00000
    DrawMenuBar ihWnd
End Sub


ПОМОГИТЕ МНЕ, ПОЖАЛУЙСТА, РАЗОБРАТЬСЯ С МОЕЙ ПРОБЛЕМОЙ

P.S. на другие форумы обращалась, но пока тишина. Прилагаю файлы для ознакомления с все вышеописанным. Заранее СПАСИБО.
с уважением, Nika
...
Рейтинг: 0 / 0
Элементы управления ActiveX на рабочем листе Excel
    #38062308
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nika.dnleft - top не помогают, не там показываетсяесли размещаете в UserForm_Initialize - то таки да, не помогают, надо, например, в UserForm_Activate

Два приведенных кода делают, в общем, одно и то же - убирают заголовок формы, но не рамку. Есть ли какой-то стиль без рамки не подскажу.
...
Рейтинг: 0 / 0
Элементы управления ActiveX на рабочем листе Excel
    #38062514
MX-9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nika.dn,

Nika.dn,

мы в принципе работаем с элементами прямо на листе
например несколько тысяч кнопок и сотни списков на одном листе - не проблема
каждый элемент - уникален
элементы скрыты - но отрисовываются после первого касания мышкой соответствующей ячейки,
или отрисовываются все сразу в строке , или предустановленными группами - это как удобнее

но ..
применяется вдобавок к обычному еще и наш VMX -
Виртуальный Многопользовательский EXCEL
встроенный в сервер данных ( не ACCESS )

подключается не очень просто
работает быстро - даже на очень больших обьемах данных

дополнительных макросов и программ не требуется -
все уже написано как стандартное ядро на сервере и стандартный макрос на клиентах,
но нужны дополнительные специальные VMX-формулы в ячейках EXCEL

с единой общей базой данных одновременно могут работать до 500 EXCEL-пользователей
по локальной сети или через интернет

если заинтересует -
sia.enters@inbox.lv
...
Рейтинг: 0 / 0
Элементы управления ActiveX на рабочем листе Excel
    #38065370
Nika.dn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro, MX-9, большое спасибо, что откликнулись.

MX-9,
Я не совсем поняла, о чем была речь. Поняла, что помимо обычного Microsoft Excel, у Вас есть дополнительный свой VMX, который имеет большие возможности, нежели обычный. Только работаете Вы с определенной СУБД и это не Access (наверное, тоже собственной разработки).
Я сначала, в принципе, хотела сделать наподобие Вашего примера: создать контролы, соответствующие столбцам таблицы и скрывать и показывать их по определенному событию. Например, есть поле Наименование (название). Оно основное практически во всех моих справочниках (а их пока 19) и можно было бы создать 19 полей с Name – TextBox1, TextBox2… TextBox19, находящихся на одном и том же месте на листе, скрыть все, кроме текущего, и в нем отображать соответствующую информацию. Названия справочников я сохранила в массив и по индексу элемента массива отображать можно TextBoxN с таким же порядковым номером. И тут пошли проблемы:
1. Не могу переубедить себя в необходимости использования такого количества контролов одного и того же типа, когда можно использовать только один, просто перезаполняя его (динамически) необходимой информацией.
2. Если все таки использовать много контролов, то, как обрабатывать их все, не вызывая процедуру обработки для каждого контрола по отдельности. У Уокенбаха есть пример календаря с кнопками, где он создал класс и в нем процедуру обработки сразу для всех однотипных контролов, но я смутно поняла, как все это работает. Один только .Enable сделать проблематично, не говоря уж об Click() -ах
3. Ещё одна причина, по которой я не знаю, какой способ реализации мне выбрать (использовать один или много контролов) – это то, что в некоторых справочниках то же Наименование может быть текстовым полем, а может и выпадающим списком, в зависимости от ситуации. И тут сложность состоит в том, что определить, какой контрол нужен в данной ситуации можно только за счет связей между таблицами, если есть подстановка внешнего ключа – тогда выпадающий список, если нет – текстовое поле. А в Excel-евской таблице в таких столбцах стоят уже названия, а не коды, как в БД.
4. И потом, если придется создать новый справочник, как под него создать необходимые контролы – только через конструктор?
В общем, какой способ реализации я бы сейчас не выбрала, я не знаю как с ним дальше работать!
Подскажите мне, пожалуйста, как быть?
P.S. Можно, конечно и С# изучить, и Visual Studio Tools for Office (VSTO, Visual Studio Tools для офиса) использовать и его тоже изучить и прекрасно работать с ним в Excel-е, но времени нет и у меня уже база данных есть в Accesse (конечно проблемы нет перегнать ее в SQL-сервер, но я и его знаю плохо – тоже надо учить :) ). Пока меня устраивает тандем Excel-Access. Однако я очень хочу попробовать и Ваш VMX.
...
Рейтинг: 0 / 0
Элементы управления ActiveX на рабочем листе Excel
    #38065401
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На самом деле, если вы разнесёте ваши справочники в Excel (каждый на отдельный лист) - работа упростится. Если затем скроете листы со справочниками и будете работать с ними через UserForm - еще более упростится. Затем - полУчите аналог работы с Access...
Вот и возникает вопрос - а чем вас Access в качестве основного приложения не устраивает, зачем нужна связка?
...
Рейтинг: 0 / 0
Элементы управления ActiveX на рабочем листе Excel
    #38065419
Nika.dn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTM,
все дело в интерфейсе. до этого, на стадии бумажных ручных отчетов, весь учет велся в таблицах, такой себе Excel на бумаге. К нему привыкли и теперь менять интерфейс на Access-овский никто не хочет. Проще говоря, так привыкли, поэтому "родные бумажки" просто должны считаться сами...
...
Рейтинг: 0 / 0
Элементы управления ActiveX на рабочем листе Excel
    #38065422
Nika.dn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTM,

А справочники - это только часть проекта. Весь проект - это товарно-складской учет.
...
Рейтинг: 0 / 0
Элементы управления ActiveX на рабочем листе Excel
    #38065648
MX-9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nika.dn,

похоже что VMX подойдет для Вашей задачи

мы вышлем все что надо ,
но настройка потребует некоторых усилий
(и нам надо знать какая у Вас платформа (32-64 бит) и версия MS Office )

кстати, на первых порах,
тестирование можно провести на базе нашего VMX-сервера через интернет -
Вам тогда потребуется установить только MX ( клиентскую часть VMX )
- меньше заморок с настройкой

то есть Вы
дистанционно создадите свою тестовую базу данных
на нашем VMX-сервере в среде Виртуального EXCEL ,
а при работе Ваши серверные виртуальные многомерные VMX-листы
будут интерактивно отображаться на Ваш реальный клиентский EXCEL
и наоборот
(со всеми 3000 кнопками и списками :)

==============
...
Рейтинг: 0 / 0
Элементы управления ActiveX на рабочем листе Excel
    #38065755
Nika.dn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro Создать класс с автоматически собираемыми ссылками на контролы всей формы. Объединить их в именованные произвольные пересекающиеся группы контролов с помощью коллекций, сделать пользовательский редактор вхождения контролов в эти группы и хранение результатов в БД или еще где-то. Манипулировать свойствами Visible, Enabled, Value и прочими ништяками сразу именованных групп, не обращаясь к каждому контролу по отдельности. Назначить пользователей, права, раздать права группам, автоматически разрешать доступность контролов определенным пользователям.......................................Все это замечательно, у меня есть такой движок....

Я никогда не работал с динамическими контролами на листе, то есть навскидку не знаю, как их создавать, как к ним обращаться и т.п., хотя, конечно, можно разобраться. С другой стороны, я не понимаю, в чем у вас сложность с созданием групп контролов, а конкретных вопросов вы не задаете.

Доброго времени суток, Shocker.Pro.
Задаю конкретный вопрос:
Как создать группу контролов, хотя бы на форме? Если можно, выложите самый элементарный пример, я сама попробую с ним разобраться, оч. хочется пощупать, как это работает. До того, что выше описано и выделено зеленым цветом, я сама не додумаюсь, Помогите, пожалуйста.
Я так думаю, что если есть возможность создавать контролы прямо на листе, то и должна быть возможность с ними работать
Я пробовала обращаться к коллекции двумя способами:
1. ActiveSheet.OLEObjects(typeControl).Object, где typeControl - это тип контролов. Но так идет обращение к одному конкретному контролу
2. Еще такая попытка есть
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Public Sub ArrayControls(typeControl As String)
' эта процедура собирает контролы определенного типа typeControl  в глобальный массив arrControls() и работает с ними
    
    Dim CountControls As Integer ' счетчик для количества контролов
    Dim ctl As Control
    
    CountControls = 0
        For Each ctl In ActiveSheet.OLEObjects(typeControl).Object ' Вот тут то и возникает проблема НУЖНО ОБРАЩАТЬСЯ К КОЛЛЕКЦИИ, А Я НЕ ЗНАЮ КАК ведь здесь идет обращение к одному контролу указанного типа
        If TypeName(ctl) = typeControl Then ' я так думаю, что наверное ээта проверка лишняя, ведь в условии цикла уже указан нужный тип контрола и в If...Then получается, что сравнение идет само с собой же, ИХМО
            CountControls = CountControls + 1
            ReDim Preserve arrControls(1 To CountControls)
            Set arrControls(CountControls).ControlsGroup = ctl     'добавление очередного контрола в массив
            ActiveSheet.Shapes.Range(Array(arrControls(CountControls))).Select '  выделение элементов
        End If
    Next ctl
  
    With Selection.ShapeRange
        .Align msoAlignLefts, msoFalse   
        .Align msoAlignTops, msoFalse   
        .Height = 45          
        .Width = 100          
    End With
End Sub


Вот как-то так. Криво, но попытка не пытка...
...
Рейтинг: 0 / 0
Элементы управления ActiveX на рабочем листе Excel
    #38065770
Nika.dn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MX-9,

Office 2010, OS - windows7 Домашняя расширенная SP1 32-bit
...
Рейтинг: 0 / 0
Элементы управления ActiveX на рабочем листе Excel
    #38065855
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nika.dnКак создать группу контролов, хотя бы на форме?видимо, вы меня не очень поняли.

Группа контролов - понятие виртуальное. Это не что-то, поддерживаемое бейсиком. Я сам писал класс, который формирует эти группы. Устроены они примерно так - есть коллекция элементов типа "группа" (пользовательского типа, который я сам и создавал). Каждый элемент содержит название группы и какие-то признаки (например Enabled), а также вложенную коллекцию ссылок на контролы. Таким образом, один контрол может входить в несколько групп. Для редактирования состава групп я сделал визуальный редактор.
Дальше, к примеру, я хочу изменить Enabled для одной из групп. Метод класса, который это делает, сканирует коллекции и делает Enabled контролам, входящим в группу, только если контрол не входит в какую-то другую группу, в которой Enabled=False.

Вот примерно так.
...
Рейтинг: 0 / 0
Элементы управления ActiveX на рабочем листе Excel
    #38065939
MX-9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nika.dn,

эта конфигурация поддерживается
...
Рейтинг: 0 / 0
Элементы управления ActiveX на рабочем листе Excel
    #38065962
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ActiveSheet.OLEObjects - вот та коллекция, которую требуется перебирать
и в ней уже проверять тип контрола, так как в коллекцию входит все подряд
...
Рейтинг: 0 / 0
Элементы управления ActiveX на рабочем листе Excel
    #38067151
Nika.dn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
видимо, вы меня не очень поняли.

Группа контролов - понятие виртуальное. Это не что-то, поддерживаемое бейсиком. Я сам писал класс, который формирует эти группы. Устроены они примерно так - есть коллекция элементов типа "группа" (пользовательского типа, который я сам и создавал). Каждый элемент содержит название группы и какие-то признаки (например Enabled), а также вложенную коллекцию ссылок на контролы. Таким образом, один контрол может входить в несколько групп. Для редактирования состава групп я сделал визуальный редактор.
Дальше, к примеру, я хочу изменить Enabled для одной из групп. Метод класса, который это делает, сканирует коллекции и делает Enabled контролам, входящим в группу, только если контрол не входит в какую-то другую группу, в которой Enabled=False.

Вот примерно так.

Видимо, да. Не совсем понятно.
У меня, в принципе, есть класс, он маленький. Однако он у меня только для типа Button
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Public WithEvents ControlsGroup As Control
 
Private Sub ControlsGroup_click()
     ControlsGroup.Enabled = False
End Sub
Private Sub ControlsGroup_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Cancel = True
End Sub
...
Рейтинг: 0 / 0
Элементы управления ActiveX на рабочем листе Excel
    #38067173
Nika.dn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Попробуйте подкорректировать мой класс, чтобы он заработал так как у Вас - для группы контролов. В моем примере, который я прикрепляла в первом посте модуль класса называется BtnClass, а модуль, в котором работаю с этим классом называется modGlobalCtr.
Верите, хоть и написала сама (на примере Уокенбаха) - не пойму что мне с этим делать, чтобы оно работало правильно.
...
Рейтинг: 0 / 0
Элементы управления ActiveX на рабочем листе Excel
    #38067338
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы считаете, что то, что я описал выше, возможно уложить в пару строчек кода?

Что касается вашего кода - я вам уже отвечал - коллекцией является ActiveSheet.OLEObjects - ее и надо перебирать в For Each
...
Рейтинг: 0 / 0
Элементы управления ActiveX на рабочем листе Excel
    #38067792
Nika.dn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
Извините меня за недопонимание, просто с VBA я плохо еще дружу, буду разбираться. Можно только попросить Вас, консультировать меня и помогать - я хочу разобраться и попробую сама написать подобный класс с такими же возможностями. Очень нужная вещь для работы
Shocker.ProГруппа контролов - понятие виртуальное. Это не что-то, поддерживаемое бейсиком. Я сам писал класс, который формирует эти группы. Устроены они примерно так - есть коллекция элементов типа "группа" (пользовательского типа, который я сам и создавал). Каждый элемент содержит название группы и какие-то признаки (например Enabled), а также вложенную коллекцию ссылок на контролы. Таким образом, один контрол может входить в несколько групп. Для редактирования состава групп я сделал визуальный редактор.
Дальше, к примеру, я хочу изменить Enabled для одной из групп. Метод класса, который это делает, сканирует коллекции и делает Enabled контролам, входящим в группу, только если контрол не входит в какую-то другую группу, в которой Enabled=False.
Начну сначала:
1. По поводу коллекции, о которой идет речь - ActiveSheet.OLEObjects, Вы имеете в виду, что это та коллекция, которая и будет работать с ActiveX на листе, а не на форме? Я правильно поняла? (а то мне кажется, что мы с Вами говорим об одних и тех же вещах, но по-разному и я не понимаю Вас)

Другими словами, если я обращусь к коллекции ActiveSheet.OLEObjects(typeControl), где typeControl - это строковая переменная, которая хранит тип контролов, то эта коллекция будет перебирать в цикле контролы нужной мне группы?
Единственный момент, который я не совсем поняла это по какому признаку формируется группа, если как Вы сказали
Shocker.Pro"один контрол может входить в несколько групп", то значит они формируются не только по своему типу, а еще по чему?
2. По поводу пользовательского типа для контролов я их тоже создала - выложу их здесь на ваш суд, только я не знаю объявить эти типы как Private в модуле класса или же отправить их в обычный модуль (не понимаю в чем разница, поэтому и не знаю, как нужно) . Вот они
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Private Type InputForms ' этот тип данных хранит тип и подпись контрола
    captionControl As String  ' подпись, т.е. соответствующий контролу Label
    typeControl As String      ' тип
End Type
Private Type ControlsForm ' этот тип указывает к какому справочнику принадлежит данный контрол
    menuNumber As Integer ' № п/п справочника
    menuName As String      ' название справочника
    tableControls As InputForms ' сам контрол
End Type



3. Как это все собрать в единое целое, т.е можно создать группу?

Извините за мою дремучесть и может многие вопросы Вам покажутся глупыми или очевидными, помните - я только учусь и VBA для меня - белое пятно (оффтоп)
...
Рейтинг: 0 / 0
Элементы управления ActiveX на рабочем листе Excel
    #38067838
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nika.dn1. По поводу коллекции, о которой идет речь - ActiveSheet.OLEObjects, Вы имеете в виду, что это та коллекция, которая и будет работать с ActiveX на листеДа, на форме для этого есть другая коллекция.

Но если вы будете создавать собственную коллекцию, которая собирается при добавлении контролов на лист, то коллекция ActiveSheet.OLEObjects вам не понадобится.


Nika.dnДругими словами, если я обращусь к коллекции ActiveSheet.OLEObjects(typeControl), где typeControl - это строковая переменная, которая хранит тип контролов, то эта коллекция будет перебирать в цикле контролы нужной мне группы?Нет, при обращении к элементу коллекции вы указываете его индекс или имя, а не тип. То есть вам нужно перебирать ВСЮ коллекцию объектов, проверяя тип каждого объекта, чтобы вычленить объекты нужного типа.


Nika.dnЕдинственный момент, который я не совсем поняла это по какому признаку формируется группа, если как Вы сказалиКак я уже говорил - у меня есть визуальный редактор. Программист вручную собирает группы по ему ведомым принципам.


Nika.dn Извините за мою дремучесть и может многие вопросы Вам покажутся глупыми или очевидными, помните - я только учусь и VBA для меня - белое пятно На мой взгляд, вам нужно начать с чего-то более простого, набить немножко руку на работу с коллекциями, объектами и пользовательскими типами.
...
Рейтинг: 0 / 0
Элементы управления ActiveX на рабочем листе Excel
    #38068126
Дмит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может быть небольшой пример поможет - http://www.dimit.pochta.ru/wopr.html#19
...
Рейтинг: 0 / 0
Элементы управления ActiveX на рабочем листе Excel
    #38068879
Nika.dn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий,
спасибо большое за Ваши примеры. Последую совету Профи и начну с малого (не без помощи Ваших примеров)

Только в примере где CheckBox-ы связываются с ячейками для элементов управления ActiveX (верхний пример) нужно вставлять CheckBox в ячейку, а если в таблице уже загруженной из БД есть поля логического типа, то можно сделать так, чтобы они (CheckBox-ы) автоматически вставлялись, при этом значения в ячейках не изменялись, а просто визуально отображались галочками ,(как в Access - хранится ИСТИНА или ЛОЖЬ, а отображается флажок, только авоматически)
...
Рейтинг: 0 / 0
Элементы управления ActiveX на рабочем листе Excel
    #38068880
Nika.dn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProНа мой взгляд, вам нужно начать с чего-то более простого, набить немножко руку на работу с коллекциями, объектами и пользовательскими типами.
Вы правы, нужно немного потренироваться, а то я как в паззлах с потерянным фрагментом - вроде все есть, а общей картины сложить не могу.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Элементы управления ActiveX на рабочем листе Excel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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