Excel VBA: Schleife Wenn Zellen In ActiveSheet
Ich versuche, eine Schleife durch eine angegebene Anzahl von Zellen (definiert durch Breite und Höhe), aber ich bin in Probleme laufen, hier. Es hält Abwürgen auf mich, und dann regt sich auf über:
If .Cells(11 + row, col).Value > maxVal Then
Er mir "Anwendungs-oder objektdefinierter Fehler"
Kann mir jemand sagen, wohin ich gehe falsch mit meinem code:
Sub ApplyFilter()
Dim maxVal As Double
Dim minVal As Double
maxVal = ActiveSheet.Range("D10").Value
minVal = ActiveSheet.Range("D11").Value
Dim width As Integer
Dim height As Integer
width = ActiveSheet.Range("L3").Value
height = ActiveSheet.Range("L4").Value
Dim row As Integer
Dim col As Integer
ActiveSheet.Select
With Selection
row = 1
Do
col = 1
Do
If .Cells(11 + row, col).Value > maxVal Then
.Cells(11 + row, col).Value = 0
End If
If .Cells(11 + row, col).Value < minVal Then
.Cells(11 + row, col).Value = 0
End If
col = col + 1
width = width - 1
Loop Until width = 1
row = row + 1
height = height - 1
Loop Until height = 1
End With
End Sub
- Es gibt keine Zelle mit Spalte=0. Sie sollte bei 1 beginnend.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Manchmal Excel geben würde "Anwendungs-oder objektdefinierter Fehler" für keinen Grund, denn es ist nur die Art, wie Excel, aber das ist wohl hier nicht der Fall.
Nicht verwenden
Select
oderSelection
um mit Objekten zu interagieren. Namen der Objekte direkt.row
undcol
haben an diesem Punkt?Das problem hier war, dass ich nicht das zurücksetzen der width-Wert für jede neue Zeile. Ich hätte es mit einer For-Schleife, die hätte behandelt das problem eher intuitiv.