通勤認定エクセルツール対応11
This commit is contained in:
51
src/sh/tuk/module/Common_Shape.bas
Normal file
51
src/sh/tuk/module/Common_Shape.bas
Normal file
@@ -0,0 +1,51 @@
|
||||
Attribute VB_Name = "Common_Shape"
|
||||
Option Explicit
|
||||
|
||||
' ================= 通用排版引擎(仅调整位置) =================
|
||||
|
||||
Public Sub AlignIconsByCenter(sheetName As String, anchorAddr As String, _
|
||||
iconArr As Variant, gapPt As Double)
|
||||
Dim ws As Worksheet
|
||||
Dim anchor As Range
|
||||
Dim shp As Shape
|
||||
Dim i As Long
|
||||
Dim shapeCount As Long
|
||||
|
||||
On Error Resume Next
|
||||
Set ws = ThisWorkbook.Worksheets(sheetName)
|
||||
On Error GoTo 0
|
||||
If ws Is Nothing Then Exit Sub
|
||||
|
||||
Set anchor = ws.Range(anchorAddr)
|
||||
shapeCount = UBound(iconArr) - LBound(iconArr) + 1
|
||||
|
||||
' 第一个图标左边对齐B3左边
|
||||
Dim curX As Double: curX = anchor.Left
|
||||
Dim prevX As Double: prevX = 0
|
||||
Dim cy As Double: cy = anchor.Top + anchor.Height / 2
|
||||
|
||||
Application.ScreenUpdating = False
|
||||
For i = LBound(iconArr) To UBound(iconArr)
|
||||
Set shp = ws.Shapes(iconArr(i))
|
||||
shp.Placement = xlFreeFloating
|
||||
shp.Left = curX
|
||||
shp.Top = cy - shp.Height / 2
|
||||
If i = LBound(iconArr) Then
|
||||
Debug.Print iconArr(i) & ": left=" & curX & ", width=" & shp.Width
|
||||
Else
|
||||
Debug.Print iconArr(i) & ": left=" & curX & ", gap=" & (curX - prevX) & ", width=" & shp.Width
|
||||
End If
|
||||
prevX = curX + shp.Width
|
||||
curX = curX + shp.Width + gapPt
|
||||
Next i
|
||||
Application.ScreenUpdating = True
|
||||
End Sub
|
||||
|
||||
' ================= 你的专属调用入口 =================
|
||||
Sub RunAlignForMySheet()
|
||||
AlignIconsByCenter _
|
||||
sheetName:="M1", _
|
||||
anchorAddr:="B3", _
|
||||
iconArr:=Array("input", "check", "output", "sort", "filter", "fit", "load"), _
|
||||
gapPt:=10
|
||||
End Sub
|
||||
Reference in New Issue
Block a user