Dark » 16 янв 2015, 12:34
pashulka писал(а):Вариант I (при желании, свойства .Value и .Caption можно не указывать, ибо они дефолтные)
Код: Выделить всё
Private Sub CommandButton1_Click()
Dim iText$, iCell As Range
iText = TextBox1.Value
If IsDate(iText) = True Then
Set iCell = ActiveWorkbook.Worksheets(1).Columns("A").Find(CDate(iText), , xlValues, xlWhole)
If Not iCell Is Nothing Then
iCell(1, 2).Value = Label1.Caption
iCell(1, 3).Value = Label2.Caption
iCell(1, 4).Value = Label3.Caption
Else
TextBox1.Value = "Дата не найдена"
End If
End If
End Sub
pashulka спасибо большое, все как нода, но есть одно НО!
Есть маленькая проблема по моей программе. Если даты нет в столбце A, то программа должна вставлять данные (по хорошему между датами, например в столбце A идут даты 15.....17, а дата у нас в TextBox1, например 16, соответственно программа вставляет строчу между этими датами на лист, НО ЭТО КАК Я СКАЗАЛ ЭТО В ЛУЧШЕМ ВАРИАНТЕ, т.к. дня меня это пока трудно осуществимо), пока, хотя бы в конец столбца дат (столбец A). Соответственно вместо:
TextBox1.Value = "Дата не найдена"
должна быть вставка на лист в последнюю строку данных Label с формы. Т.е. как я понимаю, если даты нет, то (В ЛУЧШЕМ ВАРИАНТЕ) должно быть Find ближайшей даты и вставка. Поэтому код
кривожQ#$@ско поменял, но понятно, что ничего не получиться из за данной строки кода (
реализую вставку в конец столбца A):
i = Val(Cells(Rows.Count, 1).End(xlUp).Row) + 1
,
на какой поменять???
Dim iText$, iCell As Range
iText = TextBox1.Value
If IsDate(iText) = True Then
Set iCell = ActiveWorkbook.Worksheets(1).Columns("A").Find(CDate(iText), , xlValues, xlWhole)
If Not iCell Is Nothing Then
Else
i = Val(Cells(Rows.Count, 1).End(xlUp).Row) + 1
End If
iCell(1, 2).Value = Label1.Caption
iCell(1, 3).Value = Label2.Caption
iCell(1, 4).Value = Label3.Caption
End If
[quote="pashulka"]Вариант I (при желании, свойства .Value и .Caption можно не указывать, ибо они дефолтные)
[code]Private Sub CommandButton1_Click()
Dim iText$, iCell As Range
iText = TextBox1.Value
If IsDate(iText) = True Then
Set iCell = ActiveWorkbook.Worksheets(1).Columns("A").Find(CDate(iText), , xlValues, xlWhole)
If Not iCell Is Nothing Then
iCell(1, 2).Value = Label1.Caption
iCell(1, 3).Value = Label2.Caption
iCell(1, 4).Value = Label3.Caption
Else
TextBox1.Value = "Дата не найдена"
End If
End If
End Sub[/code][/quote]
[b]pashulka[/b] спасибо большое, все как нода, но есть одно НО!
Есть маленькая проблема по моей программе. Если даты нет в столбце A, то программа должна вставлять данные (по хорошему между датами, например в столбце A идут даты 15.....17, а дата у нас в TextBox1, например 16, соответственно программа вставляет строчу между этими датами на лист, НО ЭТО КАК Я СКАЗАЛ ЭТО В ЛУЧШЕМ ВАРИАНТЕ, т.к. дня меня это пока трудно осуществимо), пока, хотя бы в конец столбца дат (столбец A). Соответственно вместо:
TextBox1.Value = "Дата не найдена"
должна быть вставка на лист в последнюю строку данных Label с формы. Т.е. как я понимаю, если даты нет, то (В ЛУЧШЕМ ВАРИАНТЕ) должно быть Find ближайшей даты и вставка. Поэтому код [i]кривожQ#$@ско[/i] поменял, но понятно, что ничего не получиться из за данной строки кода ([u][b]реализую вставку в конец столбца A[/b][/u]):
[u][b]i = Val(Cells(Rows.Count, 1).End(xlUp).Row) + 1[/b][/u]
:confused:
, [u][color="Red"]на какой поменять???[/color][/u]
Dim iText$, iCell As Range
iText = TextBox1.Value
If IsDate(iText) = True Then
Set iCell = ActiveWorkbook.Worksheets(1).Columns("A").Find(CDate(iText), , xlValues, xlWhole)
If Not iCell Is Nothing Then
Else
[b]i = Val(Cells(Rows.Count, 1).End(xlUp).Row) + 1[/b]
End If
iCell(1, 2).Value = Label1.Caption
iCell(1, 3).Value = Label2.Caption
iCell(1, 4).Value = Label3.Caption
End If