Код VBA Вопрос: Могу ли я сделать GoTo переменным? - PullRequest
0 голосов
/ 28 марта 2019

Мне было просто интересно, можно ли пропустить мой макрос на метку, которая является переменной?Так что-то вроде ниже (что не работает).Идея состоит в том, чтобы сгенерировать код на основе времени и перейти к этой метке в моем коде.Так что, если код 900, я бы хотел пропустить до 900: и установить х = 1.

Надеюсь, это достаточно ясно.

Sub test()

Dim skipcode As String

'generate the label name
    If Minute(Now) > 28 And Minute(Now) < 58 Then
        If Hour(Now) = 0 Then
           skipcode = "0030"
        Else
            skipcode = Hour(Now) & "30"
        End If
    Else
        If Hour(Now) = 0 Then
           skipcode = "000"
        Else
            skipcode = Hour(Now) & "00"
        End If
    End If

'attempting to get the macro to skip to the label
    GoTo skipcode


' desired skip point
900:
x = 1

1000:
x = 2

End Sub

1 Ответ

3 голосов
/ 28 марта 2019

Вы можете сделать что-то вроде этого:

Sub test()

    Dim skipcode As String
    Dim dt As Date

    dt = Now
    'i'd simplify your set of `if` - this way:
    skipcode = IIf(Minute(dt)>28 And Minute(dt)<58, Hour(dt) & "30", Hour(dt) & "00")

    'attempting to get the macro to skip to the label
    GoTo SkipPoint


' desired skip point
SkipPoint: 

    Select Case skipcode 
        Case "900" 'needs double quotes due to type of variable
            x = 1
        Case "1000"
            x = 2
    End Select


End Sub

[EDIT]

В соответствии с предложением @Zack, окончательная версия вашей процедуры может выглядеть следующим образом:

Sub test()

    Dim skipcode As String
    Dim dt As Date

    dt = Now
    skipcode = IIf(Minute(dt)>28 And Minute(dt)<58, Hour(dt) & "30", Hour(dt) & "00")

    Select Case skipcode 
        Case "900" 'needs double quotes due to type of variable
            x = 1
        Case "1000"
            x = 2
    End Select

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...