你好,我有下面的代碼。本質上,它在每個工作表中抓取特定範圍的唯一值並將其添加到同一工作表一側的範圍內。.find適用於我的一個程序,但不是另一個
.find方法不適用於我,就像它在另一個過程中所做的那樣,我想解釋爲什麼或者我在做什麼錯誤,或者在寫入不同代碼時行爲之間的差異。合理?
sub methodtwo()
Dim cell As Range
Dim strDATE As String
Dim datehr As Range
For i = 1 To Sheets.Count - 4
Sheets(i).Activate
Set datehr = Sheets(i).Range("H2", Sheets(i).Range("H2").End(xlDown))
For Each cell In datehr
strDATE = cell.Value
Set cell = Sheets(i).Range("L1:L400").Find(What:=strName)
If cell Is Nothing Then
Sheets(i).Range("L1").End(xlDown).Offset(1, 0).Value = cell
End If
Next cell
Next i
End Sub
下面是我之前編寫的代碼和上面編寫代碼的參考。在下面的代碼中,find方法可以完美工作,並將唯一值添加到指定的範圍內......上面的代碼沒有。
Sub methodone()
Dim sh As Worksheet
Dim r As Long
Dim a As Range
Dim al As Range
Dim strName As String
For Each sh In Worksheets
sh.Activate
sh.Range("K1").Activate
Set al = ActiveSheet.Range("A2:A13000")
For Each a In al
strName = a.Value
Set Cell = ActiveSheet.Range("K1:K400").Find(What:=strName)
If Cell Is Nothing Then
ActiveSheet.Range("K1").End(xlDown).Offset(1, 0).Value = a
End If
Next a
Next sh
End Sub
我想要的methodtwo()來做爲methodone()完全一樣的東西除了在最後的4張。
問題是否明顯?我正在關注細節......尤其是在使用以前編寫的代碼作爲參考時。
methodtwo似乎在尋找'strName'後 - 這不宣 – natancodes
啊哦,親愛的...我沒有將其更改爲strDATE。非常感謝。我真的應該更加小心。現在還有另一個問題。 IF語句中的以下行返回錯誤1004應用程序定義或對象定義的錯誤'sheets(I).range(「L1」).end(xldown).offset(1,0).value = cell'這是通過替換'細胞'與'strDATE' – BezukhovPierre
@BezukhovPierre編輯您的文章與新問題,並澄清您的問題。你不應該在評論中提出新的問題...... – Chrismas007