|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
28.04.2009, 11:20 | #1 |
Форумчанин
Регистрация: 30.07.2008
Сообщений: 125
|
Элементы управления в форме!
Добрый день!
1. Как отсортировать даты в Listbox-е? 2. Как можно задать формат для TextBbox-а (Например дата) для того чтобы ничего другово кроме даты невожнозно было ввести? 3.Как можно проверить все поля формы (чтобы они небыли пыстые) в цикле (В основном все текстовые поля) т.е не писать 10 условий, а 1 цикл и 1 проверку? |
28.04.2009, 13:10 | #2 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
1. Формируем массив из элементов ListBox, сортируем его, затем обратно в ListBox. Например, так:
Код:
2. Можно использовать не TextBox, а DTPicker. Тогда, во-первых, ничего, кроме даты пользователь не введет, во-вторых, вводить гораздо проще (не нужно набирать руками). 3. Следующий код просмотрит все TextBox-ы, и если какой-нибудь из них пуст - выведет об этом сообщение. Код:
Чем шире угол зрения, тем он тупее.
|
28.04.2009, 14:14 | #3 |
Форумчанин
Регистрация: 30.07.2008
Сообщений: 125
|
Спасибо огромное
Это очень поможет оптимизировать код! 2 - а что это за элемент "DTPicker" как его найти? или как его использовать? 3 - А если у меня форма с владками?? как проверить только на одной вкладке? |
29.04.2009, 06:21 | #4 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
2. Если речь идет о пользовательской форме, то войдите в VBE, правый клик на "Toolbox", выбрать "Additional Controls...". В появившемся окне установить флажок напротив "Microsoft Date and Time Picker 6.0" (ну, или не 6.0, а какой у Вас есть).
Если же данный элемент управления у Вас отсутствует, то есть два выхода: либо установить его, используя дистрибутив "Office" (по-моему, он находится где-то в опциях установки Access), либо найти файл "mscomct2.ocx", скопировать его в "C:\Windows\System32" (если WinXP) и зарегистрировать его в реестре. 3. Следующий код выведет сообщения о наличии только тех пустых TextBox-ов, которые находятся во вкладке MultiPage с именем "Page1". Код:
Чем шире угол зрения, тем он тупее.
Последний раз редактировалось SAS888; 29.04.2009 в 07:06. Причина: Добавлено |
29.04.2009, 09:24 | #5 | |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Цитата:
Код:
|
|
30.04.2009, 09:22 | #6 |
Форумчанин
Регистрация: 30.07.2008
Сообщений: 125
|
Спасибо!!!
Но к сожалению у меня на работе неустановлен донный вид эл.упр посмотрю дома !!!!! А если не окажется и дома Как можно проверить введена дата или нет? А то с этим возникают проблемы при расчете процентов остатка по датам! Последний раз редактировалось Rom1k06; 30.04.2009 в 09:27. |
30.04.2009, 09:39 | #7 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Если, например, нужно проверить, в TextBox1 введена дата или нет, то можно, например, так:
Код:
Чем шире угол зрения, тем он тупее.
|
30.04.2009, 10:08 | #8 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Разархивируйте файл из вложения, поместите его в директорию "C:\Windows\System32" и зарегистрируйте в реестре Windows. После этого, у Вас в "Additional Controls..." должен появиться элемент управления "Microsoft Date and Time Picker 6.0".
Чем шире угол зрения, тем он тупее.
|
30.04.2009, 20:31 | #9 |
Форумчанин
Регистрация: 30.07.2008
Сообщений: 125
|
Спасибо я дома все нашел...
работает.... Подскажите ПЛЗ код выдает ошибку!!! Private Sub Workbook_Open() Dim d, b As Date Dim i, a, h, j As Variant 'Unprotect (111) With Sheets(1) For i = 3 To .Cells(Rows.Count, "B").End(xlUp).Row a = .Cells(i, 6): b = .Cells(i, 7): d = Date If .Cells(i, 7) = "" Then .Cells(i, 11) = "": GoTo m1 If b < d Then .Cells(i, 11) = "": GoTo m1 h = Val((b - d)): j = Val(a * 30) .Cells(i, 11) = Round((h / j) * 100, 2) If .Cells(i, 11) < 30 Then .Cells(i, 9) = "Îãðàíè÷. Ñðîê" If .Cells(i, 11) < 10 Then .Cells(i, 9) = "ÁÐÀÊ" Next End With m1: 'Protect (111) End Sub На строке .Cells(i, 11) = Round((h / j) * 100, 2) вроде все правильно написал!? |
30.04.2009, 20:48 | #10 | |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Цитата:
Перед выполнением операции деления h / j не помешало бы сравнить переменную j с нулём. В Вашем случае ошибка возникает как раз из-за этого. Причина тому - строка j = Val(a * 30) (в вашем случае функция Val возвращает ноль) |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Не могу разобраться с элементами управления на форме | aRmЯn | Общие вопросы по Java, Java SE, Kotlin | 1 | 17.04.2009 01:36 |
Как спрятать элементы управления | NikolayGVB | Microsoft Office Excel | 2 | 22.01.2009 03:15 |
Элементы управления | Rom1k06 | Microsoft Office Excel | 7 | 28.08.2008 09:47 |
Возврат управления форме при показе PopupMenu | mutabor | Общие вопросы Delphi | 1 | 08.07.2008 13:43 |
Элементы управления и список значений | tomasmazas | Microsoft Office Excel | 1 | 26.12.2007 09:20 |