Прошу вас помочь с написанием макроса, который при нажатии на кнопку "Добавить" скопирует ячейки B19:N19 с листа "Новый" на лист "Список" в таблицу (в столбцы с A по M) в первую свободную строку.
Так же желательно, чтобы макрос перед копированием проверил наличие значений в ячейках C2 и C4, и, если они пустые, только показал сообщение о том, что данные не заполнены.
Заранее спасибо.
Господа, добрый день!
Прошу вас помочь с написанием макроса, который при нажатии на кнопку "Добавить" скопирует ячейки B19:N19 с листа "Новый" на лист "Список" в таблицу (в столбцы с A по M) в первую свободную строку.
Так же желательно, чтобы макрос перед копированием проверил наличие значений в ячейках C2 и C4, и, если они пустые, только показал сообщение о том, что данные не заполнены.
На кнопку во вложении поставлен код ниже. Проверяет значение в ячейках листа, на котором кнопка лежит, после чего добавляет (или нет с выводом сообщения) данные на лист "Список". При этом формулу из строки выше протягивает автоматически - т.е. формулу достаточно ввести только в последнюю заполненную строку в начале эксплуатации файла.
[vba]
Код
Sub Rio_Adds_Data()
Dim X As Long 'Where data ends
Application.ScreenUpdating = False
With ThisWorkbook.Worksheets("Список") If [c2].Value = "" Or [c4].Value = "" Then MsgBox "Данные неполные, ввод отменён." Exit Sub End If X = .Cells(.Rows.Count, 1).End(xlUp).Row .Range("A1:M1").Offset(X, 0).Value = ThisWorkbook.Worksheets("Новый").Range("B19:N19").Value .Range("N" & X).Copy .Range("N" & X + 1).PasteSpecial Application.CutCopyMode = False End With
Application.ScreenUpdating = True
End Sub
[/vba]
Monstreek, здравствуйте.
На кнопку во вложении поставлен код ниже. Проверяет значение в ячейках листа, на котором кнопка лежит, после чего добавляет (или нет с выводом сообщения) данные на лист "Список". При этом формулу из строки выше протягивает автоматически - т.е. формулу достаточно ввести только в последнюю заполненную строку в начале эксплуатации файла.
[vba]
Код
Sub Rio_Adds_Data()
Dim X As Long 'Where data ends
Application.ScreenUpdating = False
With ThisWorkbook.Worksheets("Список") If [c2].Value = "" Or [c4].Value = "" Then MsgBox "Данные неполные, ввод отменён." Exit Sub End If X = .Cells(.Rows.Count, 1).End(xlUp).Row .Range("A1:M1").Offset(X, 0).Value = ThisWorkbook.Worksheets("Новый").Range("B19:N19").Value .Range("N" & X).Copy .Range("N" & X + 1).PasteSpecial Application.CutCopyMode = False End With