如何在excel中使用VBA來確定特定單元格中是否有一個或多個按鈕?
我有一個 50 行的電子表格。每行都有一系列資料輸入欄位,然后在 S 列中,有兩個按鈕可以根據該資料進行一些計算。這些按鈕都運行相同的宏,并檢查它們在哪一行以確定要對哪一行執行操作。
一旦資料不再相關,用戶將定期洗掉一行或多行。發生這種情況時,我想在底部插入相同數量的新行,以確保始終有 50 個資料行。我可以復制和粘貼例如S49到S50,按鈕會出現在S50中,并按預期作業,但我不知道是否洗掉了一行或n行,所以我不知道是否從S49、S48 或 Sn。
如果我撰寫一個for n = 1 to 50回圈來回圈遍歷 S 列的每一行,我如何檢查單元格 Sn 中是否存在按鈕?
編輯:下面@Michael 的回答我意識到我需要遍歷按鈕,而不是單元格。雖然邁克爾的解決方案正確地回答了我的問題,但在我的特定應用程式中,它更簡單一些:
Dim lastBtnRow as Integer
Dim b As Button
lastBtnRow = 0
For Each b In ActiveSheet.Buttons
If b.TopLeftCell.Row > lastBtnRow Then lastBtnRow = b.TopLeftCell.Row
Next
然后只需將 S:lastBtnRow 復制粘貼到 S:lastBtnRow 1 到 S:50
uj5u.com熱心網友回復:
單元格沒有標識位于其中的物件的屬性,但物件具有有關它們所在位置的屬性。
您需要通過作業表上的所有按鈕構建一個回圈并測驗它們所在的位置。如果您正在處理表單按鈕(而不是 ActiveX 按鈕),那么這是一個簡單的回圈,它將計算您當前選擇的單元格中的按鈕數量:
Sub ButtonLoop()
Dim b As Button, i As Long
For Each b In ActiveSheet.Buttons
If b.TopLeftCell.Address = Selection.Address Then i = i 1
Next
MsgBox i
End Sub
如果要檢查每個單元格中的按鈕數量,可以撰寫一個回圈遍歷每個單元格的外回圈,然后使用上面的回圈作為內回圈,在外回圈中檢查當前單元格中的按鈕;或者更有效地使用資料結構(例如字典)為遇到的每個單元格地址增加計數器。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/380373.html
