Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1516to1520
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Fehler beim Kompilieren: Prozedur zu groß

Fehler beim Kompilieren: Prozedur zu groß
26.09.2016 15:06:04
Herr
Hallo Zusammen,
ich habe im Anhang( https://www.herber.de/bbs/user/108416.txt ) einen Code...sehr umständlich, geht wahrscheinlich auch einfacher. Jedenfalls kommt bei der Anwendung immer die Fehlermeldung: "Prozedur zu groß".
Nun hab ich mich bereits im Inet erkundigt und herausgefunden, dass es wohl an der 64kb-Grenze liegt.
Kann mir jemand den Code vereinfachen oder so verändern, dass die Fehlermeldung nicht mehr kommt. Vllt mit "Sub-Blöcken"?
Leider sind meine Möglichkeiten begrenzt, daher darf gern direkt in die Datei geschrieben werden.
Vielen Dank für die Unterstützung!
VG
Herr Koch

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehler beim Kompilieren: Prozedur zu groß
26.09.2016 15:18:13
Daniel
Hi
du musst nicht jede Zelle einzeln übertragen.
immer dann, wenn du einen grösseren Zellblock ohne Lücken von einem Bereich in einen anderen überträgst, funktioniert das für alle Zellen gleichzeitig mit einem Befehl.
Wenn dabei Zeilen und Spalten getauscht werden müssen, so wie bei dir, dann geht das auch mit Inhalte einfügen - Transponieren.
ersetze in deinem Code diesen ganzen Block
WS2.Cells(Zeile, 3) = WS1.Range("K12")
WS2.Cells(Zeile, 749) = WS1.Range("K758")

durch:
WS1.Range("K12:K758").Copy
WS2.Cells(Zeile, 3).PasteSpecial xlpastevalues, Transpose:=True

und für die anderen Zellbereiche natürlich auch entsprechend.
um das hier zu vereinfachen:
Case "K12", ...,  "K758"
müsstest du auf ein IF - THEN - Konstrukt ausweichen. Analog wäre hier:
If Target.CountLarge = 1 Then
If Not Intersect(Target, Range("K12:K758")) is nothing Then
...  hier dann der weitere Code
ElseIf Not Intersect(Target, Range("H4:I4")) is nothing then
... hier dann der Code für diesen Fall
End if
End If
Gruß Daniel
Anzeige
AW: Fehler beim Kompilieren: Prozedur zu groß
26.09.2016 15:41:15
Herr
Hallo Daniel,
danke für die Hilfe. Kann ich mit dem Bereich:
WS1.Range("K12:K758").Copy
WS2.Cells(Zeile, 3).PasteSpecial xlpastevalues, Transpose:=True
1:1 beide großen Bereiche ersetzen oder muss hier noch was angepasst werden?
VG Tino
AW: Fehler beim Kompilieren: Prozedur zu groß
26.09.2016 15:54:32
Daniel
Hi
naja, du musst schon schauen, welches der Quelldatenbereich und welches der Zieldatenbereich ist und dann die Codes entsprechend anpassen.
Das ist nur ein Beispiel, um dir zu zeigen wie es geht.
Die konkrete Arbeit und Anpassung in deinem Code musst du schon selber machen.
wie gesagt, zusammenfassen kannst du immer alles, was einen Lückenlosen Zellblock bildet, sowohl im Quell-, als auch im Zielbereich.
sobald da eine Lücke drin ist, musst du erneut kopieren und einfügen.
Ich habe deinen Code jetzt dahingehend auch nicht vollständig überprüft, ob da in den über 700 Zellen alles durchgängig ist, dass musst du dann schon selber tun (oder jemanden dafür bezahlen, dass er deine Arbeit für dich erledigt)
Gruß Daniel
Anzeige
AW: Fehler beim Kompilieren: Prozedur zu groß
26.09.2016 16:00:10
Herr
Okay, vielen Dank...ich versuche es.
Fehler beim Kompilieren: Prozedur zu groß
26.09.2016 17:24:56
Michael
Hi,
teste mal:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim WS1 As Worksheet, WS2 As Worksheet
Dim Zeile As Long
If Target.CountLarge > 1 Then Exit Sub
' Stop
If Target.Column = 11 And Target.Row >= 12 And Target.Row 
Schöne Grüße,
Michael

123 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige