Как я могу изменить эту функцию с InputBox на UserForm? - PullRequest
1 голос
/ 04 апреля 2019

Я пытаюсь изменить функцию Testing (), чтобы использовать пользовательскую форму вместо поля ввода приложения. Я уже создал пользовательскую форму с вводом имени пользователя и пароля и кнопкой «Войти», но я не уверен, как должен выглядеть код кнопки входа в форму.

Я включил функцию Login, на которую она ссылается, и соответствующие объявления.

Public Sub Testing()
    Dim User As String
    Dim Pass As String
    User = Application.InputBox("Enter Your Username")
    Pass = Application.InputBox("Enter Your Password")
    Const AccountID = "Cerberus"
    Dim Cerberus As New Class_Cerberus
    Call Cerberus.Login(AccountID, User, Pass)

    Range("A1") = Cerberus.GUID

    Set Cerberus = Nothing

End Sub
Private Online_ As Boolean
Private Username_ As String
Private Password_ As String
Private AccountID_ As String
Private GUID_ As String
Private GUID_Timestamp As Date

Public Function Login(Optional ByRef AccountID As String, Optional ByRef Username As String, Optional ByRef Password As String) As Boolean
    If Not Online_ Then 'Verify connectivity before proceeding
        If Not CheckOnline Then Exit Function
    End If
    'If any credentials are given at this time, store them for later use and proceed with login
    If Not IsMissing(AccountID) Then AccountID_ = AccountID
    If Not IsMissing(Username) Then Username_ = Username
    If Not IsMissing(Password) Then Password_ = Password

    If Not (Len(GUID_) = 0 Or GUID_Timestamp < (Now() - TimeSerial(8, 0, 0))) Then Login = True
    Dim RawJSON As String: RawJSON = GetHTTP(BASE_URL & "?fct=login&accountid=" & AccountID_ & "&username=" & Username_ & "&password=" & Password_ & "&browserinfo=NULL&format=JSON")
    Dim JSON As Object: Set JSON = JsonConverter.ParseJson(RawJSON)

    Login = JSON("status") = "ok"
    GUID_ = JSON("results")(1)("GUID")
    GUID_Timestamp = GetDateTime(JSON("results")(1)("DATE_ALIVE"))
    Set JSON = Nothing
End Function

1 Ответ

0 голосов
/ 04 апреля 2019

Таким образом, ваша кнопка входа будет CommandButton, которую вы можете перетащить из Toolbox.

enter image description here

Вы сказали, что уже сделали поле User / Pass Input, поэтому код CommandButton будет примерно таким:

Public Sub Testing()
    Dim User As String
    Dim Pass As String
    User = TextBox1.Value 'Changed from Application.InputBox("Enter Your Username")
    Pass = TextBox2.Value
    Const AccountID = "Cerberus"
    Dim Cerberus As New Class_Cerberus
    Call Cerberus.Login(AccountID, User, Pass)

    Range("A1") = Cerberus.GUID

    Set Cerberus = Nothing

    Unload Me 'This closes the Userform, perhaps add a check If Login = True then Unload Me

End Sub

Примечание: PWD можно скрыть через свойство поля ввода через PasswordChar = *.

enter image description here

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