返回列表 上一主題 發帖

[發問] 如何判斷我剛所打勾的CheckBox

回復 3# av8d
2# oobird  附檔 物件類別模組
  1. Option Explicit
  2. Public WithEvents CheckboxGroup As MSForms.CheckBox
  3. Private Sub CheckboxGroup_Click()
  4.    '-------方法1  直接給它
  5.    UserForm1.TextBox1 = CheckboxGroup.Caption
  6.    
  7.    '-------方法2 點一下CommednBurron
  8.    '說明 UserForm1模組 需 Public xlText as  String
  9.      UserForm1.xlText = CheckboxGroup.Caption
  10.    '說明 UserForm1中 CommednBurron 程式-> UserForm1.TextBox1 = UserForm1.xlText
  11.    
  12.    'MsgBox "You Click " & CheckboxGroup.Caption & vbNewLine & _
  13.     "Value is " & CheckboxGroup.Value
  14. End Sub
複製代碼

TOP

回復 5# av8d
我在4# 有寫是 2# oobird  附檔 物件類別模組
物件類別模組 cControlArray 程序 如下
  1. Option Explicit
  2. Public WithEvents CheckboxGroup As MSForms.CheckBox
  3. Private Sub CheckboxGroup_Click()
  4.     UserForm1.xlText = CheckboxGroup.Caption
  5. End Sub
複製代碼
UserForm1 的程式碼
  1. Public xlText As String
  2. Private Sub CommandButton1_Click()
  3.    '說明 UserForm1中 CommednBurron 程式
  4.    UserForm1.TextBox1 = UserForm1.xlText
  5. End Sub
  6. Private Sub UserForm_Initialize()
  7. Dim cCBs As Integer
  8. Dim ctl As Control
  9.    cCBs = 0
  10.    For Each ctl In Me.Controls
  11.        If TypeName(ctl) = "CheckBox" Then
  12.            cCBs = cCBs + 1
  13.            ReDim Preserve aryCBs(1 To cCBs)
  14.            Set aryCBs(cCBs).CheckboxGroup = ctl
  15.        End If
  16.    Next ctl
  17. End Sub
複製代碼
我之所以不直接上傳檔案 是希望各位多練習才會進步的

TOP

回復 9# av8d

7# 是 UserForm1 的程式碼
有許多 UserForm 那在每一UserForm 程式碼中 依樣畫葫蘆寫下它自己的程式碼

TOP

回復 13# av8d
要了解物件

    test.rar (14.43 KB)

TOP

回復 17# av8d
7#  UserForm1的程式碼 是依 2# 的附檔修改
2# 的附檔中aryCBs 變數 是 Module1 的公用變數
如今你有4個UserForm 皆須私有的 aryCBs變數
  1. '4個UserForm 的 程式碼
  2. Public xlText As String
  3. Dim aryCBs()  As New cControlArray
  4. Private Sub UserForm_Initialize()
  5. Dim cCBs As Integer
  6. Dim ctl As Control
  7.    cCBs = 0
  8.    For Each ctl In Me.Controls
  9.        If TypeName(ctl) = "CheckBox" Then
  10.            cCBs = cCBs + 1
  11.            ReDim Preserve aryCBs(0 To cCBs)
  12.            Set aryCBs(cCBs).CheckboxGroup = ctl
  13.        End If
  14.    Next ctl
  15. End Sub
複製代碼

TOP

本帖最後由 GBKEE 於 2012-8-14 14:42 編輯

回復 19# c_c_lai
一個是從 0 開始起算, 另一組是從 1 開始起算,但 Test.rar  之 aryCBs(1 To  1)  (第一次) 就好像沒意義了?
這問的好!  敬佩了 看的很仔細
ReDim Preserve aryCBs(1 To cCBs)
ReDim 陳述式 在程序層次中用來重新配置動態陣列變數的儲存空間。
  1. cCBs = cCBs + 1
  2. ReDim Preserve aryCBs(1 To cCBs) ' aryCBs(1  To 1) 只有有1元素
複製代碼
  1. cCBs = cCBs + 1
  2. ReDim Preserve aryCBs(0 To cCBs) ' aryCBs(0  To 1) 有2元素 多一元素      
複製代碼
  1. ReDim Preserve aryCBs(0 To cCBs) ' aryCBs(0  To 0)  只有有1元素
  2. cCBs = cCBs + 1    '加上1元素
複製代碼
  1. ReDim Preserve aryCBs(1 To cCBs) '  aryCBs(1  To 0)    會有錯誤
  2. cCBs = cCBs + 1
複製代碼

TOP

        靜思自在 : 有智慧才能分辨善惡邪正;有謙虛才能建立美滿人生。
返回列表 上一主題