Ich habe derzeit den Code unten. Ich muss es von Zelle S1 zu Zelle S5000 und alles dazwischen laufen lassen. Was ich getan habe, war geschrieben Code für jede einzelne Zelle für 1 bis 5000, aber dann, als ich den Code in das Arbeitsblatt eingefügt habe, bekam ich die Nachricht "Kompilierfehler: Prozedur zu groß". Gibt es eine Problemumgehung, damit ich den Code für jede Zelle auf 5000 oder sogar mehr ausführen kann, wenn erforderlich?Kompilieren Fehler bei VBA-Code zu Long
Vielen Dank für Ihre Hilfe!
Sub CopyPriceOver()
Application.ScreenUpdating = False
If Range("S1") = 1 Then
Range("S1").Select
Range("S1").Select
Call ScheduleCopyPriceOver
ElseIf Range("S2") = 2 Then
Range("L2").Select
ActiveCell.FormulaR1C1 = "ready"
Range("L1").Select
Call ScheduleCopyPriceOver
ElseIf Range("S3") = 3 Then
Range("L3").Select
ActiveCell.FormulaR1C1 = "ready"
Range("L1").Select
Call ScheduleCopyPriceOver
.
.
.
.
ElseIf Range("S5000") = 5000 Then
Range("5000").Select
ActiveCell.FormulaR1C1 = "ready"
Range("L1").Select
Call ScheduleCopyPriceOver
Else
Call ScheduleCopyPriceOver
End If
Verwenden Sie eine Schleife? Es ist nicht klar, was genau Sie erreichen möchten. – SJR
schauen Sie sich die 1 bis 5000 an, dann sagen Sie 'if range (" s "& x) .value = Bereich (" s "& x) .row dann Bereich (" L "& x) .value =" ready "' und haben den Bereich als ein Argument in ScheduleCopyPriceOver, wenn die Auswahl von L1 etc. ist, dass diese Prozedur ActiveCell verwendet. –
"Prozedur zu groß" bedeutet genau das: Die Prozedur ist so lächerlich groß, dass der Parser von VBA es nicht einmal nehmen wird. Schreiben Sie strukturierten Code, Prozeduren sollten nicht länger als ein Bildschirm voll sein, maximal. Vermeiden Sie das Schreiben von Makrorekorder-Code, der nutzlos ".Select" und ".Activate" überall verteilt und "ActiveCell" und "Selection" abarbeitet; lernen, Schleifen und richtigen Kontrollfluss zu verwenden. Durchsuchen Sie die [VBA-Dokumentation] (http://stackoverflow.com/documentation/vba/topics), um zu erfahren, wie das geht. –