返回列表 上一主題 發帖

表單控制項無法自動刪除

回復 1# reangame
  1. If sp.Name Like "ToggleButton*" Then Controls.Remove (sp.Name)
複製代碼
可參考這裡
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 3# reangame
  1. Dim XToggle() As New Class1
  2. Private Sub ComboBox1_Change()
  3. If ComboBox1 <> "" And ComboBox2 <> "" Then 行事曆製作
  4. End Sub
  5. Private Sub ComboBox2_Change()
  6. If ComboBox1 <> "" And ComboBox2 <> "" Then 行事曆製作
  7. End Sub
  8. Sub 行事曆製作()
  9.     Dim sp As Control
  10.     For Each sp In UserForm1.Frame2.Controls
  11.        If sp.Name Like "ToggleButton*" Then Me.Controls.Remove sp.Name
  12.     Next
  13.     day1 = DateSerial(Val(ComboBox1), Val(ComboBox2), 1)
  14.     day2 = DateSerial(Val(ComboBox1), Val(ComboBox2) + 1, 0)
  15.     w = Weekday(day1, vbMonday)
  16.     ReDim XToggle(day1 To day2)
  17.     For I = day1 To day2
  18.         k = Int((Day(I) + w - 2) / 7)
  19.         s = Weekday(I, vbMonday)
  20.         kk = Int((Day(I) + w - 2) / 7)
  21.         If kk = 5 Then
  22.             Frame1.Height = 262
  23.         Else
  24.             Frame1.Height = 222
  25.         End If
  26.         
  27.          With Frame2.Controls.Add("forms.ToggleButton.1")
  28.             .Top = (k * 38) - 1
  29.             .Left = (42 * (s - 1)) - 2
  30.             .Height = 38
  31.             .Width = 42
  32.             .Caption = Day(I)
  33.             Set XToggle(I).Toggle = Controls(.Name)
  34.             '物件變數指定為 Controls(.Name)
  35.         End With
  36.     Next
  37. End Sub
複製代碼
  1. Option Explicit
  2. Public WithEvents Toggle As MSForms.ToggleButton
  3. Private Sub Toggle_Click()
  4.     With Toggle
  5.         .BackStyle = 1
  6.         If .Value Then
  7.             .Font.Size = 18
  8.             .Font.Bold = True
  9.             .BackColor = vbYellow
  10.         Else
  11.             .Font.Size = 12
  12.             .Font.Bold = False
  13.             .BackColor = &H8000000F
  14.         End If
  15.     End With
  16. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

本帖最後由 GBKEE 於 2014-6-15 19:11 編輯

回復 5# reangame
Dim XToggle() As New Class1    ->定義XToggle()為物件類別模組,使用時機??
當你有許多相同物件的預設事件,不需每ㄧ物件寫一事件程式碼.

再者陣列不是從0開始,XToggle(i)怎麼不會出錯?
  1. Option Explicit
  2. Sub Ex()
  3.     Dim ar(-5 To 5)
  4.     ar(-5) = "Why"
  5.     MsgBox ar(-5)
  6. End Sub
複製代碼
在表單中 的 Dim XToggle() As New Class1 -> 宣告 XToggle() 型態為 新的 Class1
4# 的物件模組名稱為 Class1為預設的.新增依序會為 Class2,Class3....,亦可依喜好命名,
Dim XToggle() As New GbKee


Set XToggle(I).Toggle = Controls(.Name)     ->設定XToggle(I)控制項的名稱?  
.Toggle是什麼功用?->Public WithEvents Toggle As MSForms.ToggleButton   是這控制項   

F1也查不到
vba視窗中輸入ToggleButton 可查到

如何分辨Shapes、OLEObjects、Controls的差別或使用時機??
vba視窗中輸入Shapes ....可了解
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 小事不做、大事難成。
返回列表 上一主題