您的SelectedPPT
正在打破封裝並且可以從表單外部設置,而不僅僅是表單的代碼。您可以通過現場Private
和暴露Property Get
程序爲它減輕這一設計問題:
Option Explicit
Private SelectedPPT As String
Public Property Get SelectedFile() As String
SelectedFile = SelectedPPT
End Property
設置在窗體的Initialize
或Activate
處理程序ComboBox
行源,所以它的初始化一次。然後在ComboBox中選擇更改時指定SelectedPPT
- 這是您的ComboBox1_Change
處理程序。
這消除了對[設置PowerPoint]按鈕及其Click
處理程序的需求。
我將有一個[確定]和[取消]按鈕,我會做的形式記住無論是取消:
Private IsCancelled As Boolean
Public Property Get Cancelled() As Boolean
Cancelled = IsCancelled
End Property
Private Sub OkButton_Click()
Me.Hide
End Sub
Private Sub CancelButton_Click()
IsCancelled = True
Me.Hide
End Sub
然後你還需要考慮的情況:用戶點擊紅色的X按鈕關閉表格;你可以做,通過處理形式QueryClose
事件:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = VbQueryClose.vbFormControlMenu Then
IsCancelled = True
Cancel = True
Me.Hide
End If
End Sub
邏輯的其餘部分屬於調用代碼 - 假設的形式被稱爲MyAwesomeForm
;你有這樣的事情:
Dim filename As String
With New MyAwesomeForm
.Show
If Not .Cancelled Then
filename = .SelectedFile
'do whatever you wanted to do with that filename
End If
End With
注:
- 在任何時候調用的形式
Unload Me
- 這是調用者的責任,創造和破壞形式對象
- 來電每次使用表格的
New
實例
- 調用者具有對任何值的只讀訪問權限for通過屬性公開
'功能PassPPT(strSelectedPPT作爲字符串)......結束功能'使用像'PassPPT(me.combobox1.value)' –