Board logo

標題: [發問] 檔案開啟問題,及VBA觀念問題 [打印本頁]

作者: ayubbs    時間: 2013-8-29 22:46     標題: 檔案開啟問題,及VBA觀念問題

各位大大 晚上好~
有個幾個問題想向各位老師們發問,
1.像開啟檔案時小妹通常都使用 Workbooks.Open "C:\TEST\AA.xls"
這種方式開啟,想請教如要開啟檔案在同個目錄下時,是否可不指定路徑方式而開啟檔案

因剛接觸VBA對EXCEL的應用從前都只停留在涵數使用,常常都在做報表分析後來會使用
錄製巨集方式去處理一些繁複的動作,後開始接觸VBA應用方式完全不相同,現在也還是努力
的用看書及爬文方式去多了解一些,但對很多動作還是很不了解,也會再多努力希望能加快進步
有一問題
2.像我有錄製好的巨集在 SHEET中若想將程式碼加入  CommandButton按下啟動通知都會出現
方式不正確的錯誤,但如用userform方式再加入CommandButton按鈕卻能執行,程式碼內容
都相同實在不了解是何原理會這樣?
3.之前也有發問提問一些VBA的應用方式,我將它和我錄製好的內容放在一起時都不能正確完成
動作,想請問錄製的內容和有宣告變數及動作的SUB是不能放在同一個CommandButton一起執
行這樣是嗎? 因為有一些問題我可以在錄製內容中完成,想在錄製內容進行到某一部份時加入執
行以VBA 方式的程式然後再繼續進行我錄製的內容但因不熟悉使用方式,都一直不能成功。

很抱歉又一次問了一堆問題,因現在也拿不出具體的檔案實在也很難形容,不合規定也希望各位
老師能給個觀念的指導,謝謝大家
作者: luhpro    時間: 2013-8-30 00:08

本帖最後由 luhpro 於 2013-8-30 00:22 編輯

ayubbs 發表於 2013-8-29 22:46
1. 如要開啟檔案在同個目錄下時,是否可不指定路徑方式而開啟檔案

Workbooks.Open ThisWorkbook.Path & "\AA.xls"

2. Sheet 與 userform 中的 CommandButton 物件處理,
程式碼內容都相同實在不了解是何原理會這樣?

因為 用userform方式再加入CommandButton按鈕,
執行時的指令大都在該 userform 的程序內,
故而往往不需指定 CommandButton 按鈕的父物件(userform)就可正常使用.

然而相對於在 SHEET 中加入的 CommandButton 物件,
雖然兩者都是 CommandButton 物件,
但後者有些指令是沒有的,
例如 : CommandButton1.TabIndex

還有在 SHEET 中的 CommandButton 物件在引用時,
可能常常需要用 Sheet("Sheet1").CommandButton1 的方式才能正常使用
(當指令非在該物件本身的事件程序<CommandButton1_Click 之類>中時, 例如 : Worksheet_Change).

3. 有一些問題我可以在錄製內容中完成,想在錄製內容進行到某一部份時加入執
行以VBA 方式的程式然後再繼續進行我錄製的內容但因不熟悉使用方式,都一直不能成功。

不能正確完成動作大都是套用錯誤,
你要先確認你想做的是什麼,
程式寫好後可以在問題發生前的指令行,
用滑鼠點一下其左邊的灰色區域開啟中斷模式.

按 F5 按鍵執行到該行程式會暫停,
再利用 F8 按鍵的單步模式,
先確認下一行即將執行的指令中的相關變數或物件是否為正確值.

取值可將滑鼠移到想追蹤的變數或物件名稱上不動幾秒就會秀出其現在值,
或是開啟 區域變數 視窗確認變數值是否正確,
也可於 即時視窗中 善用 ? 指令求值.

再於 即時視窗中 實做該行指令,
看是否動作或顯示的結果正常,
這樣一步一步的找出問題點.

另外在即時視窗中不能正常執行 With 指令,
所以必須先將 . 代換成完整的物件引用指令才能正常運作,
例如 :
With Sheets("Sheet1")
  With .Cells(2, 3)
    With .Font
      .Name = "新細明體"
      .Bold = True
      .ColorIndex = 1
    End With
  End With
End With

其中 在即時視窗 要實做出 .Name = "新細明體" 這行指令的結果,
就要改成 Sheets("Sheet1").Cells(2, 3).Font.Name = "新細明體" 才可以.

還有若指令太長不好記憶或是不確定接下來該下哪個參數時,
可以先在即時視窗上用以下的方式來抓正確的指令碼:
range.
sheets.
range.Find(
以上是我設計 Excel VBA 程式時碰壁了無數次,
才試出來的技巧.
作者: ayubbs    時間: 2013-8-30 07:41

回復 2# luhpro

謝謝luhpro大指導,小妹會再多用力練習,不想在遇到困難時
只向人求解答而卻一直不了解意義,謝謝...再來有疑問時也希望各位
老師不吝指導




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)