MaverickRay 發表於 17-11-7 21:21

請教幾個初階的小疑問(內文主要是VBA)其次是關於程式交日...

想請教各位版上先進,最近在初階研究EXCEL VBA,但由於手上的書籍是針對EXCEL舊版2003的,
但自己PC上安的是2013版,以往的試算表經驗最多就是副檔名不同所致會有些微開檔錯誤...
由於一直處在卡關的進度..(這樣的效率好慢),所以上來求救囉..
在書本裡有這麼一個範例
Sub 新增活頁簿()
Workbooks.Add
End Sub


奇怪的地方在於,我開啟它後按此巨集會出現錯誤在第二行處..
然後我將檔案另存成新的2013版的xlsm(for巨集)用
接續在執行該巨集一樣跳出錯誤在第二行..


於是我開了個2013版的新檔、然後開啟VBE後,自己照本宣科的全抄了過去..
執行後完美的開啟一個新的活頁本...
差異只是他的Sub前面多幫我自動加了Public
1、這裡也有些小疑問,因為這舊書最多告知的public不是用在宣告變數時才用到的嗎?
那這新版的是不是把這段小小的程式也當做一個公用的程式?(以方便其他程式呼叫)是這樣嗎?


2、我的問題便是為何書上的範例檔,不論我是否將其另存新檔,或只是純模擬用2003版去開這.xls的檔案
結果啟動巨集時都會有錯誤呢?
也因這問題導致我後續的書中案例全部卡關了..
諸如workbooks.close
等等等.....
請教這是什麼原因?


3、另外想多請教EXCEL VBA 2013的離線說明檔是否已不存在?因書中有提及在安裝夾內是有個VBAXL10.CHM
可是我上網找了下好像很多人跟我一樣遇到只剩線上說明檔...(線上的怪怪的,有問題卻找不到,或是壓根的有看沒有懂)


4、最後就是若想用程式來自動幫投資人交易,我應該從哪塊切入會最快上手..?
感恩了~

chhung3 發表於 17-11-10 10:09

1. VBA入面的MODULE,初學程式的話,建議加這兩句:

option explicit

option base 1

這樣會強制要求你所有有用過的variable都必須先declare, 可減少大量因typo而產生的bug。

2. 說明書現在沒人用的了。你將問題打上google search,肯定一大堆答案你慢慢參考。

3. public可以不用打的,因為你不打,default都係public type。不過for good programming practice, 我建議打,方便自己看。
        另外如果你加一張新userform, 裏面是不可以用public的,因為form本身是private type.

4. 用一個excel file 控制另一個excel file會很麻煩,其實不太建議。而就算真有必要,你的程式也要改左改:

sub add_new_wb()
        dim wb as workbook
        set wb = workbooks.add
        with wb
                'work on your workbook here.
        end with
end sub

這樣你才可以拿這個新加的workbook做其他事。而其實用excel的話,多用worksheet比較好:

sub add_new_ws()
        dim ws as worksheet
        set ws = thisworkbook.sheets.add
        with ws
                'work on your worksheet here.
        end with
end sub


5. 自動交易很複雜,牽涉的問題太多,一開始還是別碰的好。先寫好程式再說吧。

MaverickRay 發表於 18-9-1 15:20

chhung3 發表於 17-11-10 10:09
1. VBA入面的MODULE,初學程式的話,建議加這兩句:

option explicit


謝謝上面二位的大力幫助,我後來努力看了好久,這問題也卡關許久,真的想想,還是要對照版本的同質書做初階學會比較好上手。謝謝
頁: [1]
查看完整版本: 請教幾個初階的小疑問(內文主要是VBA)其次是關於程式交日...