私が現在直面している問題は、コードが定義された範囲をループしないということです。ここでVBA(Excel)範囲をループできません
は私のコードです:
Private Sub Vergelijk_prijs_en_staffel_click()
Dim xlRange As Range
Dim xlRange2 As Range
Dim xlCell As Range
Dim xlCell2 As Range
Dim xlSheet As Worksheet
Dim xlSheet2 As Worksheet
Dim ValueToFind
Dim lastRow As Integer
Set xlSheet2 = Sheets(1)
Set xlRange2 = xlSheet2.Range("I6:I5715")
For Each xlCell2 In xlRange2
If ActiveCell.Row > 5715 Then Exit Sub
ValueToFind = xlCell2.Value
If xlCell2.Value = ValueToFind Then
If Sheets("Tab 1 - Prijslijst").Range("DK" & ActiveCell.Row).Value = Sheets("Tab 2 - Nieuwe prijzen").Range("W" & ActiveCell.Row).Value And Sheets("Tab 1 - Prijslijst").Range("DL" & ActiveCell.Row).Value = Sheets("Tab 2 - Nieuwe prijzen").Range("X" & ActiveCell.Row).Value And Sheets("Tab 1 - Prijslijst").Range("DM" & ActiveCell.Row).Value = Sheets("Tab 2 - Nieuwe prijzen").Range("Y" & ActiveCell.Row).Value And Sheets("Tab 1 - Prijslijst").Range("DN" & ActiveCell.Row).Value = Sheets("Tab 2 - Nieuwe prijzen").Range("Z" & ActiveCell.Row).Value And Sheets("Tab 1 - Prijslijst").Range("DO" & ActiveCell.Row).Value = Sheets("Tab 2 - Nieuwe prijzen").Range("AA" & ActiveCell.Row).Value And Sheets("Tab 1 - Prijslijst").Range("DP" & ActiveCell.Row).Value = Sheets("Tab 2 - Nieuwe prijzen").Range("AB" & ActiveCell.Row).Value And Sheets("Tab 1 - Prijslijst").Range("DQ" & ActiveCell.Row).Value = Sheets("Tab 2 - Nieuwe prijzen").Range("AC" & ActiveCell.Row).Value Then
If Sheets("Tab 1 - Prijslijst").Range("DR" & ActiveCell.Row).Value = Sheets("Tab 2 - Nieuwe prijzen").Range("AD" & ActiveCell.Row).Value And Sheets("Tab 1 - Prijslijst").Range("DS" & ActiveCell.Row).Value = Sheets("Tab 2 - Nieuwe prijzen").Range("AE" & ActiveCell.Row).Value And Sheets("Tab 1 - Prijslijst").Range("DT" & ActiveCell.Row).Value = Sheets("Tab 2 - Nieuwe prijzen").Range("AF" & ActiveCell.Row).Value Then
If Sheets("Tab 1 - Prijslijst").Range("DU" & ActiveCell.Row).Value = Sheets("Tab 2 - Nieuwe prijzen").Range("AG" & ActiveCell.Row).Value And Sheets("Tab 1 - Prijslijst").Range("DV" & ActiveCell.Row).Value = Sheets("Tab 2 - Nieuwe prijzen").Range("AH" & ActiveCell.Row).Value And Sheets("Tab 1 - Prijslijst").Range("DW" & ActiveCell.Row).Value = Sheets("Tab 2 - Nieuwe prijzen").Range("AI" & ActiveCell.Row).Value And Sheets("Tab 1 - Prijslijst").Range("DX" & ActiveCell.Row).Value = Sheets("Tab 2 - Nieuwe prijzen").Range("AJ" & ActiveCell.Row).Value And Sheets("Tab 1 - Prijslijst").Range("DY" & ActiveCell.Row).Value = Sheets("Tab 2 - Nieuwe prijzen").Range("AK" & ActiveCell.Row).Value And Sheets("Tab 1 - Prijslijst").Range("DZ" & ActiveCell.Row).Value = Sheets("Tab 2 - Nieuwe prijzen").Range("AL" & ActiveCell.Row).Value And Sheets("Tab 1 - Prijslijst").Range("EA" & ActiveCell.Row).Value = Sheets("Tab 2 - Nieuwe prijzen").Range("AM" & ActiveCell.Row).Value Then
If Sheets("Tab 1 - Prijslijst").Range("EB" & ActiveCell.Row).Value = Sheets("Tab 2 - Nieuwe prijzen").Range("AN" & ActiveCell.Row).Value And Sheets("Tab 1 - Prijslijst").Range("EC" & ActiveCell.Row).Value = Sheets("Tab 2 - Nieuwe prijzen").Range("AO" & ActiveCell.Row).Value And Sheets("Tab 1 - Prijslijst").Range("ED" & ActiveCell.Row).Value = Sheets("Tab 2 - Nieuwe prijzen").Range("AP" & ActiveCell.Row).Value Then
Sheets("Tab 3 - Prijslijst aangepast").Range("I" & ActiveCell.Row).Interior.ColorIndex = 15
xlCell2.Interior.ColorIndex = 15
Else
Call ntofourty(xlCell2)
End If
Else
Call ntofourty(xlCell2)
End If
Else
Call ntofourty(xlCell2)
End If
Else
Call ntofourty(xlCell2)
End If
Else
xlCell2.Interior.ColorIndex = 3
End If
'Set xlSheet = Sheets(1)
'Set xlRange = xlSheet.Range("I6:I5715")
If ValueToFind = "" Then
xlCell2.Interior.ColorIndex = 45
Exit Sub
End If
Next xlCell2
End Sub
あなたが見ることが範囲内に次のセルに移動し、そのセル範囲や色を経由するので、最後Next xlCell2
の行がそれを作る必要があります。しかし、今、コードが何をしているのかは、同じセルを何度も何度も色づけしています。
私は本当に助けていただきありがとうございます!
ActiveCellを使用して停止してください!!!!それには理由が説明されるであろう数十の答えがあります。そして、それはあなたの現在の問題を避けたでしょう。 –
こんにちは@PatrickHonorez、あなたの答えに感謝します。私はExcel VBAでかなり初心者です。 ActiveCellの使用を避けるために、正しい方向に私を指摘してください。 –
@MauricevanDorstは、あなたのコードについてHarassed Dadがすでに言及していることに加えて、ここでの主な原因は、すべてのANDを使用した大量のIf文と、ActiveCells.Rowを参照し続けていることです。 xlCell2.rowに変更してください...あなたのコードが実際に何をすることになっているのか、いくつかの例を挙げてお聞きしたら、コードをクリーンアップするのを助けることができました.... – Xabier