Excel VBA 的小技巧 - 02

     上一篇文章【Excel VBA 的小技巧 - 01】提到如何用 陣列 動態宣告的方式,來創建新的 Excel 活頁簿檔案。
原本以為新的 Excel 活頁簿檔案建立後,就可以直接讀取舊有檔案資料,好回寫到新檔案裡面。不料,原本可以讀到舊檔案資料的指令,在執行過創建新 Excel 活頁簿檔案指令後,既然變成失效!
解決方法:需要事先將現行活頁簿、工作表的資訊記錄下來,並且要在創建新 Excel 活頁簿檔案後,再將先前記錄下來的訊息,加以激活。(作用起來)

   Dim SourceWB as String
   Dim SourceSH as String

   SourceWB = ActiveWorkbook.Name
   SourceSH = ActiveSheet.Name

   ReDim NewBook(intRow): Set NewBook(intRow) = Workbooks.Add
   Workbooks(SourceWB).Sheets(SourceSH).Activate

 

     接下來,談一個 Excel 太聰明所造成的困擾。
你若是在儲存格打入字串 001,這時 Excel 會自動的轉換成數字 1。我想這樣的經驗大家應該都會遇到。
解決方案:改變要登打資料的儲存格格式,從通用格式該成為文字格式。
                   程式碼處理,則是 NumberFormatLocal = "@"
   NewBook(pCnt).Sheets(1).Cells(pRowCnt, "G").NumberFormatLocal = "@"
   NewBook(pCnt).Sheets(1).Cells(pRowCnt, "G") = "001"

 

     使用 Excel 時,常會選擇一個區域的範圍,並按下 Delete 鍵來清除該範圍中的資料。所以改用程式處理時,也就會下 Delete 指令,如此卻得到不正確地結果。應該下 ClearContents。
   Rows("4:65536").Select
   Selection.ClearContents

沒有留言: