我試圖讓宏發送msgbox,以防活動表(ActiveX)的任何複選框被選中。Excel - 如果所有複選框(ActiveX)未選中,發送msgbox
我不知道爲什麼,但是當我運行宏它的跳線「X = X + 1」即使我有一個複選框選中...
有人能幫助我嗎?
Private Sub adecoagrobox1_Click()
If adecoagrobox1.Value = True Then
On Error Resume Next
ThisWorkbook.Sheets("Comps_pivot").PivotTables("compspivot1").AddDataField Sheets("Comps_pivot").PivotTables(_
"compspivot1").PivotFields("Adecoagro"), "Adecoagro ", xlSum
Else
On Error Resume Next
ThisWorkbook.Sheets("Comps_pivot").PivotTables("compspivot1").PivotFields("Adecoagro "). _
Orientation = xlHidden
End If
Dim control as OLEObject
Dim x as integer
x = x + 1
For Each control In ActiveSheet.OLEObjects
If TypeName(control.Object) = "Checkbox" And control.Object.Value = 1 Then
x = x + 1
End If
Next control
If x = 0 Then
MsgBox ("You must select at least one option")
On Error Resume Next
adecoagrobox1.Value = True
ThisWorkbook.Sheets("Comps_pivot").PivotTables("compspivot1").AddDataField Sheets("Comps_pivot").PivotTables(_
"compspivot1").PivotFields("Adecoagro"), "Adecoagro ", xlSum
End If
End Sub
非常感謝提前!
刪除'上的錯誤恢復Next'報表,看看有什麼錯誤您遇到 – YowE3K
並注意您的測試FO r'如果x = 0那麼''是沒有意義的,因爲在Dim x as integer後緊跟着一個'x = x + 1'(hmmm,爲什麼不是'integer'中的'i'大寫 - IDE應該自動改變這個?!?!),這意味着'x'將始終至少爲'1'。 – YowE3K
嗨!感謝你及時的答覆! 當我運行宏時,它總是跳轉到x = x + 1 ...因此x總是等於0. 當複選框被選中時,它不會被讀取... x = 0表示沒有選中複選框,它應該顯示msgbox –