這個小夥伴的問題是D列字數有多有少,怎樣根據行數智能調整到前後有一點點間距,如下圖所示。有小夥伴覺得,上次提到的公式太麻煩了,我想一步到位,這怎麼辦呢?這就需要請出VBA來幫助我們了。如果你沒有使用過VBA,那麼選項卡是找不到VBA的,你需要把開發工具放到選項卡上。添加步驟:(Excel 2007)文件(左上角圓形按鈕)——Excel選項——常用——在功能區顯示"開發工具"選項卡(Excel 2010及以上)文件——選項——自定義功能區——開發工具註:如果你使用WPS,需要安裝VBA才能運行。而且WPS的VBA某些語法和Excel的不一樣。這裡使用Excel的VBA來解釋。這個問題的思路是根據字符數決定給多大行距。比如10個字符給1行,11個字符給兩行。我們把小for找來,說小for啊,我想從第二行開始遍歷所有有字符的行(此文件是97),然後每10個字符給一行,下一行也這樣。要計算字符數,我們想到了len。VBA中len的功能和工作表函數中len的功能是一樣的,都是計算某單元格字符的長度。每10個字符給一行,意味著不到10個字符也要給一行,所以需要對字符長度除以10以後用ROUNDUP函數。由於VBA裡沒有ROUNDUP函數,故需要調用該應用的工作表函數,即在ROUNDUP前面輸入Application.WorksheetFunction.,這樣就可以知道這個單元格需要多少行了。由於需要上下留空,故上面計算完以後需要+1(加多少由自己決定)。計算完畢以後再乘14.25(默認行高,可隨意更改)在VBA裡,行高用Rows().RowHeight代替,列寬可以用Columns().ColumnWidth代替,括號裡均填數字。經測試,我們發現10個漢字字符所需列寬為20。根據這個思路,我們可以寫下面的代碼:
Sub ss()Dim i As Long '此行可以不要,寫上僅為個人習慣Columns(4).ColumnWidth = 20For i = 2 To 97Rows(i).RowHeight = 14.25 * (Application.WorksheetFunction.RoundUp(Len(Range("D" & i)) / 10, 0) + 1)NextEnd Sub註:1、通過VBA操作後的行高無法撤銷。所以建議大家如果需要寫VBA代碼,建議自己備份一個數據。(後記)寫完以後,有的小夥伴就哭了。嗚嗚嗚,這單詞也太長了吧,雖然寫出來能看懂,但是下次用就記不住了。對於VBA來說,如果不知道對工作表的某些操作怎麼用代碼來寫,我們可以錄製宏。比如這裡的行高,我不記得怎麼寫了,我們可以錄製宏。錄製宏的方法如下面視頻所示:通過錄製宏,我們知道Rows(「1:1」).RowHeight代表第一行的行高。由於裡面的1是變量,所以我們把這個複製過來改為Rows(i).RowHeight即可。Application.WorksheetFunction這個需要記住Application,然後輸入點以後會彈出下拉框,這樣只需嘗試輸入前面幾個字母就可以出來全部,按tab鍵可以輸入完整單詞。操作方法如下面視頻所示。
好啦今兒分享到這裡,祝大家好運!
喜歡的同鞋請轉發、點讚!
掃描下方二維碼,加入微信交流群~
歡迎朋友們分享辦公技巧,郵箱:wordjqdr@126.com
想要學習更多Word排版技巧,單擊【閱讀原文】來參加【Word2016快速入門與提高】課程吧!