返回列表 上一主題 發帖

excel 產生多個核取方塊.

回復 14# stillfish00
蠻不錯的詮釋,受教了!

TOP

本帖最後由 stillfish00 於 2013-9-6 11:17 編輯

回復 12# ML089
翻了一下書,有寫到 Forms Control 和 ActiveX Control 各自優點,整理一下。

Forms Control :
    *可用在 Chart sheets,ActiveX Control 不能。
    *與工作表的結合較緊密,像"標籤"或"按鈕"可在公式列去參考,以動態地設定控制項文字。
        又如"清單方塊"可在其控制項的輸入範圍指定已定義的範圍名稱。
    *容易同時指定很多個控制項到同一個VBA程序,要達到同樣功能 ActiveX Control 需要比較複雜的物件類別的方法。
    *當使用多視窗或分割視窗時,ActiveX Control 只會作用在原視窗,Forms Control 會作用在任何視窗。

ActiveX Control :
    *ActiveX Control 控制項的外觀有較多屬性可以調整。
    *有比較多種類的控制項可使用。
    *可以回應控制項多種不同類型的事件,Forms Control 只能對應執行一個巨集。

TOP

回復 12# ML089


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

TOP

回復 9# oobird
回復 2# oobird

我用oobird超版2#的程式碼加上LinkedCell屬性也可以用來計算,但按右鍵選項中「指定巨集」就變成灰色不能選用。
OLEObjects.Add是否比CheckBoxes.Add使用上更有彈性?
  1. Sub 選取格_FormsCheckBox()
  2.     For Each C In Selection.Cells.SpecialCells(2)
  3.         Set b = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1", _
  4.                                            Left:=C.Left, Top:=C.Top, Width:=C.Width, Height:=C.Height)
  5.         b.Object.Caption = C.Value
  6.         b.LinkedCell = C.Address '連結該位置以TRUE、FALSE表示,以利後續統計
  7.         'C.Value = False '起始值設定
  8.     Next
  9. End Sub
複製代碼
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

回復 8# GBKEE
回復 9# oobird

我用控制工具箱插入CheckBox1後,以右鍵選用出現的是「檢視程式碼」
我用oobird大9#的程式插入CheckBoxes後,以右鍵選用出現的是「指定巨集」
這是不一樣的物件嗎?

「檢視程式碼」與「指定巨集」的使用方式不一樣,請各位高手有沒有習慣性用那一種比較好用。

{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

回復 9# oobird


    結果如圖:

TOP

若你想用LinkedCell屬性計算,那就是表單工具的核取方塊了,可改成這樣:(例如LinkedCell放在m欄)
  1. Sub test()
  2.     For Each c In ActiveSheet.Cells.SpecialCells(2)
  3.         Set b = ActiveSheet.CheckBoxes.Add(c(1, 2).Left, c.Top, c.Width, c.Height)
  4.         b.Characters.Text = c.Value
  5.         i = i + 1
  6.         b.LinkedCell = Cells(i, 13).Address
  7.     Next
  8. End Sub
複製代碼

TOP

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

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

TOP

本帖最後由 ML089 於 2013-9-5 17:31 編輯

回復 6# GBKEE


    原來 CheckBox 與 核取方塊不同,謝謝你詳細的解說

   這兩個使用上有何差別?
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

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

        靜思自在 : 【時間如鑽石】時間對一個有智慧的人而言,就如鑽石般珍貴;但對愚人來說,卻像是一把泥土,一點價值也沒有。
返回列表 上一主題