Если вы хотите получить от пользователя одну цифру, другой ответ от @udearboy сделает то, что вы намереваетесь, но если я правильно понял, и вы хотите, чтобы конечный пользователь дал вам последнюю строку для копированиятогда следующее достигнет этого для вас:
Private Sub CommandButton21_Click()
Dim ws1 As Worksheet: Set ws1 = ThisWorkbook.Worksheets("Sheet1")
Dim ws2 As Worksheet: Set ws2 = ThisWorkbook.Worksheets("Sheet2")
'declare and set the worksheets you are working with
ws2.Activate
n = Application.InputBox("Enter the number for the last row to copy:", Type:=1)
'get input from user
If IsNumeric(n) Then 'check if input is numeric
ws2.Range("1:" & n).EntireRow.Copy 'copy range
ws1.Range("A1").Rows("9").Insert Shift:=xlDown 'insert the values
ws1.Range("A1").Rows("9").PasteSpecial xlPasteFormats 'copy formats
ws1.Activate
End If
End Sub
ОБНОВЛЕНИЕ:
Я внес небольшую поправку в код, чтобы проверить, что значение, введенноеuser - целое число, которое больше 0, поэтому вы должны получить любые ошибки из-за неправильно введенных значений. Возможно, я бы также проверил, что введенное значение находится в пределах диапазона данных на листе, но я не добавил это ниже:
Private Sub CommandButton21_Click()
Dim ws1 As Worksheet: Set ws1 = ThisWorkbook.Worksheets("Sheet1")
Dim ws2 As Worksheet: Set ws2 = ThisWorkbook.Worksheets("Sheet2")
'declare and set the worksheets you are working with
ws2.Activate
n = Application.InputBox("Enter the number for the last row to copy:", "Please enter a Number", Type:=1)
'get input from user
If (IsNumeric(n)) And (CDbl(n) - CInt(n) = 0) And (n > 0) Then
'check if input is numeric and a whole number and greater than 0
ws2.Range("1:" & n).EntireRow.Copy 'copy range
ws1.Range("A1").Rows("9").Insert Shift:=xlDown 'insert the values
ws1.Range("A1").Rows("9").PasteSpecial xlPasteFormats 'copy formats
ws1.Activate
Else
MsgBox "Please enter a whole number greater than 0", vbCritical, "Error"
End If
End Sub