Ich habe die folgende Sub, die gut funktioniert, wenn der Bereich, den es umfasst, weniger als 88 Zellen ist, sonst scheitert es um die 88. Iteration.VBA-Schleife fehlgeschlagen um 88. Iteration
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count = 1 And Target.Row >= 3 And Target.Row <= 30 And Target.Column >= 17 And Target.Column < 22 Then
i = Target.Row
Dim MergeGroups As Range
Dim GroupTable As Range
Dim rngStart As Range
Dim rngEnd As Range
Dim rngToCount As Range
Dim CurrentGrp As Range
Dim NextGrp As Range
Dim NumVals As Integer
Set MergeGroups = Range("A1:O1")
Set GroupTable = Range("Q2:V2")
Set CurrentGrp = Range(Cells(GroupTable.Row, ActiveCell.Column).Address)
Set NextGrp = Range(Cells(GroupTable.Row, ActiveCell.Column + 1).Address)
Set rngStart = MergeGroups.Find(CurrentGrp.Value)
Set rngEnd = MergeGroups.Find(NextGrp.Value)
Set rngToCount = Range(Cells(ActiveCell.Row, rngStart.Column), Cells(ActiveCell.Row, rngEnd.Column - 1))
' rngToCount.Font.Bold = True
NumVals = Application.WorksheetFunction.CountA(rngToCount)
Cells(i, ActiveCell.Column).Value = NumVals
ActiveCell.Offset(1, 0).Select
Do While ActiveCell.Column < 21
ActiveCell.Offset(-28, 1).Select
Loop
End If
End Sub
Es ist ein Objekt in einem bestimmten Arbeitsblatt, die Verwendung des Ereignisses SelectionChange
machen. Wenn es fehlschlägt, erhalte ich die Fehlermeldung:
Laufzeitfehler '-2147417848 (80010108)': Methode 'Find' des Objekts 'Bereich' fehlgeschlagen.
Das Problem ist mit der Zeile:
Set rngStart = MergeGroups.Find(CurrentGrp.Value)
Kann mir jemand helfen, arbeiten, warum die Sub für kleine Bereiche fein läuft, aber ansonsten nicht um eine bestimmte Iteration?
Sie rufen dasselbe Sub-Register jedes Mal, wenn Sie eine andere Zelle in der Schleife auswählen. Sie müssen entweder herausfinden, wie Sie dies tun, ohne Auswahl zu verwenden, oder die Ereignisse deaktivieren, während Sie die Schleife ausführen, und sie aktivieren, bevor Sie das Subsystem verlassen. –
Vielen Dank an @ Mat'sMug! Ich muss gestehen, dass ich die Antwort nicht vollständig verstanden habe, aber es hat mich in die richtige Richtung gebracht - [this link] (http://stackoverflow.com/questions/10714251/how-to-avoid-using-use-in- Excel-VBA-Makros) war hilfreich, weil ich nicht verstehen konnte, was an '.Select' so böse war. Ich denke, ich habe es jetzt funktioniert, ich werde meinen neuen Code hier posten, sobald ich es richtig getestet habe. – rngeta453