亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將事件處理程序分配給在VBA中動態創建的用戶窗體上的控件

將事件處理程序分配給在VBA中動態創建的用戶窗體上的控件

不負相思意 2019-11-04 10:01:33
我在Internet上發現了很多資源,這些資源幾乎可以完成我想做的事情,但不完全是我的工作。我有一個命名范圍“ daylist”。對于dayList中的每一天,我想在用戶表單上創建一個按鈕來運行當天的宏。我能夠動態添加按鈕,但不知道如何將daycell.text從命名范圍傳遞到按鈕,事件處理程序和宏:S這里,我必須創建用戶表單的代碼:Sub addLabel()ReadingsLauncher.Show vbModelessDim theLabel As ObjectDim labelCounter As LongDim daycell As RangeDim btn As CommandButtonDim btnCaption As StringFor Each daycell In Range("daylist")    btnCaption = daycell.Text    Set theLabel = ReadingsLauncher.Controls.Add("Forms.Label.1", btnCaption, True)    With theLabel        .Caption = btnCaption        .Left = 10        .Width = 50        .Top = 20 * labelCounter    End With    Set btn = ReadingsLauncher.Controls.Add("Forms.CommandButton.1", "runButton", True)    With btn        .Caption = "Run Macro for " & btnCaption        .Left = 80        .Width = 80        .Top = 20 * labelCounter    '   .OnAction = "btnPressed"    End With    labelCounter = labelCounter + 1Next daycellEnd Sub為了解決上述問題,我目前提示用戶輸入他們想運行的日期(例如Day1)并將其傳遞給宏,然后它可以工作:Sub B45runJoinTransactionAndFMMS()loadDayNumber = InputBox("Please type the day you would like to load:", Title:="Enter Day", Default:="Day1")Call JoinTransactionAndFMMS(loadDayNumber)End SubSub JoinTransactionAndFMMS(loadDayNumber As String)xDayNumber = loadDayNumberSheets(xDayNumber).Activate-Do stuffEnd Sub因此,對于我的每個runButton,它都需要顯示daycell.text,并運行一個使用相同文本作為參數的宏,以選擇要執行其工作的工作表。任何幫助都是極好的。我見過響應,它們動態地編寫了VBA代碼來處理宏,但是我相信一定可以通過傳遞參數來更好地完成它,只是不確定如何做到。提前謝謝了!
查看完整描述

3 回答

?
哆啦的時光機

TA貢獻1779條經驗 獲得超6個贊

捕獲單擊工作表的示例。將其放在工作表模塊中:


Private Sub Worksheet_SelectionChange(ByVal Target As Range)

  ' e.g., range(A1:E1) is clicked

  If Not Application.Intersect(Target, Range("A1:E1")) Is Nothing Then

    MsgBox "You clicked " & Target.Address

  End If

End Sub


查看完整回答
反對 回復 2019-11-04
?
回首憶惘然

TA貢獻1847條經驗 獲得超11個贊

有用!測試我使用的代碼:(Sub intersectCallingMacro() Range("D8").Select 'used for testing only Set target = ActiveCell If Not Application.Intersect(target, Range("A1:M100")) Is Nothing Then Call testIntersect(ActiveCell.Value) End If End Sub Sub testIntersect(dayString As String) Dim xDayString As String xDayString = dayString Sheets(xDayString).Activate End Sub 為代碼格式化道歉)將單元值作為參數傳遞給宏。驚人!

查看完整回答
反對 回復 2019-11-04
  • 3 回答
  • 0 關注
  • 1025 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號