Как добавить рабочие листы с input.box после последнего активного листа? - PullRequest
0 голосов
/ 15 сентября 2018

Мои навыки в VBA находятся на начальном уровне.Я столкнулся с синтаксической ошибкой с кодом ниже.Как я могу реализовать "count" из input.box в приведенный ниже код, чтобы он работал?

Sub AddSheets_via_Input_Box()
    Dim Prompt As String
    Dim Caption As String
    Dim DefValue As Long
    Dim NumSheets As String
    DefValue = 1
    Prompt = "...how many people are working Fraud Today?"
    Caption = "Tell me…"
    NumSheets = InputBox(Prompt, Caption, DefValue)
    Sheets.Add(After:=Temp,Count:=NumSheets)
End Sub

Проблема начинается с:

(After:=Temp,Count:=NumSheets)

Все это работает с:

Sheets.Add Count:=NumSheets 

Но мне нужно, чтобы эти новые листы были добавлены после двух выходных листов в этой книге.

1 Ответ

0 голосов
/ 15 сентября 2018

Насколько я понимаю, вы не объявили Temp в своем коде (если это кодовое имя листа, вам также необходимо сообщить нам об этом).

Также вы не можете использовать подобные скобки в VBA, вы используете их только когда что-то группируете или вычисляете что-то, чтобы вернуться в левую часть выражения.

Вот приведенная в порядок версия:

Sub AddSheets_via_Input_Box()

    Dim numberOfSheets As Integer
    '// Here we use parentheses because we are returning a value to numberOfSheets...
    numberOfSheets = CInt(Trim$(InputBox("...how many people are working Fraud Today?", "Tell me…", 1)))

    If IsNumeric(numberOfSheets) Then 
        With ActiveWorkbook
            '// Here we DON'T use parentheses because we aren't returning or evaluating anything...
            .Sheets.Add After:=.Sheets("Temp"), Count:= numberOfSheets
        End With
    Else
        MsgBox "Invalid parameter supplied - use numbers only"
    End If

End Sub
...