一個一個檢查CheckBox內容太累了,用用程式的方法來取得八。
之前分享了一個控制命令物件的for迴圈例子,再來分享一個檢查CheckBox的例子
Function CheckAllCheckBoxes()
Dim ws As Worksheet
Dim oleObj As OLEObject
Set ws = ActiveSheet
' 遍歷工作表上的所有 OLEObject
For Each oleObj In ws.OLEObjects
' 檢查是否為 CheckBox 控制項
If TypeName(oleObj.Object) = "CheckBox" Then
' 進行你需要的操作,例如檢查其值
If oleObj.Object.Value = True = True Then
If Total = "" Then
Total = oleObj.Object.Caption
Else
Total = Total & "@" & oleObj.Object.Caption & "@" & oleObj.Object.value
End If
End If
End If
Next oleObj
CheckAllCheckBoxes = Total
End Function
這段 VBA 代碼的功能是檢查工作表上所有的 CheckBox 控制項,如果某個 CheckBox 被勾選,則將其標題(Caption)和值(Value)累積到一個字符串變量 Total 中,最終返回這個累積的字符串。
部分功能詳細描述
函數 CheckAllCheckBoxes 的作用
這個函數遍歷當前工作表上的所有 OLEObject,並檢查每個 OLEObject 是否為 CheckBox 控制項。
如果某個 CheckBox 被勾選,則將其標題和值累積到變量 Total 中。
變數聲明:
ws:表示當前的工作表 (Worksheet)。
oleObj:表示工作表上的每一個 OLEObject(嵌入的控制項)。
VBA流程:
設置 ws 為當前的工作表。
使用 For Each 迴圈遍歷工作表上的所有 OLEObject。
使用 TypeName 函數檢查 OLEObject 是否為 CheckBox 控制項。
如果是 CheckBox 控制項,則進一步檢查其是否被勾選 (Value = True)。
如果 CheckBox 被勾選,則將其標題累積到變量 Total 中。
如果 Total 變量為空,則直接將 CheckBox 的標題賦值給 Total。
如果 Total 變量不為空,則將 CheckBox 的標題和值以 @ 分隔的方式累積到 Total 中。
最後返回變量 Total,這個變量包含了所有被勾選的 CheckBox 的標題和值。
逐行說明:
這行定義了一個名為 CheckAllCheckBoxes 的函數。
Function CheckAllCheckBoxes()
這兩行聲明了兩個變數:ws 代表工作表,oleObj 代表工作表上的每一個 OLEObject(嵌入的控制項)。
Dim ws As Worksheet
Dim oleObj As OLEObject
這行將變數 ws 設置為當前的活動工作表。
Set ws = ActiveSheet
這行開始一個 For Each 迴圈,遍歷工作表上的所有 OLEObject。
' 遍歷工作表上的所有 OLEObject
For Each oleObj In ws.OLEObjects
這行檢查當前的 OLEObject 是否為 CheckBox 控制項。
這行開始一個 For Each 迴圈,遍歷工作表上的所有 OLEObject。
這幾行將被勾選的 CheckBox 的標題(Caption)和其值累積到變量 Total 中。如果 Total 為空,則直接賦值;否則,將新的標題和值以 @ 分隔的方式累積到 Total 中。
If Total = "" Then
Total = oleObj.Object.Caption
Else
Total = Total & "@" & oleObj.Object.Caption & "@" & oleObj.Object.Value
End If
這幾行分別結束 If 條件和 For Each 迴圈。
End If
End If
Next oleObj
這兩行將累積的標題和值字符串(Total)賦值給函數 CheckAllCheckBoxes,並結束函數。
CheckAllCheckBoxes = Total
End Function
沒有留言:
張貼留言