返回列表 上一主題 發帖

多選CheckBox的VBA怎麼寫?

回復 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

回復 8# Hsieh
我指的是:


謝謝您!

TOP

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

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

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

TOP

        靜思自在 : 為自己找藉口的人永遠不會進步。
返回列表 上一主題