ET2005的選擇性粘貼中的運算項有加減乘除運算,唯獨沒有&運算(即連接),見圖一所示。這使工作中某些需求難以滿足。
假設需要輸入以下內容,因沒有連接功能,只好將重復的字符重復的輸入,無疑降低了工作效率。
客戶地址
廣東省東莞市全興有限公司
廣東省東莞市宏運有限公司
廣東省東莞市中天有限公司
廣東省東莞市月滿樓有限公司
廣東省東莞市興又盛有限公式
解決思路:
用VBA為WPS表格2005增設一個“選擇性粘貼——連接”的功能,置於右鍵菜單方便調用。
步驟1.建立“選擇性粘貼——連接”的功能的宏
本例假設你的WPS已具備VBA環境;
1.新建工作簿;
2.用快捷鍵ALT+F11打開VBE環境;
3.單擊菜單【插入】【模塊】,在模塊中輸入以下代碼:
Sub選擇性粘貼__連接() DimrngAsString,NewShtAsString,OldShtAsString,texts,iAsByte,ansAsByte IfActiveSheet.ProtectContentsThenMsgBox"工作表已保護,本程序拒絕執行!",64,"提示":ExitSub OnErrorGoToendd rng=Selection.Address OldSht=ActiveSheet.Name Application.DisplayAlerts=False Worksheets.Add NemSht=ActiveSheet.Name Range("a1").Select ActiveSheet.Paste IfActiveSheet.UsedRange.Count>1Then MsgBox"只能連接單個單元格的值。",64,"andysky" GoToendd EndIf texts=Selection.Text Application.ScreenUpdating=True Sheets(OldSht).Select ans=InputBox("請選擇連接於目標前還是連接於目標後。"&Chr(10)&"1:連接於目標之前;"_ &Chr(10)&"2:連接於目標之後。","連接方式",1) Fori=1ToSelection.Count If--ans=1ThenSelection(i)=textsSelection(i) If--ans=2ThenSelection(i)=Selection(i)texts Next endd: Worksheets(NemSht).Delete EndSub
步驟2.將宏功能加入右鍵菜單中
1.用快捷鍵CTLR+R打開“工程資源管理器”,在左邊的窗格中找到“ThisWorkbook”並雙擊;
2.在右邊的代碼窗口輸入以代碼(兩段代碼:第一段為將工能加到右鍵菜單,另一段為關閉EXCEL時恢復右鍵):
PrivateSubWorkbook_Open() WithApplication.CommandBars("cell").Controls.Add(Type:=msoControlButton,before:=4,Temporary:=True) .Caption="選擇性粘貼__連接(&Paste)" .OnAction="選擇性粘貼__連接" EndWith EndSub PrivateSubWorkbook_BeforeClose(CancelAsBoolean) Application.CommandBars("CELL").Reset EndSub
步驟3.將工作簿另存為默認模板
1.關閉VBE窗口返回工作表;
2.單擊菜單【文件】【另存為】,在保存類型處選擇“WPS表格模板文件”。
步驟4.測試效果 1.選擇菜單【文件】【本機上的模板】,在列表中選擇剛才存放的模板;
2.在工作表中輸入以下數據(見圖五),然後復制A9,然後選擇A2:A7,單擊右鍵,選擇菜單中的“選擇性粘貼__連接”;
3.此時程序彈出對話框,見圖七,在裡面輸入1表示連接於前。單擊確定後最後結果如圖八所示。
結束語:ET支持VBA進行二次開發,這使得它更具有靈活性。當默認的功能難以滿足我們工作需求時,不妨用VBA來處理吧。