真的沒騙你,點(diǎn)起來超爽,做完了2個按鈕,我都點(diǎn)了幾十次。
點(diǎn)一下工資表就變成工資條。
再點(diǎn)一下,工資條就變成工資表。
要用VBA實現(xiàn)這2個功能,真的很簡單,只要你懂得最基礎(chǔ)的復(fù)制粘貼,插入刪除等功能即可。
其實,VBA就是將你當(dāng)初學(xué)基礎(chǔ)操作的過程,再重新來一遍而已。不要說什么不會英語,學(xué)不會之類,壓根兒就跟英語無關(guān),我也不會英語。
工資條,其實就是將第一行的標(biāo)題復(fù)制,插入到3、5、7等奇數(shù)行,對吧。
Step 01 錄制一個宏,將第一行的標(biāo)題復(fù)制,插入到第3行。
Step 02 點(diǎn)VB進(jìn)入后臺,再點(diǎn)模塊,就可以看到剛剛錄制的宏。
Step 03 現(xiàn)在已經(jīng)實現(xiàn)了在第3行插入標(biāo)題,下面要實現(xiàn)在第5行插入標(biāo)題。將A3改成A5,點(diǎn)綠色運(yùn)行按鈕。
接著是7、9、11……如果一次次改,那就體現(xiàn)不了VBA的優(yōu)越性了,前面已經(jīng)提過,可以借助循環(huán)語句。
Sub 工資條()
For i = 1 To 18
Rows("1:1").Select
Selection.Copy
Range("A" & i * 2 + 1).Select
Selection.Insert Shift:=xlDown
Next
End Sub
現(xiàn)在是19個人,而第一個人有標(biāo)題,也就是需要操作18次。i * 2 + 1就是獲取數(shù)字3、5、7……
寫代碼的時候,養(yǎng)成一個好習(xí)慣,就是定義變量,最終代碼就出來了。
Sub 工資條()
Dim i As Integer
For i = 1 To 18
Rows("1:1").Select
Selection.Copy
Range("A" & i * 2 + 1).Select
Selection.Insert Shift:=xlDown
Next
End Sub
Step 04 將原來手工插入的標(biāo)題刪除掉,運(yùn)行代碼,即可生成工資條。
不難吧。
現(xiàn)在如何將工資條復(fù)原成工資表,也就是將3、5、7……行刪除掉。
同理,錄制宏,改代碼。
Step 01 錄制一個宏,選擇A3,刪除整行。
Step 02 點(diǎn)VB進(jìn)入后臺,再點(diǎn)模塊,就可以看到剛剛錄制的宏。
Step 03 有了前面的基礎(chǔ),現(xiàn)在修改代碼就變得簡單,將工資條修改的部分全部照搬過來。
剛剛錄制宏的時候是從上刪除行,刪除后 ,你會發(fā)現(xiàn)標(biāo)題行錯位了,現(xiàn)在并不是3、5、7……行。
記住,刪除行跟插入行有所不同,插入行是從上面往下插入,而刪除行要從下面往上刪除。
現(xiàn)在是從18倒數(shù)到1,Step -1就是步長-1。
Sub 工資表()
Dim i As Integer
For i = 18 To 1 Step -1
Range("A" & i * 2 + 1).Select
Selection.EntireRow.Delete
Next
End Sub
Step 04 將原來手工刪除的標(biāo)題恢復(fù),運(yùn)行代碼,即可生成工資表。
最后,插入按鈕來執(zhí)行代碼,會看起來更高大上。
不要老是害怕學(xué)不會,只要你知道循環(huán)語句,會錄制宏就可以解決掉很多問題了。
推薦:1秒制作多行表頭工資條
上篇:一鍵搞定!根據(jù)總表生成多個分表,根據(jù)分表生成目錄
學(xué)VBA的時候,有沒感覺回到當(dāng)初剛學(xué)Excel的那種感覺,什么操作都用最笨的技能實現(xiàn)。
也就是說,你會最笨的操作,再將這些操作錄制成宏,再懂簡單修改代碼就好了。
面對不會的東西,你是選擇放棄還是選擇堅持?
作者:盧子,清華暢銷書作者,《Excel效率手冊 早做完,不加班》系列叢書創(chuàng)始人,個人公眾號:Excel不加班(ID:Excelbujiaban)
聯(lián)系客服