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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.02.2011, 01:04   #1
Uralmaster
Форумчанин
 
Регистрация: 21.01.2011
Сообщений: 118
По умолчанию Что сделать с ComboBox

Как изменить код формы выпадающего списка

Код:
Private Sub CommandButton1_Click()
ComboBox1.Value = Format(ComboBox1.Value, "h:mm;0")
ActiveCell = ComboBox1.Value
Unload UserForm_Time
End Sub
чтобы использовались только данные списка (пустое поле,ручной ввод - блокировались) и при закрытии формы (нажав на крестик либо отключить крестик)форма не закрывалась, закрывалась только по нажатию кнопки

Последний раз редактировалось Uralmaster; 07.02.2011 в 01:12.
Uralmaster вне форума Ответить с цитированием
Старый 07.02.2011, 01:51   #2
Uralmaster
Форумчанин
 
Регистрация: 21.01.2011
Сообщений: 118
По умолчанию про крестик нашел

# Для того, чтобы убрать кнопку Закрыть, представляющую собой небольшой крестик, расположенный в правом углу заголовка формы, достаточно скопировать весь нижеприведённый код в модуль нужной формы.
Код:
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 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 &H80000
End Sub
Источник
http://www.msoffice.nm.ru/faq/macros/winapi.htm#faq345
Uralmaster вне форума Ответить с цитированием
Старый 07.02.2011, 01:58   #3
Uralmaster
Форумчанин
 
Регистрация: 21.01.2011
Сообщений: 118
По умолчанию

Осталось только чтобы использовались только данные списка (пустое поле,ручной ввод - блокировались)
Uralmaster вне форума Ответить с цитированием
Старый 07.02.2011, 02:19   #4
alex77755
Форумчанин
 
Аватар для alex77755
 
Регистрация: 14.02.2009
Сообщений: 753
По умолчанию

А если вообще отказаться от кнопки?
Записать этот код в
Private Sub ComboBox1_Click()
ручной ввод автоматически блокируется.
А пустого не должно там быть
помогу решить контрольные VB6, VBA (недорого)
Alex77755@mail.ru
alex77755 вне форума Ответить с цитированием
Старый 07.02.2011, 02:21   #5
Uralmaster
Форумчанин
 
Регистрация: 21.01.2011
Сообщений: 118
По умолчанию

Код:
Private Sub CommandButton1_Click()
If ComboBox1.Value = "" Then
ComboBox1.Value = ""
Else
Me.ComboBox1.RemoveItem (Me.ComboBox1.ListIndex)
Me.ComboBox1.Value = ""
ComboBox1.Value = Format(ComboBox1.Value, "h:mm;0")
ActiveCell = ComboBox1.Value
Unload UserForm_Time
End If
End Sub
вот нашел но чтото затыкается на
Me.ComboBox1.RemoveItem (Me.ComboBox1.ListIndex)
Uralmaster вне форума Ответить с цитированием
Старый 07.02.2011, 07:13   #6
Uralmaster
Форумчанин
 
Регистрация: 21.01.2011
Сообщений: 118
По умолчанию Проблемка со Style

Выставляю Style в значение "2" - в свойствах поля ввода формы - блокировка пустого поля и ручной ввод данных блокируется - однако другая бяка вылезла:

Когда в списке текстовые значения - данные в ячейку форма нормально вставляет;
Когда в списке время вставляешь в ячейку - вылетает ошибка
"Run - time error'380' Could not set the Value property.Invalid property value"

При отключении Style в "0" - все нормально ошибок нет но и защиты нет ...
Uralmaster вне форума Ответить с цитированием
Старый 07.02.2011, 12:00   #7
Uralmaster
Форумчанин
 
Регистрация: 21.01.2011
Сообщений: 118
По умолчанию

Цитата:
Сообщение от alex77755 Посмотреть сообщение
А если вообще отказаться от кнопки?
Записать этот код в
Private Sub ComboBox1_Click()
ручной ввод автоматически блокируется.
А пустого не должно там быть
Да изящнее и быстрее получается -СПАСИБО!
Uralmaster вне форума Ответить с цитированием
Старый 08.02.2011, 03:01   #8
Uralmaster
Форумчанин
 
Регистрация: 21.01.2011
Сообщений: 118
По умолчанию

Заметил что команда
ComboBox1.Value = Format(ComboBox1.Value, "h:mm;0")
не форматирует ячейку
те если до срабатывания формы отформатировать ячейку в текст или еще как
то после срабатывания формы формат остается прежним
Как правильно написать ComboBox1.Value = Format
Uralmaster вне форума Ответить с цитированием
Старый 08.02.2011, 07:36   #9
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Цитата:
Сообщение от Uralmaster Посмотреть сообщение
Заметил что команда
ComboBox1.Value = Format(ComboBox1.Value, "h:mm;0")
не форматирует ячейку
те если до срабатывания формы отформатировать ячейку в текст или еще как
то после срабатывания формы формат остается прежним
Как правильно написать ComboBox1.Value = Format
Ну и правильно. Она форматирует текст в ComboBox1.
Код:
Private Sub ComboBox1_Click()
'Private Sub CommandButton1_Click()
ComboBox1.Value = Format(ComboBox1.Value, "h:mm")
ActiveCell = ComboBox1.Value
ActiveCell.NumberFormat = "h:mm;0"
Unload UserForm_Time
' UserForm_Time.Hide ' Это лишнее
Unload Form_SelectDate ' А это?
End Sub
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728

Последний раз редактировалось kuklp; 08.02.2011 в 07:47.
kuklp вне форума Ответить с цитированием
Старый 08.02.2011, 10:14   #10
Uralmaster
Форумчанин
 
Регистрация: 21.01.2011
Сообщений: 118
По умолчанию Благодарю

Заработало - чтоб я делал без Вас ...
а ' UserForm_Time.Hide ' Это лишнее нужна она завершает работу после Календаря - без нее завис
Uralmaster вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
что нужно сделать с <td> что бы между картинками другого <table> не было разделения? alex555 HTML и CSS 22 24.04.2012 16:43
Что нужно знать (сделать), что бы прога запускалась в Виндос 7 и Виста marina15056 Помощь студентам 19 24.08.2010 11:29
ComboBox как сделать чтобы список в нем формировался с другой страницы? sttafi Microsoft Office Excel 11 12.05.2009 17:45
Как сделать ComboBox со списком файлов? Feurrader Microsoft Office Excel 2 28.02.2009 09:40
как сделать фильтр для списка combobox ? sergey113 Помощь студентам 2 13.08.2008 16:29