返回列表 上一主題 發帖

多選CheckBox的VBA怎麼寫?

多選CheckBox的VBA怎麼寫?

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


CheckBox.rar (14.15 KB)

好詳細的講解,受益良多

TOP

回復 1# maikoyuki

雖然目前還不能下載來看看,但還是謝謝你

TOP

To Hsieh大:

一個後續問題,就是現在可以把要選取的東西放在儲存格上,那麼如果想要在這個儲存格上查詢有多少個選取了的項目,把它顯示在 [B13]以下的儲存格,每一個項目 佔一個儲存格,這個代碼如何處理?謝謝!

TOP

回復  12#  Hsieh

執行上出現錯誤,'438' , 物件不支援此屬性或方法。

TOP

回復 15# stillfish00
附上圖表,你便更易瞭解了。

TOP

整理一下 , 有錯請幫我指正~

表單上的控制項 :
        使用"表單"的Controls遍歷 ,
        找特定類型用TypeName檢查

工作表上的activeX控制項 :
        使用"工作表"的OLEObjects遍歷 ,
        找特定類型用progID檢查

工作表上的表單控制項 :
        在"工作表"的shapes中 , Type = msoFormControl 的 shape ,
        控制項屬性在shape.ControlFormat下 ,
        找特定類型用shape.FormControlType檢查

TOP

回復 11# Hsieh
終於 OK 了,謝謝 Hsieh 版大的解惑,在判斷 xlCheckBox 之前尚需先行過濾 Ct 的型態;
If Ct.Type = msoFormControl Then  ~  End If ,否則會產生錯誤訊息。
在 UserForm 內之 Ct.Caption 亦如 Hsieh 版大的範例一併須修改成 Ct.TextFrame.Characters.Text 。
  1. Sub Test2()
  2.     Dim Ct As Shape, mystr As String
  3.       
  4.     For Each Ct In Me.Shapes
  5.         If Ct.Type = msoFormControl Then
  6.             If Ct.FormControlType = xlCheckBox Then
  7.                 If Ct.ControlFormat.Value = 1 Then mystr = IIf(mystr = "", Ct.TextFrame.Characters.Text, mystr & "," & Ct.TextFrame.Characters.Text)
  8.             End If
  9.         End If
  10.     Next

  11.     Sheet1.[B12] = mystr
  12. End Sub
複製代碼
再次謝謝您等的指導!

TOP

回復 10# GBKEE
謝謝您的說明,學習VBA快一年了,到目前為止我幾乎沒使用過 ActiveX 控制項,
譬如下圖所示,我都是使用表單控制項處理,為何可以呢?難道在工作表單上一定
要使用 OLEObject 物件嗎?

TOP

回復 6# maikoyuki
  1. Sub 清除控制項的值()
  2. Dim Ct As OLEObject, k
  3. For Each Ct In Me.OLEObjects
  4.    k = Ct.Object.Value
  5.    Ct.Object.Value = IIf(TypeName(k) = "Boolean", False, IIf(TypeName(k) = "String", "", Null))
  6. Next
  7. End Sub
複製代碼
學海無涯_不恥下問

TOP

        靜思自在 : 【生命在呼吸間】佛陀說:「生命在呼吸間。」人無法管住自己的生命,更無法擋住死期,讓自己永住人間。既然生命去來這麼無常,我們更應該好好地愛惜它、利用它、充實它,讓這無常、寶貴的生命,散發它真善美的光輝,映照出生命真正的價值。
返回列表 上一主題