Страница: 1 | 2 |
Вопрос: Заполнение TextBox'ов Циклом
Добавлено: 30.09.08 09:22
Автор вопроса: acidsting
Добрый день!
Возникла потребность заполнить 14 TextBox'ов датами следующим образом: textbox1 - сегодняшняя дата, textbox2 - завтрашняя дата, textbox3 - послезавтрашняя дата и т.д.
В результате получился следующий код:
'Вставляем текущую дату
Dim Date0, Date1 As Date
Dim DayNumb, Numb, Count
Date0 = Date
' Определение первой даты
Date1 = InputBox("Введите первое число отчетного периода" & Chr(13) & "Маска ввода: ДД.ММ.ГГГГ", "Определение начала периода", Date0)
' Определение количества дней
DayNumb = InputBox("Введите количество дней отчетного периода" & Chr(13) & "Маска ввода: №№", "Определение количества дней", 7)
Numb = DayNumb
Count = DayNumb - 1
For DayNumb = 1 To Numb
TextBoxDayNumb.Text = Date1 + Count
Next DayNumb
Подскажите, пожалуйста, как в цикле корректно определить TextBox от 1 до 14
Ответы
Всего ответов: 16
Номер ответа: 1
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #1
Добавлено: 30.09.08 13:27
Dim DayNumb, Numb, Count
Date0 = Date
Что за фигня? И зачем ты себе ищещь проблем с Variant'ом? Ты пропиши правильно типы данных, не путай имен переменных и именами типов данных и приводи, если не уверен, тип к нужному прежде, чем использовать значение переменной в вычислениях.
Наверное тебе надо знать про массивы контролов, тогда тебе понадобится в коде изменить только 1 строку:
Номер ответа: 2
Автор ответа:
acidsting
Вопросов: 3
Ответов: 6
Профиль | | #2
Добавлено: 30.09.08 13:58
Пробовал, не работает
VBA знаю поверхностно, поэтому возможны ошибки. Вот, что получилось на данном этапе
Может и некрасиво, зато работает.
Номер ответа: 3
Автор ответа:
KiZ
Вопросов: 27
Ответов: 68
Профиль | | #3
Добавлено: 30.09.08 15:22
omg ) по Select Case почитай хелп))
Номер ответа: 4
Автор ответа:
Skywalker
ICQ: 300-70-6пятьЪ
Вопросов: 62
Ответов: 545
Web-сайт:
Профиль | | #4
Добавлено: 30.09.08 16:10
а лоооооооооооооооооооооооооооооол бугогааааа
чтобы использовать массив контролов его нужно иметь, на форме выдели первый текст бокс нажми копировать и вставить, он те скажет мол есть уже такой, хошь массив создать?
Номер ответа: 5
Автор ответа:
Серёга
ICQ: 262809473
Вопросов: 17
Ответов: 561
Web-сайт:
Профиль | | #5
Добавлено: 30.09.08 16:30
я тут прочитал пост №2.
Вывод: Очень хорошо, что текстбоксов было только 14, а ведь могло быть и больше
Номер ответа: 6
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #6
Добавлено: 01.10.08 11:16
Ты меня развеселил на все утро )))
Номер ответа: 7
Автор ответа:
Jasmin
Вопросов: 23
Ответов: 417
Профиль | | #7
Добавлено: 01.10.08 18:40
Dim Date1 As Date
Dim DayNumb As Byte
' Определение первой даты
Date1 = InputBox("Введите первое число отчетного периода" & Chr(13) & "Маска ввода: ДД/ММ/ГГГГ", _
"Определение начала периода", _
Date)
' Определение количества дней
DayNumb = InputBox("Введите количество дней отчетного периода" & Chr(13) & "Маска ввода: №№", _
"Определение количества дней", _
7)
i = 1
For Each tb In UserForm1.Controls 'для каждого текстбокса
If i <= DayNumb Then 'повторять все количество дней отчетного периода
If tb.Name = "TextBox" & i Then 'перебор текстбоксов по порядку
tb.Value = Str(DateAdd("d", i - 1, Date1)) 'вставка даты. Дата высчитывается из заданной путем прибавления количества дней
i = i + 1 'переход к следующему номеру текстбокса
End If
Else
Exit For
End If
Next tb 'переход к следующему текстбоксу
Работает на любое количество дней и только, если текстбоксы названы по умолчанию и расставлены на форме по порядку.
Номер ответа: 8
Автор ответа:
Jasmin
Вопросов: 23
Ответов: 417
Профиль | | #8
Добавлено: 01.10.08 18:48
Обработку корректности ввода данных вставь на свой вкус.
Номер ответа: 9
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #9
Добавлено: 01.10.08 20:46
Jasmin, это другое дело
Номер ответа: 10
Автор ответа:
j3d1
ICQ: 8370005
Вопросов: 34
Ответов: 466
Профиль | | #10
Добавлено: 01.10.08 23:28
ещё боксы сгруппировать можно и будет обрабатывать ещё и их события одной ф-ёй
Номер ответа: 11
Автор ответа:
Jasmin
Вопросов: 23
Ответов: 417
Профиль | | #11
Добавлено: 02.10.08 17:15
To mc-black: Ну надо же человеку помочь. А если бы у него на весь год были текстбоксы ?
Номер ответа: 12
Автор ответа:
Aston
ICQ: 214-179-991
Вопросов: 42
Ответов: 272
Профиль | | #12
Добавлено: 04.10.08 00:39
Привет всем. Да интересный приём). По моему мнению лучше всего мне кажется, было использовать индекс в цикле текстбоксов. То есть создать массив текстбоксов состоящий из 14 текстбоксов и потом в цикле менять просто индекс.
TextBox(1) =
TextBox(2) =
а в цикле просто:
TextBox(i) =
)
Номер ответа: 13
Автор ответа:
acidsting
Вопросов: 3
Ответов: 6
Профиль | | #13
Добавлено: 06.10.08 16:50
Спасибо большое!
Попробую
Номер ответа: 14
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #14
Добавлено: 06.10.08 23:33
А че, мне ответ номер 2 понравился
Номер ответа: 15
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #15
Добавлено: 07.10.08 09:24
Перенесите топик в раздел Юмор )