返回列表 上一主題 發帖

[發問] 請教 關於 程式開頭 的相關疑惑(承接 CheckBox 核選問題)

本帖最後由 GBKEE 於 2012-10-18 09:15 編輯

回復 1# mark15jill
使用物件類別 試試看
  1. Dim TheCheck() As New Class1  '動態陣列 宣告為新的Class1物件類別物件
  2. Private Sub CommandButton1_Click()
  3.     Dim mycheckbox1 As MSForms.CheckBox
  4.     Dim Sh As Worksheet
  5.      Set Sh = ActiveSheet   
  6.     Sh.Columns("c:c").Clear
  7.     Sh.Columns("c:c").ColumnWidth = 15
  8.     kk = 1
  9.     For sjy = 1 To 450 Step 45
  10.         For sja = 1 To 900 Step 90
  11.             With Frame1.Controls.Add("forms.checkbox.1")
  12.                 Sh.Cells(kk, 1) = "王" & kk
  13.                 Sh.Cells(kk, 3) = .Name
  14.                 .Left = 10 + sja
  15.                 .Top = 10 + sjy
  16.                 .Width = 70
  17.                 .Height = 20
  18.                 .TextAlign = fmTextAlignCenter
  19.                 .BackColor = &HFFFFC0
  20.                 .Caption = Sh.Cells(kk, 1)
  21.                 ReDim Preserve TheCheck(0 To kk - 1)              '重新配置 動態陣列
  22.                 Set TheCheck(kk - 1).xlCheckbox = Controls(.Name)
  23.                 '動態陣列的元素 指定到物件模組內的物件
  24.             End With
  25.             kk = kk + 1
  26.         Next
  27.     Next
  28. End Sub
複製代碼
  1. 'VBA插入 物件類別模組 自動命名為Class1 的程式碼
  2. Option Explicit
  3. Public WithEvents xlCheckbox As MSForms.CheckBox
  4. Private Sub xlcheckbox_Click()
  5.     If xlCheckbox = True Then UserForm1.Label1.Caption = xlCheckbox.Caption
  6. End Sub
複製代碼

TOP

回復 3# mark15jill
你附檔模組 沒加上  Option Explicit  所以我測試時是沒問題
依你的能力,是可以試著修改的
2#
  1. Private Sub CommandButton1_Click()
  2.     Dim mycheckbox1 As MSForms.CheckBox
  3.     Dim Sh As Worksheet
  4.     Set Sh = ActiveSheet ' **少了這程式碼請加入 **
複製代碼

TOP

回復 7# mark15jill
沒附檔,只能猜猜看
主程式區塊   是UserForm中  
Private Sub CommandButton1_Click()   改成  
Private Sub UserForm_Activate()  與 Private Sub UserForm_Initialize() 是一樣的
主程式區塊   是其他模組中
  1. Private Sub CommandButton1_Click()
  2. '
  3. '

  4.   Next
  5.    Cells(1, 3).Select
  6. UserForm1.Show   
  7. End Sub     
複製代碼

TOP

本帖最後由 GBKEE 於 2012-10-19 12:13 編輯

回復 9# mark15jill
CommandButton2 改為UserForm_Click (UserForm_Active 只有表單顯示時才有的  )   將Label1.Caption  顯示目前核選之Checkbox 的  
可也是可以 條件是已有產生 10*10 個 Checkbox控制項

點選任一 Checkbox ,產生效果如同原始 CommandButton2 之效果相同
2#  使用物件類別  2# Private Sub CommandButton1_Click() 名稱 改成
Private Sub UserForm_Activate()  或是 Private Sub UserForm_Initialize()  皆可以
  1. 'VBA插入 物件類別模組 自動命名為Class1 的程式碼
  2. Option Explicit
  3. Public WithEvents xlCheckbox As MSForms.Checkbox
  4. Private Sub xlcheckbox_Click()
  5.     '    If xlCheckbox = True Then UserForm1.Label1.Caption = "現在核選:" & xlCheckbox.Name
  6.     複選
  7. End Sub
  8. Private Sub 複選()
  9.     Dim xlCcaptionas As String, E As MSForms.Control
  10.     With UserForm1
  11.         For Each E In .Controls
  12.             If InStr(UCase(E.Name), UCase("checkbox")) Then
  13.                 If E.Value = True Then xlCcaptionas = IIf(xlCcaptionas = "", E.Name, xlCcaptionas & "," & E.Name)
  14.             End If
  15.         Next
  16.         If xlCcaptionas <> "" Then
  17.             .Label1.Caption = "現在核選:" & xlCcaptionas
  18.         Else
  19.             .Label1.Caption = ""
  20.         End If
  21.     End With
  22. End Sub
複製代碼

TOP

回復 12# mark15jill
見笑了 2010 尚未摸過
2003 如圖


TOP

        靜思自在 : 人要自愛,才能愛普天下的人。
返回列表 上一主題