Передайте аргумент с Vba Excel в .onAction в Excel 2016 - PullRequest
0 голосов
/ 03 февраля 2020

Я пытаюсь передать значение, т.е. sArg, с помощью onAction. Но я не могу этого сделать. Я пытался так: "'btnT """ & sArg & """'" Но это не работает.


For i = 3 To LastRow Step 1

    Set t2 = ActiveSheet.Range(Cells(i, LastCol + 3), Cells(i, LastCol + 3))
    Set btn2 = ActiveSheet.Buttons.Add(t2.Left, t2.Top, t2.Width, t2.Height)
    sArg = CStr(i)
    With btn2

         .OnAction = "Sheet1.btnT"
      .Caption = "View " & i
      .Name = CStr(i)
    End With
Next i

Тогда функция

Sub btnT(Text)
MsgBox Text
Exit Sub

1 Ответ

0 голосов
/ 03 февраля 2020

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

Если аргумент - цифра c (например, 1), используйте

.OnAction = "'SubName 1'"

Если аргумент - строка затем используйте

.OnAction = "'SubName ""SomeText""'"
Sub Demo()
    Dim i As Long
    Dim Arg As Variant
    Dim t2 As Range
    Dim btn2 As Button

    For i = 3 To 4 Step 1

        Set t2 = ActiveSheet.Range(Cells(i, LastCol + 3), Cells(i, LastCol + 3))
        Set btn2 = ActiveSheet.Buttons.Add(t2.Left, t2.Top, t2.Width, t2.Height)
        Arg = i '<~~ adjust to suit your needs
        With btn2
            .Caption = "View " & i
            .Name = CStr(i)
            If IsNumeric(Arg) Then
                .OnAction = "'Sheet1.btnT " & Arg & "'"
            Else
                .OnAction = "'Sheet1.btnT """ & Arg & """'"
            End If
        End With
    Next i
End Sub

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