Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/перевод даты из textbox в формат даты в ячейке exel - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по Excel » перевод даты из textbox в формат даты в ячейке exel (Формулы/Formulas)
перевод даты из textbox в формат даты в ячейке exel
dixus Дата: Вторник, 15.11.2016, 21:56 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Здравствуйте снова. Есть непонятка, не могу найти решение. Есть пополняемая макросом из формы таблица учета праздников, сокращенных дней и переносов выходных (добавочные выходные). Есть другая таблица( на др.листе), в ячейки которой по кнопке из формы одновременно с заполнением первой таблицы заносятся данные только по переносам выходных. В третьей таблице (в примере ее нет) формулой в ячейках считается кол-во раб дней в периоде. Проблема в том, что во вторую таблицу (где только переносы вых-х) данные заносятся в формате текста, а не даты. Через CDate(TextBox.Text) переносить значения в ячейки второй таблицы в VBA не идет - не все TextBox заполнены могут быть, и при пустом возникает на нем ошибка и код останавливается.
P.S.Во второй таблице не должно быть в пустых ячейках формул, т.к. формула ЧИСТРАБДНИ выдает тогда ошибку. На ум приходит только перебор по условию, пустой TextBox или нет, ведь их число в раб файле фиксированное - 18, и если пустой, то пропускать. Делается через цикл, но я пока еще таких высот не осилил
К сообщению приложен файл: 6785221.xlsm(26Kb)


Сообщение отредактировал dixus - Вторник, 15.11.2016, 22:08
 
Ответить
СообщениеЗдравствуйте снова. Есть непонятка, не могу найти решение. Есть пополняемая макросом из формы таблица учета праздников, сокращенных дней и переносов выходных (добавочные выходные). Есть другая таблица( на др.листе), в ячейки которой по кнопке из формы одновременно с заполнением первой таблицы заносятся данные только по переносам выходных. В третьей таблице (в примере ее нет) формулой в ячейках считается кол-во раб дней в периоде. Проблема в том, что во вторую таблицу (где только переносы вых-х) данные заносятся в формате текста, а не даты. Через CDate(TextBox.Text) переносить значения в ячейки второй таблицы в VBA не идет - не все TextBox заполнены могут быть, и при пустом возникает на нем ошибка и код останавливается.
P.S.Во второй таблице не должно быть в пустых ячейках формул, т.к. формула ЧИСТРАБДНИ выдает тогда ошибку. На ум приходит только перебор по условию, пустой TextBox или нет, ведь их число в раб файле фиксированное - 18, и если пустой, то пропускать. Делается через цикл, но я пока еще таких высот не осилил

Автор - dixus
Дата добавления - 15.11.2016 в 21:56
_Boroda_ Дата: Вторник, 15.11.2016, 22:20 | Сообщение № 2
Группа: Модераторы
Ранг: Экселист
Сообщений: 9348
Репутация: 3922 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
У Вас в файле как-то по кусочкам всё. Тогда не весь код, а только идею
[vba]
Код
if TextBox.Text<>"" then Range("Лист1!B" & V)=CDate(TextBox.Text)
[/vba]
или
[vba]
Код
If IsNumeric(TextBox.Text) Then Range("Лист1!B" & V) = CDate(TextBox.Text)
[/vba]
или
[vba]
Код
    On Error Resume Next
    'здесь присвоения всякие
    on error goto 0
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеУ Вас в файле как-то по кусочкам всё. Тогда не весь код, а только идею
[vba]
Код
if TextBox.Text<>"" then Range("Лист1!B" & V)=CDate(TextBox.Text)
[/vba]
или
[vba]
Код
If IsNumeric(TextBox.Text) Then Range("Лист1!B" & V) = CDate(TextBox.Text)
[/vba]
или
[vba]
Код
    On Error Resume Next
    'здесь присвоения всякие
    on error goto 0
[/vba]

Автор - _Boroda_
Дата добавления - 15.11.2016 в 22:20
dixus Дата: Вторник, 15.11.2016, 22:58 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
_Boroda_, [vba]
Код
if TextBox.Text<>"" then Range("Лист1!B" & V)=CDate(TextBox.Text)
[/vba] - эта строчка нужна для всех 18 TextBox-ов
[vba]
Код
if TextBox1.Text<>""
then
Range("Лист1!B" & V)=CDate(TextBox1.Text)
if TextBox2.Text<>""
then
Range("Лист1!С" & V)=CDate(TextBox2.Text)
[/vba]
или достаточно так:
[vba]
Код
if TextBox.Text<>""
then
Range("Лист1!B" & V)=CDate(TextBox.Text)
[/vba]


Сообщение отредактировал Pelena - Вторник, 15.11.2016, 23:15
 
Ответить
Сообщение_Boroda_, [vba]
Код
if TextBox.Text<>"" then Range("Лист1!B" & V)=CDate(TextBox.Text)
[/vba] - эта строчка нужна для всех 18 TextBox-ов
[vba]
Код
if TextBox1.Text<>""
then
Range("Лист1!B" & V)=CDate(TextBox1.Text)
if TextBox2.Text<>""
then
Range("Лист1!С" & V)=CDate(TextBox2.Text)
[/vba]
или достаточно так:
[vba]
Код
if TextBox.Text<>""
then
Range("Лист1!B" & V)=CDate(TextBox.Text)
[/vba]

Автор - dixus
Дата добавления - 15.11.2016 в 22:58
_Boroda_ Дата: Среда, 16.11.2016, 00:50 | Сообщение № 4
Группа: Модераторы
Ранг: Экселист
Сообщений: 9348
Репутация: 3922 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
В данном случае для каждого своя проверка. И не забывайте, что когда Вы пишете вот так
[vba]
Код
if условие then
что-то
end if
[/vba]то нужно писать еще End if
А если пишете в одну строчку, то End if не нужно
[vba]
Код
if условие then что-то
[/vba]
Но лучше просто отрубите Excelю возможность ругаться On Error Resume Next, только потом не забудьте вернуть обратно on error goto 0


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеВ данном случае для каждого своя проверка. И не забывайте, что когда Вы пишете вот так
[vba]
Код
if условие then
что-то
end if
[/vba]то нужно писать еще End if
А если пишете в одну строчку, то End if не нужно
[vba]
Код
if условие then что-то
[/vba]
Но лучше просто отрубите Excelю возможность ругаться On Error Resume Next, только потом не забудьте вернуть обратно on error goto 0

Автор - _Boroda_
Дата добавления - 16.11.2016 в 00:50
dixus Дата: Среда, 16.11.2016, 07:58 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
_Boroda_, Спасибо, буду пробовать предложенные варианты в свободное время, я так понимаю, что в коде
[vba]
Код
On Error Resume Next
    'здесь присвоения всякие
    on error goto 0
[/vba]
ставится непосредственно перед присвоением ячейке значения TextBox-а, потом сами строчки с присвоением типа
[vba]
Код
Range("Лист1!B" & V)=CDate(TextBox1.Text)
Range("Лист1!С" & V)=CDate(TextBox2.Text)
[/vba] и т.д., потом это -
[vba]
Код
on error goto 0
[/vba]? Что такое "0"? Ведь в ячейке 0 пребразится в дату 01.01.1899, или это 0 для самого TextBox-а, и в ячейку не попадает?


Сообщение отредактировал dixus - Среда, 16.11.2016, 08:00
 
Ответить
Сообщение_Boroda_, Спасибо, буду пробовать предложенные варианты в свободное время, я так понимаю, что в коде
[vba]
Код
On Error Resume Next
    'здесь присвоения всякие
    on error goto 0
[/vba]
ставится непосредственно перед присвоением ячейке значения TextBox-а, потом сами строчки с присвоением типа
[vba]
Код
Range("Лист1!B" & V)=CDate(TextBox1.Text)
Range("Лист1!С" & V)=CDate(TextBox2.Text)
[/vba] и т.д., потом это -
[vba]
Код
on error goto 0
[/vba]? Что такое "0"? Ведь в ячейке 0 пребразится в дату 01.01.1899, или это 0 для самого TextBox-а, и в ячейку не попадает?

Автор - dixus
Дата добавления - 16.11.2016 в 07:58
_Boroda_ Дата: Среда, 16.11.2016, 09:05 | Сообщение № 6
Группа: Модераторы
Ранг: Экселист
Сообщений: 9348
Репутация: 3922 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
Что такое "0"?

Читайте
https://msdn.microsoft.com/ru-ru/library/5hsw66as.aspx

Автор - _Boroda_
Дата добавления - 16.11.2016 в 09:05
dixus Дата: Среда, 16.11.2016, 18:00 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
_Boroda_, спасибо за ссылочку, будем пробовать
 
Ответить
Сообщение_Boroda_, спасибо за ссылочку, будем пробовать

Автор - dixus
Дата добавления - 16.11.2016 в 18:00
dixus Дата: Среда, 16.11.2016, 21:33 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
_Boroda_, Спасибо большое, можно закрывать тему, все работает с таким кодом. Ссылку прочитал, но не все понял. Мне понятнее, когда вот так, сам или с помощью дохожу до всего, я больше гуманитарий. А код в результате такой:
[vba]
Код
Private Sub CommandButton1_Click()
    Dim V&
    Dim Z&
    V = Sheets("Лист1").UsedRange.Rows.Count + 1
    Z = Sheets("Лист2").UsedRange.Rows.Count + 1
    On Error Resume Next
    Range("Лист1!A" & V).Value = ComboBox1.Value
    Range("Лист1!B" & V).Value = CDate(TextBox1.Text)
    Range("Лист1!C" & V).Value = CDate(TextBox2.Text)
    On Error GoTo 0
    Range("Лист2!A" & Z).Value = ComboBox1.Value
    Range("Лист2!B" & Z).Value = Range("Лист1!B" & V).Value
    Range("Лист2!C" & Z).Value = Range("Лист1!C" & V).Value
End Sub
[/vba]
 
Ответить
Сообщение_Boroda_, Спасибо большое, можно закрывать тему, все работает с таким кодом. Ссылку прочитал, но не все понял. Мне понятнее, когда вот так, сам или с помощью дохожу до всего, я больше гуманитарий. А код в результате такой:
[vba]
Код
Private Sub CommandButton1_Click()
    Dim V&
    Dim Z&
    V = Sheets("Лист1").UsedRange.Rows.Count + 1
    Z = Sheets("Лист2").UsedRange.Rows.Count + 1
    On Error Resume Next
    Range("Лист1!A" & V).Value = ComboBox1.Value
    Range("Лист1!B" & V).Value = CDate(TextBox1.Text)
    Range("Лист1!C" & V).Value = CDate(TextBox2.Text)
    On Error GoTo 0
    Range("Лист2!A" & Z).Value = ComboBox1.Value
    Range("Лист2!B" & Z).Value = Range("Лист1!B" & V).Value
    Range("Лист2!C" & Z).Value = Range("Лист1!C" & V).Value
End Sub
[/vba]

Автор - dixus
Дата добавления - 16.11.2016 в 21:33
Мир MS Excel » Вопросы и решения » Вопросы по Excel » перевод даты из textbox в формат даты в ячейке exel (Формулы/Formulas)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2016 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!