Word技巧達(dá)人推薦搜索 今天來(lái)看一個(gè)小伙伴遇到的問(wèn)題,數(shù)據(jù)源如下:這個(gè)小伙伴的問(wèn)題是D列字?jǐn)?shù)有多有少,怎樣根據(jù)行數(shù)智能調(diào)整到前后有一點(diǎn)點(diǎn)間距,如下圖所示。這個(gè)問(wèn)題有兩種解法,今天給大家介紹VBA的解法。有小伙伴覺得,上次提到的公式太麻煩了,我想一步到位,這怎么辦呢?這就需要請(qǐng)出VBA來(lái)幫助我們了。如果你沒有使用過(guò)VBA,那么選項(xiàng)卡是找不到VBA的,你需要把開發(fā)工具放到選項(xiàng)卡上。添加步驟:(Excel 2007)文件(左上角圓形按鈕)——Excel選項(xiàng)——常用——在功能區(qū)顯示'開發(fā)工具'選項(xiàng)卡(Excel 2010及以上)文件——選項(xiàng)——自定義功能區(qū)——開發(fā)工具注:如果你使用WPS,需要安裝VBA才能運(yùn)行。而且WPS的VBA某些語(yǔ)法和Excel的不一樣。這里使用Excel的VBA來(lái)解釋。這個(gè)問(wèn)題的思路是根據(jù)字符數(shù)決定給多大行距。比如10個(gè)字符給1行,11個(gè)字符給兩行。放到程序里,可以用for循環(huán)來(lái)把所有行掃一遍。我們把小for找來(lái),說(shuō)小for啊,我想從第二行開始遍歷所有有字符的行(此文件是97),然后每10個(gè)字符給一行,下一行也這樣。要計(jì)算字符數(shù),我們想到了len。VBA中l(wèi)en的功能和工作表函數(shù)中l(wèi)en的功能是一樣的,都是計(jì)算某單元格字符的長(zhǎng)度。每10個(gè)字符給一行,意味著不到10個(gè)字符也要給一行,所以需要對(duì)字符長(zhǎng)度除以10以后用ROUNDUP函數(shù)。由于VBA里沒有ROUNDUP函數(shù),故需要調(diào)用該應(yīng)用的工作表函數(shù),即在ROUNDUP前面輸入Application.WorksheetFunction.,這樣就可以知道這個(gè)單元格需要多少行了。由于需要上下留空,故上面計(jì)算完以后需要+1(加多少由自己決定)。計(jì)算完畢以后再乘14.25(默認(rèn)行高,可隨意更改)在VBA里,行高用Rows().RowHeight代替,列寬可以用Columns().ColumnWidth代替,括號(hào)里均填數(shù)字。經(jīng)測(cè)試,我們發(fā)現(xiàn)10個(gè)漢字字符所需列寬為20。根據(jù)這個(gè)思路,我們可以寫下面的代碼:Sub ss() Dim i As Long '此行可以不要,寫上僅為個(gè)人習(xí)慣 Columns(4).ColumnWidth = 20 For i = 2 To 97 Rows(i).RowHeight = 14.25 * (Application.WorksheetFunction.RoundUp(Len(Range('D' & i)) / 10, 0) + 1) Next End Sub 注:1、通過(guò)VBA操作后的行高無(wú)法撤銷。所以建議大家如果需要寫VBA代碼,建議自己備份一個(gè)數(shù)據(jù)。2、需要開垂直居中和自動(dòng)換行,如下圖所示(后記)寫完以后,有的小伙伴就哭了。嗚嗚嗚,這單詞也太長(zhǎng)了吧,雖然寫出來(lái)能看懂,但是下次用就記不住了。對(duì)于VBA來(lái)說(shuō),如果不知道對(duì)工作表的某些操作怎么用代碼來(lái)寫,我們可以錄制宏。比如這里的行高,我不記得怎么寫了,我們可以錄制宏。錄制宏的方法如下面視頻所示:通過(guò)錄制宏,我們知道Rows(“1:1”).RowHeight代表第一行的行高。由于里面的1是變量,所以我們把這個(gè)復(fù)制過(guò)來(lái)改為Rows(i).RowHeight即可。Application.WorksheetFunction這個(gè)需要記住Application,然后輸入點(diǎn)以后會(huì)彈出下拉框,這樣只需嘗試輸入前面幾個(gè)字母就可以出來(lái)全部,按tab鍵可以輸入完整單詞。操作方法如下面視頻所示。好啦今兒分享到這里,祝大家好運(yùn)!
喜歡的同鞋請(qǐng)轉(zhuǎn)發(fā)、點(diǎn)贊!
掃描下方二維碼,加入微信交流群~
|