Excel VBA для вставки строки из пользовательского ввода и автозаполнения вниз - PullRequest
0 голосов
/ 01 мая 2018

У меня есть следующий код для вставки строки в несколько листов на основе номера строки пользовательского ввода и автозаполнения вставленной строки.

    Sub AddNewRep()

    Dim SelRow As Integer, i As Integer, j As Integer
    If Selection.Rows.Count > 1 Then Exit Sub
    SelRow = Selection.Row
    On Error GoTo nonNumeric
    j = InputBox("ENTER ROW TO INSERT NEW REP", "ADD REP")
    On Error GoTo 0
    GoTo NumericEntry

nonNumeric:
    On Error GoTo 0
    MsgBox ("Please try again with a number.")
    Exit Sub

NumericEntry:
    For i = 1 To 9
        Sheets(i).Select
        Rows(j).Insert
        Sheets(i).Select
        Rows(j - 1).Select
        Selection.AutoFill Destination:=Rows("(j - 1):(j)"), Type:=xlFillDefault
        On Error Resume Next
            Rows(j).SpecialCells(xlCellTypeConstants).ClearContents
        On Error GoTo 0
    Next i

    Sheets(1).Select

    ActiveCell.FormulaR1C1 = ""
End Sub

В строке «Ошибка времени выполнения 13»: несоответствие типов »:

Selection.AutoFill Destination:=Rows("(j - 1):(j)"), Type:=xlFillDefault

У кого-нибудь есть идеалы относительно того, что я здесь делаю неправильно?

Заранее спасибо!

1 Ответ

0 голосов
/ 01 мая 2018

Заключая переменные в кавычки, они интерпретируются как String s. Вам нужны только кавычки вокруг :.

Изменение

Selection.AutoFill Destination:=Rows("(j - 1):(j)"), Type:=xlFillDefault 

до:

Selection.AutoFill Destination:=Rows(j - 1 & ":" & j), Type:=xlFillDefault

РЕДАКТИРОВАТЬ: Я также почти уверен, что здесь вам понадобятся ссылки на столбцы, например:

Selection.AutoFill Destination:=Range("A" & j - 1 & ":G" & j), Type:=xlFillDefault
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...