Страница 1 из 1

Пара вопросов по дататам в Textbox'ax

Добавлено: 27 авг 2009, 23:42
Dark
Жители форума подскажите ответ на 2 вопроса по VBA:
1.Предположим есть 3 Textbox'a:

Textbox1
20.08.2009

Textbox2
20.10.2009

Textbox3
Textbox2-Textbox1+1

Вопрос в том как научить Textbox3 выводить разницу между Textbox2 и Textbox1 в числе т.е. в нашем случае 62 дня.
2. При вводе в Textbox1,Textbox2 дат хотелось бы чтобы ячейки воспринимали введенные числа не только как 20.10.2009 а так же как 20102009 автоматически преобразуя их в 20.10.2009
[INDENT][INDENT]Заранее Благодарен![/INDENT][/INDENT]

Re: Пара вопросов по дататам в Textbox'ax

Добавлено: 28 авг 2009, 05:31
EducatedFool
Попробуйте такой вариант ввода дат:

Изображение

Вот весь код:

Код: Выделить всё

[color=darkblue]Private[/color] [color=darkblue]Sub[/color] B_Дата1_Change_Click()
    Me.Date1 = Format(Get_Date(Me.Date1, Now), "DD-MM-YYYY")
[color=darkblue]End[/color] [color=darkblue]Sub[/color]

[color=darkblue]Private[/color] [color=darkblue]Sub[/color] B_Дата2_Change_Click()
    Me.Date2 = Format(Get_Date(Me.Date2, Now), "DD-MM-YYYY")
[color=darkblue]End[/color] [color=darkblue]Sub[/color]

[color=darkblue]Private[/color] [color=darkblue]Sub[/color] CommandButton1_Click()    [color=green]' запись на лист[/color]
    [color=darkblue]If[/color] Me.Date1 = "" [color=darkblue]Then[/color] MsgBox "Не введена дата 1", vbCritical, "Ошибка": [color=darkblue]Exit[/color] [color=darkblue]Sub[/color]
    [color=darkblue]If[/color] Me.Date2 = "" [color=darkblue]Then[/color] MsgBox "Не введена дата 2", vbCritical, "Ошибка": [color=darkblue]Exit[/color] [color=darkblue]Sub[/color]
    [color=darkblue]Dim[/color] cell [color=darkblue]As[/color] Range: [color=darkblue]Set[/color] cell = [a65000].End(xlUp).Offset(1)
    cell = Me.Date1: cell.Next = Me.Date2
[color=darkblue]End[/color] [color=darkblue]Sub[/color]

[color=darkblue]Private[/color] [color=darkblue]Sub[/color] CommandButton2_Click(): Unload Me: [color=darkblue]End[/color] [color=darkblue]Sub[/color]

[color=darkblue]Private[/color] [color=darkblue]Sub[/color] Date1_Change(): ДатыИзменились: [color=darkblue]End[/color] [color=darkblue]Sub[/color]
[color=darkblue]Private[/color] [color=darkblue]Sub[/color] Date2_Change(): ДатыИзменились: [color=darkblue]End[/color] [color=darkblue]Sub[/color]

[color=darkblue]Private[/color] [color=darkblue]Sub[/color] UserForm_Initialize()
    Me.Date1 = Format(Now - 2, "DD-MM-YYYY")
    Me.Date2 = Format(Now - 68, "DD-MM-YYYY")
[color=darkblue]End[/color] [color=darkblue]Sub[/color]

[color=darkblue]Sub[/color] ДатыИзменились()
    [color=darkblue]On[/color] [color=darkblue]Error[/color] [color=darkblue]Resume[/color] [color=darkblue]Next[/color]
    Me.TextBox3 = [color=darkblue]CDate[/color](Me.Date1) - [color=darkblue]CDate[/color](Me.Date2)
[color=darkblue]End[/color] Sub

Re: Пара вопросов по дататам в Textbox'ax

Добавлено: 28 авг 2009, 09:55
SAS888
А почему бы вместо первых 2-х TextBox-ов не использовать DTPicker-ы. Тогда вопросы с форматами отпадают, а для TextBox3 использовать

Код: Выделить всё

Private Sub DTPicker1_Change(): Main: End Sub
Private Sub DTPicker2_Change(): Main: End Sub
Sub Main(): TextBox3.Text = DateDiff("d", DTPicker1.Value, DTPicker2.Value): End Sub
Это ответ на оба вопроса.