2024年11月8日 星期五

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





沒有留言:

張貼留言

關箱文:我的雷達

   密集測試半年成績 不再貼文更新