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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.01.2014, 10:56   #11
dr.dimm
Пользователь
 
Регистрация: 15.09.2011
Сообщений: 24
По умолчанию

Подскажите, можно ли в экселе написать функцию, которая бы добавляла элемент, combobox например, на пустую форму, с указанием параметров расположения и других ? Если да, но можно ли увидеть пример?

Думаю как не рисовать 40 форм, а каждый раз вызывать одну, но с разными параметрами.
dr.dimm вне форума Ответить с цитированием
Старый 30.01.2014, 11:09   #12
maksim_serg
Форумчанин
 
Аватар для maksim_serg
 
Регистрация: 25.03.2010
Сообщений: 417
По умолчанию

Код:
With UserForm1.Controls.Add("Forms.ComboBox.1")
.Left = 50
.Top = 50
.Name = "Combobox1"
'и т.д. и т.п.
End With
maksim_serg вне форума Ответить с цитированием
Старый 03.02.2014, 14:31   #13
dr.dimm
Пользователь
 
Регистрация: 15.09.2011
Сообщений: 24
По умолчанию

Код:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
      Column = Target.Column
      Row = Target.Row
      If Column = 23 And Row = 173 Then
      Target.Font.Name = "Marlett"
      Cancel = True
          If Target = "a" Then
              Target = ""
          Else
              Target = "a"
          End If
      End If
End Sub
Макрос ставит галку по двойному клику, но если ячейка объединенная, вылетает ошибка Помогите пожалуйста это исправить.
dr.dimm вне форума Ответить с цитированием
Старый 03.02.2014, 14:49   #14
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Код:
          If Target.Cells(1) = "a" Then
              Target = ""
          Else
              Target.Cells(1) = "a"
          End If
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 11.02.2014, 17:16   #15
dr.dimm
Пользователь
 
Регистрация: 15.09.2011
Сообщений: 24
По умолчанию

Подскажите, можто в VBA вместо
Код:
With UserForm1.Controls.Add("Forms.ComboBox.1")
Писать
Код:
With UserForm1.Controls.Add("Forms.ComboBox.(n)")
(n=1)

Хочу сделать что то такое:
Код:
Dim n As Integer
Function SetGlobal()
n = 1
End Function
Function Add()
    With UserForm1.Controls.Add("Forms.ComboBox.(n)")
        .Name = "ComboBox(n)"
    End With
End Function
dr.dimm вне форума Ответить с цитированием
Старый 11.02.2014, 17:30   #16
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Попробуйте
Код:
Private Sub UserForm_Initialize()
Dim i&
For i = 1 To 3
  With Me.Controls.Add("Forms.ComboBox.1", "Combobox" & i)
    .Top = i * 20
    'другие свойства
  End With
Next
End Sub
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 11.02.2014, 17:56   #17
dr.dimm
Пользователь
 
Регистрация: 15.09.2011
Сообщений: 24
По умолчанию

Спасибо, но хотелось бы с использованием глобальных переменных, и функции. Типа нажал кнопку "+" добавился комбо бокс в форму.

С циклом тоже можно, наверное так сделаю, если не будет больше предложений.
dr.dimm вне форума Ответить с цитированием
Старый 11.02.2014, 18:07   #18
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

как говорили у нас, в мужской балетной школе, "одно другому не мешает".
Вам показали как сделать то, что Вы пытались сделать. пользуйтесь...
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 17.02.2014, 18:33   #19
dr.dimm
Пользователь
 
Регистрация: 15.09.2011
Сообщений: 24
По умолчанию

Вот еще вопрос: Пытаюсь добавить контрол на форму через код, но не молучается В чем у меня ошибка:

Код:
Private Sub UserForm_Initialize()
    Dim cControl As Control
    Set cControl = Me.Controls.Add("Forms.CheckBox.20", "ComboBox20", True)
    With cControl
        .Width = 150
        .Height = 50
        .Top = 20
        .Left = 20
        .ZOrder (0)
    End With
End sub
(Текст ошибки: недопустимая строка с названием класса)

Последний раз редактировалось dr.dimm; 17.02.2014 в 18:38.
dr.dimm вне форума Ответить с цитированием
Старый 17.02.2014, 18:42   #20
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

а так:

Код:
Set cControl = Me.Controls.Add("Forms.CheckBox.1", "ComboBox20", True)
и еще вопрос, что у Вас в школе по логике было?
добавляете CheckBox, а называете его ComboBox20... это случайно, или специально?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 17.02.2014 в 18:47.
IgorGO вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подключения к Excel исполбзуя ADO: разные версии файлов excel VVkSoft БД в Delphi 0 27.09.2012 00:34
Скорость исполнения макроса в Excel-2010 намного ниже, чем в Excel-2003 Павел+ Microsoft Office Excel 5 29.12.2010 03:28
Каким образом можно сделать таблицу Excel в ячейке Excel? Severny Microsoft Office Excel 3 08.10.2010 09:13
Как запретить запуск программы на VBA Excel 2003 в Excel 2007 kovalevskivf Microsoft Office Excel 2 15.05.2009 16:47
Формирование из excel в ASCII, у меня он формирует по одному клиенту а в Excel нескол Askat Общие вопросы Delphi 0 18.07.2007 06:28