Добрый день. Прошу помочь. Есть лист "Ввод данных", на котором каждый день вводятся данные. При нажатии кнопки, введенные значения переносятся на лист "Данные" в первую свободную строку. Как сделать так, чтобы данные с листа "Ввод данных" переносились на лист "Данные" по критерию даты указанной в ячейке А4 (Ввод данных). То есть макрос берет указанную дату в ячейке А4 "Ввод данных", находит эту дату в столбце A "Данные", переносит значения в строку, которая соответствует найденной дате и обнуляет ячейки в форме ввода.
Заранее благодарен за подсказку! P.S. буду благодарен за любой совет по оптимизации кода
Добрый день. Прошу помочь. Есть лист "Ввод данных", на котором каждый день вводятся данные. При нажатии кнопки, введенные значения переносятся на лист "Данные" в первую свободную строку. Как сделать так, чтобы данные с листа "Ввод данных" переносились на лист "Данные" по критерию даты указанной в ячейке А4 (Ввод данных). То есть макрос берет указанную дату в ячейке А4 "Ввод данных", находит эту дату в столбце A "Данные", переносит значения в строку, которая соответствует найденной дате и обнуляет ячейки в форме ввода.
Заранее благодарен за подсказку! P.S. буду благодарен за любой совет по оптимизации кодаptimoshenko
Sub valuesToDate() Dim r& With Sheets("Данные") r = Application.WorksheetFunction.Match(Sheets("Ввод данных").[A4], .Columns("A:A"), 0) Sheets("Ввод данных").[B4:G4].Copy .Cells(r, 2).PasteSpecial Paste:=xlPasteValues End With Sheets("Ввод данных").[a4:G4].ClearContents End Sub
[/vba]
Так?[vba]
Код
Sub valuesToDate() Dim r& With Sheets("Данные") r = Application.WorksheetFunction.Match(Sheets("Ввод данных").[A4], .Columns("A:A"), 0) Sheets("Ввод данных").[B4:G4].Copy .Cells(r, 2).PasteSpecial Paste:=xlPasteValues End With Sheets("Ввод данных").[a4:G4].ClearContents End Sub
SkyPro, спасибо за быстрый ответ! Все отлично, но один вопрос, если ячейки для ввода данных не заполнены (то есть все пусты) и нажать кнопку, то макрос выдает ошибку 1004 невозможно получить свойство Match класса WorksheetFunction. Как этого избежать?
SkyPro, спасибо за быстрый ответ! Все отлично, но один вопрос, если ячейки для ввода данных не заполнены (то есть все пусты) и нажать кнопку, то макрос выдает ошибку 1004 невозможно получить свойство Match класса WorksheetFunction. Как этого избежать?ptimoshenko
ptimoshenko, дописать условие и всё. например такое [vba]
Код
Sub valuesToDate() Dim r& With Sheets("Данные") If Sheets("Ввод данных").Cells(4, 1) <> "" Then r = Application.WorksheetFunction.Match(Sheets("Ввод данных").[A4], .Columns("A:A"), 0) Sheets("Ввод данных").[B4:G4].Copy .Cells(r, 2).PasteSpecial Paste:=xlPasteValues End If End With Sheets("Ввод данных").[a4:G4].ClearContents End Sub
[/vba]
ptimoshenko, дописать условие и всё. например такое [vba]
Код
Sub valuesToDate() Dim r& With Sheets("Данные") If Sheets("Ввод данных").Cells(4, 1) <> "" Then r = Application.WorksheetFunction.Match(Sheets("Ввод данных").[A4], .Columns("A:A"), 0) Sheets("Ввод данных").[B4:G4].Copy .Cells(r, 2).PasteSpecial Paste:=xlPasteValues End If End With Sheets("Ввод данных").[a4:G4].ClearContents End Sub