Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.10.2015, 09:47   #1
TimeStopper
Пользователь
 
Регистрация: 11.09.2012
Сообщений: 44
По умолчанию Динамическая форма. Не получается создать несколько листбоксов.

Хочу сделать в зависимости от заполненности ячеек создавать несколько листбоксов.
Код:
  
For i = 1 To 6
        If ActiveWorkbook.ActiveSheet.Cells(3, i) <> "" Then
            Set lst = Me.Controls.Add("Forms.ListBox.1")
            With lst
                .Left = 10 + 50 * i
                .Top = 70
                .Height = 20
                .Width = 10
                .BackColor = vbRed
                .Name = CStr(i)
            End With
        End If
    Next i
Но что-то не очень получается...что я делаю не так?
TimeStopper вне форума Ответить с цитированием
Старый 24.10.2015, 10:37   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Цитата:
что я делаю не так?
что бы сказать, что Вы делаете не так, нужно понимать что Вы пытаетесь сделать, другими словами вы не обьясняете, что хотите сделать - вот что не так.

по Вашему коду и фразе
Цитата:
Хочу сделать в зависимости от заполненности ячеек создавать несколько листбоксов
не понятно что делать

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

Последний раз редактировалось IgorGO; 24.10.2015 в 10:59.
IgorGO вне форума Ответить с цитированием
Старый 24.10.2015, 12:38   #3
TimeStopper
Пользователь
 
Регистрация: 11.09.2012
Сообщений: 44
По умолчанию

Вообще я пытаюсь понять/изучить VBA, и написать программу, но так как у меня образование строителя, а не программиста...всё это дается с большими скрипами.
Так, что за глупые вопросы, прошу понять и пррРрРРостить ))

Сейчас я хочу сделать форму, в которой в зависимости от условий (в данном случае если ячейки 1...6 строки 3 не пустые), могли бы появляться создаваться несколько листбоксов.
Нашел сейчас вот эту темку, пытаюсь приспособить
http://www.programmersforum.ru/showthread.php?t=37287
TimeStopper вне форума Ответить с цитированием
Старый 24.10.2015, 13:08   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

о коллега!

я закончил строительный факультет специальность ПГС в далеком 1985 году, а перед этим строительное ПТУ

так вот, коллега,
не парьтесь с программным добавлением листбоксов в форму, потому что при следующем запуске этого кода у Вас появиться еще несколько лист боксов (поверх существующих) потом еще, еще и еще...
я не вижу кода, который удалял бы уже "живующие" в форме листбоксы...
и даже если насоздавать новых и только нужных, как Вы к ним собираетесь обращаться потом??? уж не собрались ли Вы еще программно и обработчики событий в этих листбоксах внедрить в модуль формы??? сделаете - покажете, будет тут как образец для следующих поколений посетителей форума.

мой совет такой:
создайте в форме 6 листбоксов ручками
а при открытии формы, по состоянию ячеек А3:F3 разрешите или запретите их использование
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 24.10.2015, 14:05   #5
TimeStopper
Пользователь
 
Регистрация: 11.09.2012
Сообщений: 44
По умолчанию

Я тоже ПГС заканчивал, но в 2006 ))
не понимаю, почему бы к нему нельзя было обратиться? Если он создался шестым по счету, то у него наверно должен быть Id=6.
В общем я все равно попробую...

Последний раз редактировалось TimeStopper; 24.10.2015 в 14:12.
TimeStopper вне форума Ответить с цитированием
Старый 24.10.2015, 18:02   #6
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

А что не так? Вот, вставил код в UserForm_Initialize
Изображения
Тип файла: png Clipboard02.png (5.0 Кб, 73 просмотров)
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 24.10.2015, 21:59   #7
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Леша, очевидно что тут не так:
1. листбоксы без данных
2. даже если там появятся данные их не увидишь в листбоксе таких габаритов
3. если выполнить код повторно сколько листбоксов станет на форме?
4. как программе пользоваться обращаться к этим листбоксами?

понятно, что все можно решить. а стоит-ли городить эти огороды
я уверен - решение гораздо проще
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 25.10.2015, 14:45   #8
TimeStopper
Пользователь
 
Регистрация: 11.09.2012
Сообщений: 44
По умолчанию

Казанский, у меня почему-то совершенно не хотел работать код...я поэтому и спросил...

IgorGO, ну вот почти получилось. Осталось только допереть, как в 6ой столбец проставить выбранные в листбоксах значения.

Вообще задача стояла: удобно сопоставить данные каждой строки со всех рабочих листов между собой, и по каждой строке принять решение, опираясь на данные с других листов.
Может быть вы правы, и есть более удобный и простой способ...но сейчас результат мне нравится )) осталось допилить немного.
Вложения
Тип файла: rar Для форума.rar (503.7 Кб, 9 просмотров)
TimeStopper вне форума Ответить с цитированием
Старый 26.10.2015, 12:59   #9
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

очевидно что тут не так:
1. листбоксы без данных

а без данных они бесполезны. а где взять данные знает только ТС, а то что мы не знаем где их взять ему по барабану, как и нам эта тема

взаимный "по-барабану" (если мягко сказать)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическая форма HTML bunukar Общие вопросы Delphi 20 30.01.2015 14:37
Не получается форма(( grpo Microsoft Office Access 4 26.04.2012 05:52
Динамическая форма с радио и селект Benderbej JavaScript, Ajax 0 28.08.2010 19:07
динамическая форма DmitryKh Microsoft Office Excel 1 12.04.2010 11:28
БД, Запрос на приход/расход, не получается задействовать несколько обьектов kvadratnt Помощь студентам 0 06.06.2009 15:23