返回列表 上一主題 發帖

excel 產生多個核取方塊.

回復 3# sworder12
2003版可用
  1. Option Explicit
  2. Sub Ex()
  3.     Dim S As Integer, C As Variant
  4.     For Each C In ActiveSheet.OLEObjects
  5.         If C.Name Like "CheckBox*" Then
  6.             S = S + IIf(C.Object.Value, 1, 0)
  7.         End If
  8.     Next
  9.     MsgBox S
  10. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 5# ML089

  1. Option Explicit
  2. Sub Ex()
  3.     Dim S As Integer, C As Variant
  4.     For Each C In ActiveSheet.OLEObjects   '控制工具箱的控制項 (MSForms.CheckBox)
  5.         If C.Name Like "CheckBox*" Then
  6.             S = S + IIf(C.Object.Value, 1, 0)
  7.         End If
  8.     Next
  9.     MsgBox S
  10.     S = 0
  11.     For Each C In ActiveSheet.CheckBoxes    '表單的控制項(核取方塊)
  12.             S = S + IIf(C.Value = 1, 1, 0)
  13.     Next
  14.     MsgBox S
  15. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 7# ML089
控制工具箱的控制項,可寫VBA

感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 12# ML089


感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 18# sworder12
最後跳出小視窗顯示一個「 0 」 請附檔看看
解決造成兩個核取方塊重疊.的程式碼
  1. Option Explicit
  2. Sub Ex()
  3.     Dim C As Variant, B As Object, I As Integer, Rng(1 To 2) As Range
  4.     With ActiveSheet
  5.         Set Rng(1) = .Range("A:A").SpecialCells(2)  '處裡 A欗有資料的文字的 CheckBoxe
  6.         If .CheckBoxes.Count > 1 Then
  7.             For Each C In .CheckBoxes
  8.                 If Not Intersect(C.TopLeftCell.Offset(, -1), Rng(1).EntireColumn) Is Nothing Then
  9.                     If C.TopLeftCell.Offset(, -1) = "" Then
  10.                         C.TopLeftCell.Offset(, 1) = ""
  11.                         C.Delete
  12.                     Else
  13.                         C.Characters.Text = C.TopLeftCell.Offset(, -1)
  14.                         If Rng(2) Is Nothing Then
  15.                             Set Rng(2) = C.TopLeftCell.Offset(, -1)
  16.                         Else
  17.                             Set Rng(2) = Union(Rng(2), C.TopLeftCell.Offset(, -1)) '.Offset(, -1)
  18.                         End If
  19.                     End If
  20.                 End If
  21.             Next
  22.         End If
  23.         For Each C In Rng(1)        'Rng(2): CheckBoxe 的TopLeftCell儲存格
  24.             If Rng(2) Is Nothing Then
  25.                 Set B = .CheckBoxes.Add(C(1, 2).Left, C.Top, C.Width, C.Height)
  26.                 B.Characters.Text = C
  27.                 B.LinkedCell = C.Offset(, 2).Address
  28.             ElseIf Intersect(C, Rng(2)) Is Nothing Then
  29.                 Set B = .CheckBoxes.Add(C(1, 2).Left, C.Top, C.Width, C.Height)
  30.                 B.Characters.Text = C
  31.                 B.LinkedCell = C.Offset(, 2).Address
  32.             End If
  33.         Next
  34.     End With
  35. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 忘功不忘過,忘怨不忘恩。
返回列表 上一主題