返回列表 上一主題 發帖

[發問] Excel2003 remove duplicates相容性問題

[發問] Excel2003 remove duplicates相容性問題

各位好
目前工作交接時,發現離職同事行情使用VBA紀錄,進而開始摸索
因個人電腦版本需要把office2013的VBA改成office2003的版本

在收取行情時會每小時刪除重複的資料 ,此內容寫在模組中,執行時在指定的32個工作表刪除
在改寫時遇到remove duplicates相容性的問題,
有參考版上的文章嘗試改寫成2003的版本在工作表內可以正常執行,但在模組中有時會跳出錯誤
再度參考網路的資料後 改寫成下面的內容即可在模組中正常執行
但執行時發現除了效率變差外,資料量龐大時還可能會當機QQ

想請問大家對於RemoveDuplicates改寫為2003版可使用的版本時,是否有較好的寫法呢?
謝謝大家!!


原始office2013用法為
------------------------------------------------------------
Sub delete()

For i = 2 To 33

Sheet(i).Range("B4:AG65536").RemoveDuplicates Columns:=Array(2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33), Header:=xlNO

Next i
End Sub
------------------------------------------------------------

目前我參考網路資料改寫office2003為
------------------------------------
Sub delete()
For i = 2 To 33

Dim r As Range, Rng As Range

Sheets(i).Select

With Sheets(i).UsedRange
.Columns("B:AG").AdvancedFilter Action:=xlFilterInPlace, Unique:=True
Dim g%
Application.ScreenUpdating = False
For g = ActiveSheet.UsedRange.Rows.Count + ActiveSheet.UsedRange.Row - 1 To ActiveSheet.UsedRange.Row Step -1
If Rows(g).Hidden = True Then
Rows(g).EntireRow.delete
End If
Next
Application.ScreenUpdating = True

End With
Next i

End Sub
------------------------------------------------------------

回復 2# faye59


您好 謝謝您的回覆 我本身不會寫VBA,主要是因為我電腦只有買EXCEL2003 所以只能想辦法讓VBA可以在2003版執行

也有發現 remove duplicates是2007年才有的功能,因此才特別苦惱QQ

謝謝您提供建議為CreateObject("Scripting.Dictionary")

這個用法我在PO文前沒有查到,我也來研究看看 如果寫不出來再上來請教各位 謝謝!

TOP

回復 4# GBKEE


    GBKEE大 非常謝謝您的幫忙  我今天早上試了一下

發現他會在Set Rng(1) = Sheets(i).Range("B4:AG65536")跳出錯誤

訊息為"陣列索引超出範圍" 不是很清楚這個錯誤的原因  

想請問您是否知道為什麼範圍沒超過工作表限制仍會錯誤嗎

TOP

回復 6# faye59


    faye59大 您好

Microsoft Excel物件資料夾下有33個Sheet
我需要他跑工作表2到工作表33
聽不太懂您的意思QQ

決定把檔案放上來 再麻煩您查看 謝謝您!

PS. 執行的程式 放在"模組"的DDE裡面的delete()

DDE_main - 更改.zip (70.97 KB)

TOP

回復 8# 准提部林


  謝謝兩位的回覆!

關於准大的建議 我正在參考您的部落格研究可以怎麼修正

這程式原本在2013跑得蠻順的 改成2003就一堆狀況 我也很苦惱QQ 只能持續摸索了

TOP

回復 11# 准提部林


    謝謝准大! 非常感謝您無私的幫助 我本來正在嘗試用您網站的提供的程式來修改

結果就有新的回覆了! 我來試試看實際跑起來能不能成功!

TOP

        靜思自在 : 【停滯不前,終無所得】人都迷於尋找奇蹟,因而停滯不前;縱使時間再多、路再長,也了無用處,終無所得。
返回列表 上一主題