Ссылка на книгу через VBA не принимает переменную - PullRequest
0 голосов
/ 08 мая 2019

Я пытаюсь настроить ссылки на другие книги, в результате чего местоположение является статическим: G:\XY\XY\[Workbook2019.xlsx]2019-04'!C1

Поскольку эти ссылки меняются в зависимости от того, какой это месяц, для простоты использования я хочу установить поле ввода, в котором можно ввести число, например 01 или 04, и оно поменяет часть месяца в ссылке.

Мой код выглядит так:

Sub MonthRef()
    Dim strMonth As String

    strMonth = InputBox("Enter month as interger (e.g. 01 for Jan; 02 for Feb.)", "Month")
    Range("B4").Formula = "='G:\XY\[XY.xlsx]2019-" & strMonth & " '!C1"
End Sub

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

Кажется, я не могу найти проблему. Любая помощь с благодарностью!

1 Ответ

0 голосов
/ 09 мая 2019

Лично я бы уточнил это немного дальше, чтобы избежать других ошибок от ввода пользователя. Это можно сделать с помощью функции для проверки правильности введенных пользователем критериев и циклического повторения, пока либо не произойдет, либо пользователь не отменит

Private Function TestUserInput(v As String) As Boolean
    TestUserInput = False

    If IsNumeric(v) And Len(v) <= 2 Then
        If CLng(v) > 0 And CLng(v) <= 12 Then
            TestUserInput = True
        End If
    End If
End Function

Public Sub MonthRef()
    Dim strMonth As String
    Dim IsUserInputValid As Boolean
    Dim InputBoxPrompt As String

    InputBoxPrompt = "Enter month as integer (e.g. 01 for Jan; 02 for Feb.)"

    Do
        strMonth = Trim(InputBox(InputBoxPrompt, "Month"))

        ' Test if strMonth is valid
        IsUserInputValid = TestUserInput(strMonth)

        ' Handle User cancelled
        If strMonth = vbNullString Then
            Exit Sub
        ' If input is not valid then prompt user
        ElseIf IsUserInputValid = False Then
            MsgBox prompt:="Input not valid. " & InputBoxPrompt, Title:="Error"
        End If
        ' Loop until input is valid or User cancels
    Loop Until IsUserInputValid

    Range("B4").Formula= "='G:\XY\[XY.xlsx]2019-" & Format(strMonth, "00") & "'!C1"
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...