返回列表 上一主題 發帖

多選CheckBox的VBA怎麼寫?

多選CheckBox的VBA怎麼寫?

在一個儲存格裡放著CheckBox所選取的項目,並用 , 隔開,請問這段VBA是怎麼寫?謝謝!


CheckBox.rar (14.15 KB)

回復 1# maikoyuki
  1. Private Sub CommandButton1_Click()
  2. Dim Ct As OLEObject
  3. For Each Ct In Me.OLEObjects
  4.   If Ct.progID = "Forms.CheckBox.1" Then
  5.    If Ct.Object.Value = True Then mystr = IIf(mystr = "", Ct.Object.Caption, mystr & "," & Ct.Object.Caption)
  6.   End If
  7. Next
  8. [B11] = mystr
  9. End Sub

  10. Private Sub CommandButton2_Click()
  11. For Each Ct In Me.OLEObjects
  12.   If Ct.progID = "Forms.CheckBox.1" Then
  13.    Ct.Object.Value = False
  14.   End If
  15. Next
  16. [B11] = ""
  17. End Sub
複製代碼
學海無涯_不恥下問

TOP

回復 2# Hsieh
不好意思 , 想請教一下
Me.OLEObjects 是不是指該工作表的所有ActiveX控制項? 不含表單控制項?

還有  Ct.progID = "Forms.CheckBox.1"
控制項的progID要怎麼得知 ?  ".1" 有特別意義嗎?
其他的控制項也是同樣格式嗎?

TOP

回復 3# stillfish00
沒錯不包含表單控制項
因為是在工作表中按鈕的程序,所以ME就是指該工作表
progID可選取該物件後,看編輯列中的刮號內文字
   
學海無涯_不恥下問

TOP

回復 4# Hsieh
謝謝版大開示~

TOP

回復  maikoyuki
Hsieh 發表於 2012-11-21 19:46



   
謝謝大哥解答,順便請問一下,如果工作表中有很多個Forms.CheckBox.1、Forms.TextBox.1、Forms.OptionButton.1、Forms.ListBox.1、Forms.ComboBox.1等要把它們全變成空值,代碼應該如何簡單的寫?謝謝!

TOP

回復 4# Hsieh
請問 Hsieh 版大, 表單控制項只能設定在 UserForm 內嗎?
  1. Private Sub UserForm_Click()
  2.     Dim Ct As Control, mystr As String
  3.       
  4.     For Each Ct In Me.Controls
  5.         If TypeName(Ct) = "CheckBox" Then
  6.             If Ct.Value = True Then mystr = IIf(mystr = "", Ct.Caption, mystr & "," & Ct.Caption)
  7.         End If
  8.     Next
  9.     Sheet1.[B12] = mystr
  10. End Sub
複製代碼
如果將以上語法應用在 工作表單 Sheet1 本身內的話, 他會出現 "找不到方法或資料成員",
請您賜教,謝謝!

TOP

回復 7# c_c_lai


    2#程式碼適用於工作表內ActiveX控制項
請注意所謂表單控制項跟ActiveX控制項的區別
學海無涯_不恥下問

TOP

回復 8# Hsieh
我指的是:


謝謝您!

TOP

本帖最後由 GBKEE 於 2012-11-22 16:51 編輯

回復 9# c_c_lai
Me.Controls         ->UserForm表單(MSForms)的控制項物件集合
Me.OLEObjects   ->工作表中的控制項物件集合

TOP

        靜思自在 : 有心就有福,有願就有力,自造福田,自得福緣。
返回列表 上一主題