我是個菜鳥,所以請放縱,
我正在為一個excel專案做一個宏。
我有一個包含復選框的用戶表單,我也有一些標簽,我的目標是在復選框為真或假時啟用或禁用特定標簽。
我有 :
- 一個模塊,我在其中存盤我的函式和 subs
- 一個主模塊
- 用戶表單
當然我可以在用戶表單中寫:
Private Sub Checkbox1 ()
If Userform.Checbox1 = true then
Userform.label.enable = true
End if
但是我有一些復選框和標簽,我想創建一個子或函式以簡化我的代碼。
在我存盤函式的模塊中,a 寫道:
Sub EnableMyLabels(Checkbox as object , Label as object)
If Userform.Checkbox = true then
Userform.label.enable = true
End If
在我的用戶表單中,我嘗試像這樣使用它:
Call EnableMyLabels (Checkbox1 , Label1)
但它不起作用,我找不到我應該如何寫它,我正在嘗試做的甚至可能嗎?
謝謝
uj5u.com熱心網友回復:
你的潛艇應該像
Sub EnableMyLabels(cb As MSForms.CheckBox, lbl As MSForms.Label)
If cb.Value = True Then
lbl.Enabled = True
End If
End Sub
和電話
EnableMyLabels Checkbox1, Label1
您可能想從復選框上的事件中呼叫它,例如
Private Sub CheckBox1_Change()
EnableMyLabels CheckBox1, Label1
End Sub
uj5u.com熱心網友回復:
您應該嘗試相同的原則,但使用事件。
在您的 VBE 上,在 Userform 模塊的頂部下拉選單中選擇“Checkbox1”。
然后在右上角的下拉選單中選擇方法“單擊”。
應該已經創建了一個名為 Checkbox1_Click 的方法。
只要用戶單擊復選框,該代碼就會運行。
在那里包括所有“標簽邏輯”(或其他控制元件的邏輯)。
uj5u.com熱心網友回復:
當您直接傳遞物件時(默認通過 byRef 傳遞),則代碼中不需要Userform該詞。只需洗掉它,您的代碼應該可以完美運行。
Sub EnableMyLabels(Checkbox as object , Label as object)
If Checkbox = true then
label.Enabled = true 'fyi - Enabled not Enable
End If
End if
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/429772.html
