Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Почему не срабатывает форма?
 
Добрый день, форумчане.
В рабочую форму на КомбоБокс4 пытаюсь прикрутить код, ввода даты без разделителей. Взял этот код с
http://planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=47142&MID=391830#message391830

Никак не получается. Как только ввожу первую цифру в этот КомбоБокс, появляется окошко
Rin-time error 450:
wrong number of arguments or invalid property assigment

Ну и в коде желтым заливается выделенная полужирным строка
Код
Private Sub ComboBox4_Change()
 Dim DatBox As Object
 Set DatBox = Me.ActiveControl
 [B] If Len(DatBox) = 2 And Right$(DatBox, 1) = "." [/B]Then DatBox = "0" & DatBox
 If Len(DatBox) = 5 And Right$(DatBox, 1) = "." Then _
 DatBox = Left$(DatBox, 3) & "0" & Right$(DatBox, 2)
 If (Len(DatBox) = 3 Or Len(DatBox) = 6) And Right$(DatBox, 1) <> "." Then
 DatBox = Left$(DatBox, Len(DatBox) - 1) & "." & Right$(DatBox, 1)
 End If
 Set DatBox = Nothing
 '
 Call CheckCombo1
 '
End Sub


Пример после максимального урезания весит 215КБ. Попробую вложить. Может пройдёт...
Подскажите, пожалуйста, в чем может быть проблема?

Не прошло. В следующем посте выложу полный код на форму.
Изменено: iam1968 - 2 Апр 2013 03:15:20
 
Скрытый текст
 
iam1968, вот странные вы люди(день дурака завтра будет, напоминаю)! Нафиг выкладывать пятистраничный листинг без файла? Нам за Вас нарисовать файл, форму, контролы, чтоб проверить, Вам помочь? Не проще ли Вам выложить файл-пример с указанием строки, где ошибка? Нам это не надо - надо Вам.
Я сам - дурнее всякого примера! ...
 
Если уж и показывать код, то ведь можно его прицепить в txt-файле...
А файл почему большой? - скорее всего пытаетесь прикрепить свой рабочий файл, вместо того, чтобы создать МАЛЕНЬКИЙ файл-пример с аналогичной задачей.
 
Простите. Слепил новый файл. Прикладываю.
 
Да, уж... проблема с вводом даты в ОДИН КомбоБокс, а в "маленьком" файле форма на весь экран...
 
Так мне и надо "на весь экран". Вернее не мне , а регистратору.
Да и поудалял большую часть кода, не имеющую отношения к вопросу.
 
Понятно, что Вам НЕ понятно ))
Попробую ещё раз: у Вас есть проблема всего с одним контролом (кстати, почему КомбоБокс, а не ТекстБокс?) - не получается ввести в него дату в нужном формате. Попробуйте мне объяснить - зачем всем тем, кто захочет Вам помочь, все остальные поля ввода? Почему бы не создать действительно маленький файл с маленькой формой и показать в ней неработающий код? Не цеплять рабочую форму, а только необходимое?
 
Я очень слабо разбираюсь в VBA, и мне не хотелось бы создать ситуацию, когда я чрезмерно урежу пример, кто-то потратит время на урезанный пример, даст ответ на мой вопрос на этом примере, а потом окажется, что пример ЧРЕЗМЕРНО сокращён и в нём не хватает какой-то существенной "мелочи". И придется вновь разворачивать тему и проходить всё заново.
Изменено: iam1968 - 31 Мар 2013 19:16:06
 
Затрудняюсь сказать, откуда этот код в таком виде вылез, но поясняю.
Данный код не предназначен для работы с контролами на фреймах.
Код
Set DatBox = Me.ActiveControl

было введено для оформления кода в виде функций с вызовом данной функции по нажатию любой кнопки.
У вас ActiveControl - это Frame1. Соответственно код не работает.
Более того, этот код предназначался для TextBox, и с комбо не тестировался.
Часть процедур вытащена из общего модуля в модуль формы.
Замените в оригинале все DatBox на нужный контрол и удалите
Код
Set DatBox = Me.ActiveControl

Должно заработать.
Для каждого контрола должно быть три процедуры Change, Exit и KeyPress.
Вариант 1 - под форму, без общего модуля.

PS для фрейма можно так
Код
Set DatBox = Me.ActiveControl.ActiveControl
Изменено: RAN - 31 Мар 2013 19:57:50
 
То есть, заменяю Combo с датами на Text, удаляю указанные Вами строки. Пробуем. Спасибо. Пошёл.
 
В форме и коде заменил СВ4 на TextBox7.
В коде заменил DatBox на TextBox7.
Убрал (в одном месте) Set DatBox = Me.ActiveControl.

Получилось:
Скрытый текст


Что делать?
Изменено: iam1968 - 2 Апр 2013 03:17:54
 
Цитата
iam1968 пишет:
ambiguus name defected: TextBox7_KeyPress
Значит есть ЕЩЁ процедура с таким же именем, а это недопустимо.
 
Собственно вот они:
Private Sub TextBox7_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
TextBox7.MaxLength = 10
KeyAscii = TextBox7_KeyPress(KeyAscii)
End Sub
Function TextBox7_KeyPress(ByVal KeyAsci As Integer)
Select Case KeyAsci
Case 48 To 57: TextBox7_KeyPress = KeyAsci
Case 44 To 47, 58: TextBox7_KeyPress = 46
Case Else: TextBox7_KeyPress = 0
End Select
End Function
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Получилось!

Комбобокс в форме был заменен на TextBox7.
Далее в коде DatBox был заменен на TextBox7 (не везде). Сейчас нет времени. Наверное замену DatBox на TextBox7 надо будет продолжить.

Скрытый текст

Всем спасибо. Доброй ночи.
 
iam1968, в следующий раз код будет удален. Вместе с сообщениями!
Вас предупреждали, что большие листинги лучше выкладывать в текстовом файле, если не хотите Excel показывать.
Страницы: 1
Читают тему (гостей: 1)