返回列表 上一主題 發帖

[發問] onaction="Macro",macro有參數如何寫呀

[發問] onaction="Macro",macro有參數如何寫呀

onaction="Macro",macro有參數如何寫呀
lmh

你可以把你的問題在具體一點的描述嗎?
這樣有點難回答你的問題,

如果你是指  Macro是一個變數的話,
直接把雙引號拿掉即可。

如果Macro是一個Sub要添加參數的話
Macro 變數A,變數B,變數C

如果Macro是一個Function要添加參數的話
Macro(變數A,變數B,變數C)

TOP

回復 1# mhl9mhl9

是要問CommandBarButton.OnAction 的部分嗎?

TOP

回復 3# naruto018

yes ,我真是想問commandbar的control中 onaction="巨集名稱" 這個巨集的參數任何寫?
lmh

TOP

回復 3# naruto018

yes 問CommandBarButton.OnAction 的部分.
我做了個commandbar,有4個Button,執行同一個sub,只是參數分別是1,2,3,4.
當然最好是 onaction=sub名稱+參數,但不知如何寫,不得意求其次,我現在用application.caller(2),也管用.如下:
   4個一樣 onaction="abcd""
   sub abcd
    xxx=application.caller(2)
    巨集名 xxx
    end sub
查到application.caller是個數組,有4個數,1,1,4105,0,第二數好像代表第幾個button,所以我用第二個數當參數
但究竟這4個數代表什麼,不清楚,也查不到,所以問題似乎解決了,但并不踏實.
lmh

TOP

回復 5# mhl9mhl9

參考看看
  1. Public Const B1 As String = "text-B1"
  2. Public Const B2 As String = "text-B2"
  3. Public Const B3 As String = "text-B3"

  4. Public Sub abc()
  5.     With Application.CommandBars.Add("測試", msoBarTop, , True)
  6.         .Visible = True
  7.         With .Controls.Add(Type:=msoControlPopup) '參數代入數字
  8.             .Caption = "測試1"
  9.             With .Controls.Add(Type:=msoControlButton)
  10.                 .Caption = "測試0"
  11.                 .OnAction = "text" '沒代入參數
  12.             End With
  13.             With .Controls.Add(Type:=msoControlButton)
  14.                 .Caption = "測試1-1"
  15.                 .OnAction = "'text 1'" '代入參數會在原本最外圍的雙引號裡面分別加單引號
  16.             End With
  17.             With .Controls.Add(Type:=msoControlButton)
  18.                 .Caption = "測試1-2"
  19.                 .OnAction = "'text 1,2'" '不同參數用逗號分開
  20.             End With
  21.             With .Controls.Add(Type:=msoControlButton)
  22.                 .Caption = "測試1-3"
  23.                 .OnAction = "'text 1,2,3'"
  24.             End With
  25.         End With
  26.         With .Controls.Add(Type:=msoControlPopup) '參數代入文字
  27.             .Caption = "測試2"
  28.             With .Controls.Add(Type:=msoControlButton)
  29.                 .Caption = "測試2-1"
  30.                 .OnAction = "'text ""B1""'" '文字左右側分別加上兩個雙引號
  31.             End With
  32.             With .Controls.Add(Type:=msoControlButton)
  33.                 .Caption = "測試2-2"
  34.                 .OnAction = "'text ""B1"",""B2""'"
  35.             End With
  36.             With .Controls.Add(Type:=msoControlButton)
  37.                 .Caption = "測試2-3"
  38.                 .OnAction = "'text ""B1"",""B2"",""B3""'"
  39.             End With
  40.         End With
  41.         With .Controls.Add(Type:=msoControlPopup) '參數代入變數
  42.             .Caption = "測試3"
  43.             With .Controls.Add(Type:=msoControlButton)
  44.                 .Caption = "測試3-1"
  45.                 .OnAction = "'text B1'"
  46.             End With
  47.             With .Controls.Add(Type:=msoControlButton)
  48.                 .Caption = "測試3-2"
  49.                 .OnAction = "'text B1,B2'"
  50.             End With
  51.             With .Controls.Add(Type:=msoControlButton)
  52.                 .Caption = "測試3-3"
  53.                 .OnAction = "'text B1,B2,B3'"
  54.             End With
  55.         End With
  56.     End With
  57. End Sub


  58. Public Sub text(Optional Arg1 = "A1", Optional Arg2 = "A2", Optional Arg3 = "A3")  '預設沒代入參數的預設值
  59. MsgBox Arg1 & Chr(10) & Chr(13) & Arg2 & Chr(10) & Chr(13) & Arg3
  60. End Sub
複製代碼

TOP

將參數寫入.Parameter中,程序再引用.Parameter的值,
其實也可以.Tag代替,
也可以自訂變數,寫入變數,再引用變數,其實這樣比較靈活,我都自訂變數。
Word呈現極致的靜態之美,Excel展現極致的動態之美。

TOP

回復 7# linyancheng


    請大大寫一段程式的例子,以資模仿學習
謝謝

TOP

#2,#3,#6
謝謝各位幫忙,我求助的問題相信不少人都想知道,這兒我再簡單提一提:
當你做commandbarbutton,其中有一句"Onaction="sun名稱"",如果sub名稱有參數任何寫?
答案就是#6告訴的  Onaction="'sub名稱 參數'",就是雙引號+單引號+sub名稱+空格+參數+單引號+雙引號,就這麼簡單.
其他方法也提供我們不少思路,但就上述一條,最簡單最好用,再次謝謝大家!
lmh

TOP

actioncontrol 與 tag 的用法 參考 Microsoft 網頁如下:
https://msdn.microsoft.com/en-us/vba/office-shared-vba/articles/commandbars-actioncontrol-property-office#example

TOP

        靜思自在 : 信心、毅力、勇氣三者具備,則天下沒有做不成的事。
返回列表 上一主題