【Excel技巧】- VBA代碼提示運行時錯誤 '1004': 應用程序定義或對象定義錯誤

其實今天應該開始著手寫PowerPoint的相關技巧,但由於技巧較多,還不知道用什麼方法給大家展現,所以一直在構思。在構思的過程中看到大大秦川的牛閃閃的日子2群有人在諮詢VBA代碼的問題,所以就抽空幫其解決了一下。問題如下

我從群文件里下載這位武漢的小夥伴上傳的【源文件和代碼.zip】文件,打開該壓縮包,有兩個文檔一個是xlsx結尾的,另一個是保存為文本的宏代碼。

把文件解壓到桌面後,我便雙擊滑鼠打開1234.xlsx文件,然後就順手把txt里的宏代碼拷貝到僅有的一個工作表文件里。具體操作如下動態圖:

看著上面的動態圖,一切都是那麼的自然,殊不知我已經掉到坑裡去了。因為按照正常的編寫VBA代碼來說,不會出現這個問題。我自從大二自學VBA以來到現在,寫了那麼多VBA代碼,也沒有遇到過一次這樣的問題。所以這個問題的出現的確讓我感到困惑,所以我從頭開始梳理代碼,按F8一條一條的調試,調試方法如下:

當執行到語句Range("B1").Select的時候,錯誤窗就彈出來了。由於寫了那麼多VBA代碼,所以從這個錯誤就大概知道是因為沒有寫完整選中哪一個工作表的B2單元格,所以程序才會報錯,為了讓程序不報錯,我可以進行如下修改:

語句Range("B1").Select修改為Sheets("Sheet1").Range("B1").Select,再進行調試的時候,就不會提示錯誤了。

可能有的小夥伴就奇怪了,為啥我錄製宏的時候不會報錯呢?其實我們錄製的宏是放在一個模塊裡面,所以操作整個工作簿的工作表都是沒問題的,接下來我會錄製一個宏進行講解。

從上面的動態圖可以看出,我錄製了一個默認命名為【宏1】的宏,錄製的宏會自動放在一個模塊裡面。如果我們沒有在錄製宏的過程中選擇單元格,默認只會針對目前選中的工作表。但當選中其他的工作表,我們再運行【宏1】,代碼也是可以運行的,但所有的操作就是針對選中的工作表,如果希望引用或選擇其他單元格裡面的內容,代碼必須寫完全是操作哪一個工作表的單元格

我先選中Sheet4工作表,然後執行【宏1】代碼,單元格C2:F9都會被填充為數字1。所以如果我們希望代碼能夠很好地運行,我們可以把複製的代碼放到新建的模塊中,再次運行就不會出現上面1004的問題啦。

今天的分享就到這裡啦,上海太冷了,寫字凍手,進被窩去啦~Written by Steven in 20170119^_^

微信公眾號:SaveUTime

SUT學習交流群:615356012

關注公眾號,提高效率,節約您的時間!


推薦閱讀:

64位的excel與32位的excel相比,有哪些優缺點?64位的excel使用體驗如何?
手把手教你VBA
VBA 如何把字元串轉換為可執行語句?
有哪些學習vba的好書推薦?現在學習vba是否有些過時?現在比較好的操縱word和excel的方式有哪些?

TAG:VBA | 模块 | Excel技巧 |