簡體   English   中英

Excel VBA參考問題

[英]Excel VBA reference issues

我在網上跟蹤了一些示例,其中我試圖將值從一個子傳遞到VBA中的另一個子中,但出現錯誤:

編譯錯誤:過程聲明與具有相同名稱的事件或過程的描述不匹配。

Sub next_sat_click()

Dim iweekday As Integer
Dim nextsat As String
Dim index As Integer
Dim str_game_date As String

iweekday = weekday(Now(), vbSunday)

nextsat = Format((Now + 7 - iweekday), "mm-dd-yy")

Call set_button_Click(nextsat)

End Sub

Sub set_button_Click(ByRef nextsat As String)
......
End Sub

更改子名稱,如SetButtonOnClick。

如果您有一個具有相同名稱的按鈕,則excel會將_Click關鍵字保留給按鈕上的Click事件。

您不能更改事件處理程序的參數(參數名稱除外)。 這也意味着如果不需要任何參數,則無法添加任何參數。 甚至不是Optional ByRef nextsat As String也可以工作。

有三種方法可以在UserForm中的事件處理程序之間傳遞值:

  1. 使用全局變量( 永遠不推薦使用);
  2. 通過UserForm.tag屬性(建議使用簡單值,例如字符串)。 如果已經永久使用,顯然不能使用;
  3. 通過一個或多個隱藏控件(建議使用多個或復雜值以及簡單值)。

我使用了第二種方法:

Sub next_sat_click()

Dim iweekday As Integer
Dim nextsat As String
Dim index As Integer
Dim str_game_date As String

iweekday = Weekday(Now(), vbSunday)

nextsat = Format((Now + 7 - iweekday), "mm-dd-yy")

Me.Tag = nextsat

End Sub

Sub set_button_Click()
Dim nextsat As String
nextsat = Me.Tag
......
End Sub

在您的情況下,更好的解決方案可能是有一個可見的 TextBox,當用戶單擊next_sat時,您可以在其中存儲計算出的日期,以便用戶可以看到它。 然后在set_button處理程序中,從TextBox.Text獲取它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM