發佈日期:

LibreOffice Calc 智慧列高調整巨集

Views: 0

🚀 SmartHeight Pro:讓 Excel/Calc 表格排版瞬間整齊

一鍵批次微調,告別高矮不一的混亂報表!

還在手動拉動每一列的高度嗎?當表格內容過多,導致自動換行後的列高顯得雜亂無章時,此範例程式是您的最佳救星。這款專為 LibreOffice/OpenOffice 打造的智慧腳本,能精準鎖定範圍,自動將列高優化至最完美的視覺比例。


✨ 核心亮點

  • ⚡ 智慧自動進位:程式會自動偵測現有高度並執行「百位數進位」邏輯,確保每一列都能獲得充足的顯示空間,視覺效果更趨統一。
  • 🛡️ 專業保底高度:內建 0.8cm (800 twips) 最低高度限制,防止列高縮過頭,確保報表文字在列印或閱讀時永不被遮蓋。
  • 📍 視覺化精準定位:獨家「跳轉追蹤」功能!在輸入起始與結束列號時,畫面會自動滾動至目標位置,讓你邊看邊設,絕不出錯。
  • 🔄 記憶常用參數:具備智慧記憶功能,自動帶入上次設定的列號範圍,重複作業僅需連按 Enter 即可完成。
  • ✅ 視覺回饋提示:執行成功後按鈕將閃爍綠燈,給予最直覺的操作確認,不再疑惑程式是否有在跑。

🛠️ 強大功能

  • 批次處理:支援自定義任意範圍,無論是 10 列還是 1000 列,瞬間處理完畢。
  • 跳轉輔助:在設定過程中自動導航,解決長表格翻找列號的痛苦。
  • 零侵入性:只針對有高度的顯示列進行優化,自動避開已隱藏的列位。
  • 簡易整合:輕鬆掛載於現有工具列或按鈕,隨開隨用。

💻 程式源碼 (Basic)

請將以下代碼複製並貼上至您的 LibreOffice/OpenOffice 巨集編輯器中:

Global g_sLastStart As String
Global g_sLastEnd As String

Sub AdjustHeightByInput
    Dim oDoc As Object
    Dim oSheet As Object
    Dim oForm As Object
    Dim oButton As Object
    Dim sStart As String, sEnd As String
    Dim nStart As Long, nEnd As Long
    Dim i As Long
    Dim currH As Long, newH As Long
    
    oDoc = ThisComponent
    oSheet = oDoc.CurrentController.ActiveSheet
    
    oForm = oSheet.DrawPage.Forms.getByIndex(0)
    oButton = oForm.getByName("CommandButton 1") 

    If g_sLastStart = "" Then g_sLastStart = "11"
    JumpToRow(oDoc, oSheet, CLng(g_sLastStart))
    
    sStart = InputBox("起始列號:", "設定範圍 (1/2)", g_sLastStart)
    If sStart = "" Then Exit Sub
    g_sLastStart = sStart

    If g_sLastEnd = "" Then g_sLastEnd = "19"
    JumpToRow(oDoc, oSheet, CLng(g_sLastEnd))
    
    sEnd = InputBox("結束列號:", "設定範圍 (2/2)", g_sLastEnd)
    If sEnd = "" Then Exit Sub
    g_sLastEnd = sEnd
    
    nStart = CLng(sStart) - 1
    nEnd = CLng(sEnd) - 1
    
    For i = nStart To nEnd
        currH = oSheet.Rows.getByIndex(i).Height
        If currH > 0 Then
            If (currH Mod 100 <> 0) Then
                newH = (Int(currH / 100) + 1) * 100
            Else
                newH = currH
            End If
            If newH < 800 Then newH = 800
            oSheet.Rows.getByIndex(i).Height = newH
        End If
    Next i
    
    oButton.BackgroundColor = RGB(144, 238, 144)
    Wait 800 
    oButton.BackgroundColor = RGB(240, 240, 240)
End Sub

Sub JumpToRow(oDoc, oSheet, nRow)
    Dim oCell As Object
    On Error Resume Next
    oCell = oSheet.getCellByPosition(0, nRow - 1)
    oDoc.CurrentController.select(oCell)
End Sub

💡 適用場景

  • 財務報表:確保所有數據列高度一致,視覺更專業。
  • 產品清單:自動調整因說明文字長度不一造成的排版混亂。
  • 列印前校對:統一高度標準,避免列印出來高低落差過大。

🎯 想提升您的工作效率嗎?立即將此巨集導入您的 Calc 環境!

📍 遺珠推薦 (很多人錯過了這篇...):
交換連結

免責聲明】 AI-Assisted Content | 部分資料引用自網路、AI的文筆,以及作者的整理。
如有侵權、雷同或標註錯誤,敬請來信明告知,還原始末釐前因。一經確認即撤稿,守護清名謝君勉。

請認明】🔗 chungg.com 才是官方唯一授權認證網域。

專業領航|知識技術無價  價值實踐|應用服務有價

本頁連結(442559):LibreOffice Calc 智慧列高調整巨集