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