UPDATE
Половина моей проблемы решена, но у меня все еще есть проблемы. Большая часть данных, которые я вставляю в новую книгу, работает нормально. Если вы нажмете кнопку несколько раз, данные будут вставлены в следующую доступную строку. Однако три ряда, в частности, не работают. Данные будут вставлены в нужное место при первом нажатии кнопки макроса, но затем данные будут вставлены на 31 строку ниже соответствующей строки. Я полностью смущен этим. Есть ли какие-то проблемы с форматированием ячеек в этой части таблицы? Любая помощь будет оценена.
Исходная задача
Позвольте мне объяснить, что происходит. Я пытаюсь сделать так, чтобы после заполнения формы в одной рабочей книге пользователь нажимал кнопку, и данные из этой формы копировались и вставлялись в другую рабочую книгу, которая действует как основной файл для всех данных. Предполагается, что данные из формы должны быть вставлены в определенные столбцы во второй книге.
До сих пор я успешно создавал сырой, но работающий код, который выполняет это, но сейчас я сталкиваюсь с некоторыми проблемами. Когда я нажимаю кнопку на первой книге, все вставляется, как задумано, но ячейка (особенно G163) вставляется с данными. Я проверил, и ничего в коде не делает макрос вставки в эту ячейку специально. Кроме того, если я нажму кнопку еще раз, некоторые ячейки не будут вставлены в следующую доступную пустую ячейку, а вместо этого будут перемещены вниз по столбцу и вставлены в ячейку, отличную от запланированной.
Я очень новичок в Excel VBA, поэтому любая помощь будет принята с благодарностью. Я опубликую свой код ниже, а также несколько картинок со странной вставкой.
Sub Button1099_Click()
If IsEmpty(Workbooks("2018Monthly.xls").Worksheets("7").Range("A42")) = True Then
Workbooks("Formtest.xlsm").Worksheets("Form").Range("A4").Copy
Workbooks("2018Monthly.xls").Worksheets("7").Range("A42").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Else
Workbooks("Formtest.xlsm").Worksheets("Form").Range("A4").Copy
Range("A" & Rows.count).End(xlUp).Offset(1).Select
Workbooks("2018Monthly.xls").Worksheets("7").Range("A" & Rows.count).End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
End If
If IsEmpty(Workbooks("2018Monthly.xls").Worksheets("7").Range("B42")) = True Then
Workbooks("Formtest.xlsm").Worksheets("Form").Range("P2").Copy
Workbooks("2018Monthly.xls").Worksheets("7").Range("B42").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Else
Workbooks("Formtest.xlsm").Worksheets("Form").Range("P2").Copy
Range("B" & Rows.count).End(xlUp).Offset(1).Select
Workbooks("2018Monthly.xls").Worksheets("7").Range("B" & Rows.count).End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
End If
If IsEmpty(Workbooks("2018Monthly.xls").Worksheets("7").Range("C42")) = True Then
Workbooks("Formtest.xlsm").Worksheets("Form").Range("P3").Copy
Workbooks("2018Monthly.xls").Worksheets("7").Range("C42").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Else
Workbooks("Formtest.xlsm").Worksheets("Form").Range("P3").Copy
Range("C" & Rows.count).End(xlUp).Offset(1).Select
Workbooks("2018Monthly.xls").Worksheets("7").Range("C" & Rows.count).End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
End If
If IsEmpty(Workbooks("2018Monthly.xls").Worksheets("7").Range("D42")) = True Then
Workbooks("Formtest.xlsm").Worksheets("Form").Range("C10").Copy
Workbooks("2018Monthly.xls").Worksheets("7").Range("D42").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Else
Workbooks("Formtest.xlsm").Worksheets("Form").Range("C10").Copy
Range("D" & Rows.count).End(xlUp).Offset(1).Select
Workbooks("2018Monthly.xls").Worksheets("7").Range("D" & Rows.count).End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
End If
If IsEmpty(Workbooks("2018Monthly.xls").Worksheets("7").Range("E42")) = True Then
Workbooks("Formtest.xlsm").Worksheets("Form").Range("C9").Copy
Workbooks("2018Monthly.xls").Worksheets("7").Range("E42").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Else
Workbooks("Formtest.xlsm").Worksheets("Form").Range("C9").Copy
Range("E" & Rows.count).End(xlUp).Offset(1).Select
Workbooks("2018Monthly.xls").Worksheets("7").Range("E" & Rows.count).End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
End If
If IsEmpty(Workbooks("2018Monthly.xls").Worksheets("7").Range("F42")) = True Then
Workbooks("Formtest.xlsm").Worksheets("Form").Range("C11").Copy
Workbooks("2018Monthly.xls").Worksheets("7").Range("F42").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Else
Workbooks("Formtest.xlsm").Worksheets("Form").Range("C11").Copy
Range("F" & Rows.count).End(xlUp).Offset(1).Select
Workbooks("2018Monthly.xls").Worksheets("7").Range("F" & Rows.count).End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
End If
If IsEmpty(Workbooks("2018Monthly.xls").Worksheets("7").Range("G42")) = True Then
Workbooks("Formtest.xlsm").Worksheets("Form").Range("B17").Copy
Workbooks("2018Monthly.xls").Worksheets("7").Range("G42").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Else
Workbooks("Formtest.xlsm").Worksheets("Form").Range("B17").Copy
Range("G" & Rows.count).End(xlUp).Offset(1).Select
Workbooks("2018Monthly.xls").Worksheets("7").Range("G" & Rows.count).End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
End If
If IsEmpty(Workbooks("2018Monthly.xls").Worksheets("7").Range("H42")) = True Then
Workbooks("Formtest.xlsm").Worksheets("Form").Range("C12").Copy
Workbooks("2018Monthly.xls").Worksheets("7").Range("H42").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Else
Workbooks("Formtest.xlsm").Worksheets("Form").Range("C12").Copy
Range("H" & Rows.count).End(xlUp).Offset(1).Select
Workbooks("2018Monthly.xls").Worksheets("7").Range("H" & Rows.count).End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
End If
If IsEmpty(Workbooks("2018Monthly.xls").Worksheets("7").Range("I42")) = True Then
Workbooks("Formtest.xlsm").Worksheets("Form").Range("J10").Copy
Workbooks("2018Monthly.xls").Worksheets("7").Range("I42").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Else
Workbooks("Formtest.xlsm").Worksheets("Form").Range("J10").Copy
Range("I" & Rows.count).End(xlUp).Offset(1).Select
Workbooks("2018Monthly.xls").Worksheets("7").Range("I" & Rows.count).End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
End If
If IsEmpty(Workbooks("2018Monthly.xls").Worksheets("7").Range("J42")) = True Then
Workbooks("Formtest.xlsm").Worksheets("Form").Range("J11").Copy
Workbooks("2018Monthly.xls").Worksheets("7").Range("J42").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Else
Workbooks("Formtest.xlsm").Worksheets("Form").Range("J11").Copy
Range("J" & Rows.count).End(xlUp).Offset(1).Select
Workbooks("2018Monthly.xls").Worksheets("7").Range("J" & Rows.count).End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
End If
Application.CutCopyMode = False
Workbooks("2018Monthly.xls").Save
End Sub
Вот так выглядит вторая рабочая книга после одного нажатия кнопки:
Вставленная книга после нажатия одной кнопки
Вставленная книга после нажатия одной кнопки
Вот как будет выглядеть книга, если вы нажмете кнопку еще раз:
Вставленная книга после двух нажатий кнопок
Вставленная книга после двух нажатий кнопок