2013-10-23 80 views
0

使用下面的代碼,我打開一個工作簿,然後需要從打開的工作簿(nb)中的行中刪除所有重複項。VBA刪除另一個工作簿中的重複行

Dim nb As Workbook, tw As Workbook, ts As Worksheet 
a = Application.GetOpenFilename 
If a = False Or IsEmpty(a) Then Exit Sub 
With Application 
    .ScreenUpdating = False 
End With 
Set tw = ThisWorkbook 
Set ts = tw.ActiveSheet 
Set nb = Workbooks.Open(a) 

我試圖得到這個工作的各種方法,但它似乎我爲了把這種對工作簿缺少的重要部分。我得到一個424對象所需的錯誤。

'Remove duplicates 
Dim r As Range 
c = nb.ActiveSheet.UsedRange.Rows.Count 
LR = c - 1 

Set r = nb.ActiveSheet.Range("A8:H" & LR) 
r.RemoveDuplicates Columns:=Array(1), Header:=xlNo 

是給予(需要424對象)錯誤的線,是

r.RemoveDuplicates Columns:=Array(1), Header:=xlNo 

我想這是因爲r是一個範圍,而不是設定爲特定的工作簿,

當我查看對象r時,它將顯示在錯誤工作簿中的工作表上。我不理解爲什麼,因爲我明確地標記R爲外部工作簿這裏

Set r = nb.ActiveSheet.Range("A8:H" & LR) 
+0

您分配'LR'兩個值和我相信'LR = -1'需要是' LR = LR - 1'?因爲現在'LR = -1'和'H-1'不是有效的單元格。 – CustomX

+0

是的,我修正了這個問題。 LR未設置爲行數-1,因爲最後一行是總計行。 – Tommy

回答

0

問題是一個合併的單元格,當有重複的VBA代碼不知道該怎麼做的範圍內的合併單元格時,據我所知。

以下是用於打開外部工作簿的子,並且在一個範圍內除去dublicates,從工作表1

Sub remDup3() 
Dim nb As Workbook, tw As Workbook, ts As Worksheet 
a = Application.GetOpenFilename 
If a = False Or IsEmpty(a) Then Exit Sub 
With Application 
.ScreenUpdating = False 
End With 
Set tw = ThisWorkbook 
Set ts = tw.ActiveSheet 
Set nb = Workbooks.Open(a) 

LR = nb.Sheets(1).UsedRange.Rows.Count 

     With nb.Sheets(1) 
     Set Rng = Range("A9:H" & LR) 
     Rng.RemoveDuplicates Columns:=Array(4), Header:=xlNo 
    End With 
End Sub 
0

不要使用Activesheet - >它傷害了我的眼睛。

名稱您的工作表,然後叫他們用

LR = nb.sheets('somesheet').Range("A1:H" & LR) 

你會在你的程序的整體注意到更少的錯誤。 嘗試在設置範圍之前明確激活工作簿和工作表。

編輯 根據你的第二個問題,您應該調試:

1)檢查使用範圍

Dim oRange as excel.range 

nb.sheets("NAMEYOURSHEET").activate 
set oRange = nb.sheets("NAMEYOURSHEET").UsedRange 

在立即窗口中鍵入:oRange.select + '回車鍵'。
如果你在這裏的某處發現了錯誤,那麼你就知道你的問題在哪裏。

+0

非常感謝您的建議,但更改爲'LR = nb.Sheets(1).Range(「A1:H」&LR)'不會消除錯誤。它不會這樣做,因爲LR正在與現在正在定義的同一行中使用。 – Tommy

+0

嘗試替換所有活動頁。嘗試在設置範圍之前明確激活工作簿和工作表。 – Trace

+0

我更新了帖子中的代碼,以顯示它沒有拋出一個424對象所需的錯誤,我猜測這是因爲VBA不知道應用刪除重複項的位置,即使LR已被定義爲外部打開的工作簿。 – Tommy

相關問題