|
樓主 |
發表於 19-11-26 23:51
|
顯示全部樓層
本帖最後由 MaverickRay 於 19-11-26 23:55 編輯
事情是這樣的,當我將onError Goto... 加入到我的程序中.....===============================
For a = 6 To Range("A6").End(xlDown).Row '從第六列起,到自A6格往下共有列數(所有公司數)
'讓程式忽略任何的錯誤
'=>將 On Error 的處理方式指定為 Resume Next。但執行後會將分母為0時之儲存格以空白填入
On Error Resume Next
'將計算結果丟到目標欄
Cells(a, [目標欄].Column) = Val(Cells(a, [分子欄].Column)) / Val(Cells(a, [分母欄].Column))
Next a
=======================
問題:
'1、執行完後凡遇分母為0時,則目標欄的儲存格內之值皆為空白,無法幫忙填入值為0
'2、若改用 網頁範例中的On Error GoTo ErrorHandler 、、、、,則會在加入到自己的程式後,出現 ErrorHandler: 這一塊使用者未定義,還沒研究清楚要怎麼撰寫...雖然我有將範例檔照著使用,單獨時很OK,但加入到自己程式後,卻出現未定義sub、、、等,不知是否為我加入到主要Sub()~~END Sub內所致???
'3、由於無法填入0,使得做總體篩選時不方便,所以我只好先棄on error、、、
改用條件式判斷,程序如下:
=======================
For a = 6 To Range("A6").End(xlDown).Row '從第六列起,到自A6格往下共有列數(所有公司數)
'讓程式忽略任何的錯誤
'=>將 On Error Resume Next 改用 if 判斷條件式
If Val(Cells(a, [分母欄].Column)) = 0 Then
Cells(a, [目標欄].Column) = 0
Else
Cells(a, [目標欄].Column) = Val(Cells(a, [分子欄].Column)) / Val(Cells(a, [分母欄].Column))
End If
Next a
=======================
雖然可以正常執行,但有個問題卻開始困擾了我...
原因出在多了個條件式在迴圈內,而公司共計近2萬筆,換言之,這個不論我是用 if 判斷式 或用 on Error Resume Next,因為都卡在迴圈內,這跑完真的消耗費挺多的時間,故想請教大大,我該如何才能優化...
在此先跟大大們道聲感謝 Orz
|
|