一個一個排列按鈕太累了,透過vba程式八
vba:
Sub PositionButtons(left, top) '按鈕位置 | |
Dim ws As Worksheet | |
Dim oleObj As OLEObject | |
Dim topPosition As Double | |
Dim leftPosition As Double | |
' 設定當前工作表 | |
Set ws = ActiveSheet | |
' 設定按鈕的起始位置 | |
topPosition = top | |
leftPosition = left | |
' 檢查工作表上的所有 OLEObject | |
For Each oleObj In ws.OLEObjects | |
' 檢查是否為按鈕控制項 | |
If TypeName(oleObj.Object) = "CommandButton" Then | |
' 設置按鈕位置 | |
oleObj.top = topPosition | |
oleObj.left = leftPosition | |
' 調整下一個按鈕的位置 | |
topPosition = topPosition + oleObj.Height + 5 ' 調整為所需間距 | |
End If | |
Next oleObj | |
End Sub |
解說:
先定義了一個名為 PositionButtons 的sub程序,接受兩個參數 left 和 top,用來指定按鈕的初始位置。
Sub PositionButtons(left, top) '按鈕位置
這幾行聲明了四個變數:
Dim ws As Worksheet
Dim oleObj As OLEObject
Dim topPosition As Double
Dim leftPosition As Double
ws 代表工作表。
Set ws = ActiveSheet
oleObj 代表工作表上的每一個 OLEObject(嵌入的控制項)。
topPosition 和 leftPosition 分別表示按鈕的上邊距和左邊距。
這兩行將傳入的參數 top 和 left 賦值給 topPosition 和 leftPosition,設置按鈕的初始位置:
topPosition = top
leftPosition = left
這行調整下一個按鈕的位置,將 topPosition 增加當前按鈕的高度和5個單位的間距。
topPosition = topPosition + oleObj.Height + 5 ' 調整為所需間距
這兩行分別結束 If 條件和 For Each 迴圈:
End If
Next oleObj
沒有留言:
張貼留言