1. 程式人生 > 其它 >bootstrap insertrow始終插入到最後一行_用VBA批量隔行插入時要避免陷入這個誤區!...

bootstrap insertrow始終插入到最後一行_用VBA批量隔行插入時要避免陷入這個誤區!...

技術標籤:bootstrap insertrow始終插入到最後一行

我的目標:讓中國的大學生走出校門的那一刻就已經具備這些office技能,讓職場人士能高效使用office為其服務。支援我,也為自己加油!

前幾天剛寫過一篇文章:

《聽說這是製作工資單最快的辦法》

裡面程式碼是這麼寫的:

Sub製作工資條()Dimi%,r$,r1$,n%,r2$,r3$Fori=3To[a1].End(xlDown).Row  r=r&i&":"&i&","  r1=Left(r,Len(r)-1)NextRange(r1).InsertRange("a1",Cells(Rows.Count,"f").End(xlUp)).SpecialCells(xlCellTypeBlanks)=Range("a1:f1").ValueForn=3To[a1].End(xlDown).RowStep2  r2=r2&n&":"&n&","  r3=Left(r2,Len(r2)-1)NextRange(r3).InsertWithRange("a1",Cells(Rows.Count,"f").End(xlUp)).SpecialCells(xlCellTypeBlanks)  .RowHeight=13  .Borders(xlEdgeLeft).LineStyle=xlNone  .Borders(xlEdgeRight).LineStyle=xlNone  .Borders(xlInsideVertical).LineStyle=xlNoneEndWithEnd Sub
程式碼裡包括了隔行插入、批量填充空白單元格、設定單元格格式三個部分。 前幾天,有位同學拿個這個程式碼練習的時候發現一個問題,當工資表中的資料條數比較多時,程式碼執行就會彈出錯誤提示,如下:

064b25fceb7a7792af15b463871083a6.gif

這是為什麼呢?

上面程式碼中的隔行插入,我是模擬在工作表中按住Ctrl然後分別選中每行,然後再插入,這樣如果資料行數多時就會出現一種情況:

Range("1:1","2:2","3:3",……) 中間的紅色部分可能會超過255個字元,超過255個字元後就會報錯,因為變數名的長度是不允許超過255個字元的。 遇到這種情況該怎麼解決呢? 我們可以在迴圈時直接插入,比如:
Sub 製作工資單2()Dim i%, r%, rng As Range, rng1 As Ranger = Cells(Rows.Count, 1).End(3).RowFor i = 3 To (r - 1) * 2 Step 2    Range(i & ":" & i).InsertNextr = Cells(Rows.Count, 1).End(3).RowSet rng = Range("a2", Cells(r, "h")).SpecialCells(xlCellTypeBlanks)[a1:h1].Copy rngEnd Sub
如上程式碼中,每插入一行,原有行數就要下移一行,所以迴圈時步長應該為2。

也可以從最後往前面迴圈插入:

Sub 製作工資單1()Dim i%, r%, rng As Ranger = Cells(Rows.Count, 1).End(3).RowSet rng = Range("3:3")For i = r To 3 Step -1    Range(i & ":" & i).InsertNextr = Cells(Rows.Count, 1).End(3).RowSet rng = Range("a2", Cells(r, "h")).SpecialCells(xlCellTypeBlanks)[a1:h1].Copy rngEnd Sub

效果如下:

09ba6c0eb7d315e8fa2465cb211801da.gif

此種方法不需要把行數用字串完整表達出來後再插入:

大家仔細對比三段程式碼,細品其中的區別,一定會有所收穫!

本節的分享就到這裡,鵬哥祝大家每天都有進步。

想學習更多,請在電腦端開啟網址: www.mihong.top

6571c4a52070c90aefc0412df6d8579b.gif

鼓勵一下,贊完再走