Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Fehler beim Kompilieren - Prozedur zu groß

Fehler beim Kompilieren - Prozedur zu groß
07.04.2018 15:10:46
Claus
Hallo,
ich habe da ein kleines Problem beim Kompilieren. So wie es aussieht ist die von mir geschriebene Prozedur zu groß.
Anbei habe ich ein Zip-File mit der Prozedur. So wie sie dort geschrieben ist, fkt sie gut. Allerdings muss ich diese "Programierung" noch eitere 70 mal duplizieren -und das verursacht den oben genannten Fehler.
Könnt ihr mir bitte helfen die Programierung so umzuschreiben das ich sie für min. 70 Startnummern (Zeilen) verwenden kann.
https://www.herber.de/bbs/user/120914.zip
Danke
Claus
Anzeige

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehler beim Kompilieren - Prozedur zu groß
07.04.2018 15:16:03
Hajo_Zi
Hallo Claus,
warum keine Excel Datei? Warum Zip?

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
AW: Fehler beim Kompilieren - Prozedur zu groß
07.04.2018 15:24:29
Claus
Hallo Hajo,
dachte, aufgrund verschiedener Beiträge (Archiv), Anhänge wären im Zip-Format gewünscht.
Ohne Zip ist es vielleicht zu groß?
Gruß
Claus
Anzeige
AW: Fehler beim Kompilieren - Prozedur zu groß
07.04.2018 15:34:20
Claus
Hallo Hajo,
anbei meine Programierung:
Sub RueberSAM()
'Daten von AB_SAM in DatenSAM
Application.ScreenUpdating = False
Dim i As Integer
For i = 1 To 100
'Start Nummer 1
'WP1
If Sheets("DatenSAM").Range("A" & i) = Sheets("Arbeitsblatt_SAM").Range("A7") Then _
Sheets("DatenSAM").Range("GP" & i) = Sheets("Arbeitsblatt_SAM").Range("W5")
If Sheets("DatenSAM").Range("A" & i) = Sheets("Arbeitsblatt_SAM").Range("A7") Then _
Sheets("DatenSAM").Range("GQ" & i) = Sheets("Arbeitsblatt_SAM").Range("W7")
If Sheets("DatenSAM").Range("A" & i) = Sheets("Arbeitsblatt_SAM").Range("A7") Then _
Sheets("DatenSAM").Range("GR" & i) = Sheets("Arbeitsblatt_SAM").Range("X7")
If Sheets("DatenSAM").Range("A" & i) = Sheets("Arbeitsblatt_SAM").Range("A7") Then _
Sheets("DatenSAM").Range("GS" & i) = Sheets("Arbeitsblatt_SAM").Range("Y7")
If Sheets("DatenSAM").Range("A" & i) = Sheets("Arbeitsblatt_SAM").Range("A7") Then _
Sheets("DatenSAM").Range("GT" & i) = Sheets("Arbeitsblatt_SAM").Range("Z7")
If Sheets("DatenSAM").Range("A" & i) = Sheets("Arbeitsblatt_SAM").Range("A7") Then _
Sheets("DatenSAM").Range("GU" & i) = Sheets("Arbeitsblatt_SAM").Range("E7")
End Sub
Diesen Block habe ich noch weitere 11 mal geschrieben. Somit habe ich für eine Startnummer 12 DatenBlöcke. Bis hierhin geht auch alles ohne Probleme.
Ich brauche diese 12 DatenBlöcke jedoch für min. 70 weitere Startnummern.
Und das verursacht besagte Probleme.
Kannst du helfen?
Gruß
Claus
Anzeige
AW: Fehler beim Kompilieren - Prozedur zu groß
07.04.2018 15:42:33
Zwenn
Hallo Claus,
Du verwendest die If Then Zeile für jede einzelne Zeile Code. Das ist nicht notwendig. Es ist doch immer die gleiche Bedingung, die erfüllt sein soll. Also brauchst Du die ganze If Sache nur ein einziges mal. Weiterhion hast Du eine For-Schleife eröffnet, die 100 mal durchlaufen soll. Sie läuft aber nur einmal, denn Du hast das schließende Next i vergessen.
Ich weiß nicht, ob es dass schon ist, was Du suchst, aber so wird Dein Code nun 100 mal durchlaufen und zählt dabei für i von 1 im ersten Durchlauf bis 100 im letzten Durchlauf. Vielleicht könnte man auch die restlichen Zeilen noch vereinfachen bzw. mehr zusammenfassen. Aber das habe ich jetzt nicht genauer untersucht:

Sub RueberSAM()
'Daten von AB_SAM in DatenSAM
Dim i As Integer
Application.ScreenUpdating = False
For i = 1 To 100
'StNr1
If Sheets("DatenSAM").Range("A" & i) = Sheets("Arbeitsblatt_SAM").Range("A7") Then
'WP1
Sheets("DatenSAM").Range("GP" & i) = Sheets("Arbeitsblatt_SAM").Range("W5")
Sheets("DatenSAM").Range("GQ" & i) = Sheets("Arbeitsblatt_SAM").Range("W7")
Sheets("DatenSAM").Range("GR" & i) = Sheets("Arbeitsblatt_SAM").Range("X7")
Sheets("DatenSAM").Range("GS" & i) = Sheets("Arbeitsblatt_SAM").Range("Y7")
Sheets("DatenSAM").Range("GT" & i) = Sheets("Arbeitsblatt_SAM").Range("Z7")
Sheets("DatenSAM").Range("GU" & i) = Sheets("Arbeitsblatt_SAM").Range("E7")
'WP2
Sheets("DatenSAM").Range("GV" & i) = Sheets("Arbeitsblatt_SAM").Range("AA5")
Sheets("DatenSAM").Range("GW" & i) = Sheets("Arbeitsblatt_SAM").Range("AA7")
Sheets("DatenSAM").Range("GX" & i) = Sheets("Arbeitsblatt_SAM").Range("AB7")
Sheets("DatenSAM").Range("GY" & i) = Sheets("Arbeitsblatt_SAM").Range("AC7")
Sheets("DatenSAM").Range("GZ" & i) = Sheets("Arbeitsblatt_SAM").Range("AD7")
Sheets("DatenSAM").Range("HA" & i) = Sheets("Arbeitsblatt_SAM").Range("F7")
'WP3
Sheets("DatenSAM").Range("HB" & i) = Sheets("Arbeitsblatt_SAM").Range("AE5")
Sheets("DatenSAM").Range("HC" & i) = Sheets("Arbeitsblatt_SAM").Range("AE7")
Sheets("DatenSAM").Range("HD" & i) = Sheets("Arbeitsblatt_SAM").Range("AF7")
Sheets("DatenSAM").Range("HE" & i) = Sheets("Arbeitsblatt_SAM").Range("AG7")
Sheets("DatenSAM").Range("HF" & i) = Sheets("Arbeitsblatt_SAM").Range("AH7")
Sheets("DatenSAM").Range("HG" & i) = Sheets("Arbeitsblatt_SAM").Range("G7")
'WP4
Sheets("DatenSAM").Range("HH" & i) = Sheets("Arbeitsblatt_SAM").Range("AI5")
Sheets("DatenSAM").Range("HI" & i) = Sheets("Arbeitsblatt_SAM").Range("AI7")
Sheets("DatenSAM").Range("HJ" & i) = Sheets("Arbeitsblatt_SAM").Range("AJ7")
Sheets("DatenSAM").Range("HK" & i) = Sheets("Arbeitsblatt_SAM").Range("AK7")
Sheets("DatenSAM").Range("HL" & i) = Sheets("Arbeitsblatt_SAM").Range("AL7")
Sheets("DatenSAM").Range("HM" & i) = Sheets("Arbeitsblatt_SAM").Range("H7")
'WP5
Sheets("DatenSAM").Range("HN" & i) = Sheets("Arbeitsblatt_SAM").Range("AM5")
Sheets("DatenSAM").Range("HO" & i) = Sheets("Arbeitsblatt_SAM").Range("AM7")
Sheets("DatenSAM").Range("HP" & i) = Sheets("Arbeitsblatt_SAM").Range("AN7")
Sheets("DatenSAM").Range("HQ" & i) = Sheets("Arbeitsblatt_SAM").Range("AO7")
Sheets("DatenSAM").Range("HR" & i) = Sheets("Arbeitsblatt_SAM").Range("AP7")
Sheets("DatenSAM").Range("HS" & i) = Sheets("Arbeitsblatt_SAM").Range("I7")
'WP6
Sheets("DatenSAM").Range("HT" & i) = Sheets("Arbeitsblatt_SAM").Range("AQ5")
Sheets("DatenSAM").Range("HU" & i) = Sheets("Arbeitsblatt_SAM").Range("AQ7")
Sheets("DatenSAM").Range("HV" & i) = Sheets("Arbeitsblatt_SAM").Range("AR7")
Sheets("DatenSAM").Range("HW" & i) = Sheets("Arbeitsblatt_SAM").Range("AS7")
Sheets("DatenSAM").Range("HX" & i) = Sheets("Arbeitsblatt_SAM").Range("AT7")
Sheets("DatenSAM").Range("HY" & i) = Sheets("Arbeitsblatt_SAM").Range("J7")
'WP7
Sheets("DatenSAM").Range("HZ" & i) = Sheets("Arbeitsblatt_SAM").Range("AU5")
Sheets("DatenSAM").Range("IA" & i) = Sheets("Arbeitsblatt_SAM").Range("AU7")
Sheets("DatenSAM").Range("IB" & i) = Sheets("Arbeitsblatt_SAM").Range("AV7")
Sheets("DatenSAM").Range("IC" & i) = Sheets("Arbeitsblatt_SAM").Range("AW7")
Sheets("DatenSAM").Range("ID" & i) = Sheets("Arbeitsblatt_SAM").Range("AX7")
Sheets("DatenSAM").Range("IE" & i) = Sheets("Arbeitsblatt_SAM").Range("K7")
'WP8
Sheets("DatenSAM").Range("IF" & i) = Sheets("Arbeitsblatt_SAM").Range("AY5")
Sheets("DatenSAM").Range("IG" & i) = Sheets("Arbeitsblatt_SAM").Range("AY7")
Sheets("DatenSAM").Range("IH" & i) = Sheets("Arbeitsblatt_SAM").Range("AZ7")
Sheets("DatenSAM").Range("II" & i) = Sheets("Arbeitsblatt_SAM").Range("BA7")
Sheets("DatenSAM").Range("IJ" & i) = Sheets("Arbeitsblatt_SAM").Range("BB7")
Sheets("DatenSAM").Range("IK" & i) = Sheets("Arbeitsblatt_SAM").Range("L7")
'SZ9
Sheets("DatenSAM").Range("IL" & i) = Sheets("Arbeitsblatt_SAM").Range("BC5")
Sheets("DatenSAM").Range("IM" & i) = Sheets("Arbeitsblatt_SAM").Range("BC7")
Sheets("DatenSAM").Range("IN" & i) = Sheets("Arbeitsblatt_SAM").Range("BD7")
Sheets("DatenSAM").Range("IO" & i) = Sheets("Arbeitsblatt_SAM").Range("BE7")
Sheets("DatenSAM").Range("IP" & i) = Sheets("Arbeitsblatt_SAM").Range("BF7")
Sheets("DatenSAM").Range("IQ" & i) = Sheets("Arbeitsblatt_SAM").Range("M7")
'SZ10
Sheets("DatenSAM").Range("IR" & i) = Sheets("Arbeitsblatt_SAM").Range("BG5")
Sheets("DatenSAM").Range("IS" & i) = Sheets("Arbeitsblatt_SAM").Range("BG7")
Sheets("DatenSAM").Range("IT" & i) = Sheets("Arbeitsblatt_SAM").Range("BH7")
Sheets("DatenSAM").Range("IU" & i) = Sheets("Arbeitsblatt_SAM").Range("BI7")
Sheets("DatenSAM").Range("IV" & i) = Sheets("Arbeitsblatt_SAM").Range("BJ7")
Sheets("DatenSAM").Range("IW" & i) = Sheets("Arbeitsblatt_SAM").Range("N7")
'SZ11
Sheets("DatenSAM").Range("IX" & i) = Sheets("Arbeitsblatt_SAM").Range("BK5")
Sheets("DatenSAM").Range("IY" & i) = Sheets("Arbeitsblatt_SAM").Range("BK7")
Sheets("DatenSAM").Range("IZ" & i) = Sheets("Arbeitsblatt_SAM").Range("BL7")
Sheets("DatenSAM").Range("JA" & i) = Sheets("Arbeitsblatt_SAM").Range("BM7")
Sheets("DatenSAM").Range("JB" & i) = Sheets("Arbeitsblatt_SAM").Range("BN7")
Sheets("DatenSAM").Range("JC" & i) = Sheets("Arbeitsblatt_SAM").Range("O7")
'SZ12
Sheets("DatenSAM").Range("JD" & i) = Sheets("Arbeitsblatt_SAM").Range("BO5")
Sheets("DatenSAM").Range("JE" & i) = Sheets("Arbeitsblatt_SAM").Range("BO7")
Sheets("DatenSAM").Range("JF" & i) = Sheets("Arbeitsblatt_SAM").Range("BP7")
Sheets("DatenSAM").Range("JG" & i) = Sheets("Arbeitsblatt_SAM").Range("BQ7")
Sheets("DatenSAM").Range("JH" & i) = Sheets("Arbeitsblatt_SAM").Range("BR7")
Sheets("DatenSAM").Range("JI" & i) = Sheets("Arbeitsblatt_SAM").Range("P7")
'SP
Sheets("DatenSAM").Range("JJ" & i) = Sheets("Arbeitsblatt_SAM").Range("BS5")
Sheets("DatenSAM").Range("JK" & i) = Sheets("Arbeitsblatt_SAM").Range("BS7")
Sheets("DatenSAM").Range("JL" & i) = Sheets("Arbeitsblatt_SAM").Range("BT7")
Sheets("DatenSAM").Range("JM" & i) = Sheets("Arbeitsblatt_SAM").Range("Q7")
'BK
Sheets("DatenSAM").Range("JN" & i) = Sheets("Arbeitsblatt_SAM").Range("BU7")
Sheets("DatenSAM").Range("JO" & i) = Sheets("Arbeitsblatt_SAM").Range("BV7")
Sheets("DatenSAM").Range("JP" & i) = Sheets("Arbeitsblatt_SAM").Range("BW7")
Sheets("DatenSAM").Range("JQ" & i) = Sheets("Arbeitsblatt_SAM").Range("R7")
'Gesamt Pkt
Sheets("DatenSAM").Range("JR" & i) = Sheets("Arbeitsblatt_SAM").Range("T7")
End If
Next i
Application.ScreenUpdating = True
End Sub
Viele Grüße,
Zwenn
Anzeige
AW: Fehler beim Kompilieren - Prozedur zu groß
07.04.2018 15:59:17
Claus
Hi Zwenn,
danke für die Hilfe - aber es ist noch nicht gelöst mein Problem. Ich habe deinen Vorschlag übernommen und es auf 10 DatenBlöcke übertragen und die Fehler Meldung (Prozedur zu groß) ist immer noch da.
Gruß
Claus
AW: Fehler beim Kompilieren - Prozedur zu groß
07.04.2018 16:04:24
Zwenn
Hallo Claus,
dann lade mal bitte eine Beispielmappe hoch. So ist nicht nachzuvollziehen, was Du möchtest, bzw, was denn eine Startnummer ist. Man kann um den bestehenden Code natürlich noch eine weitere Schleife legen. Das wäre jetzt aber Gestocher im Nebel.
Du musst kein ZIP hochladen und bitte auch nicht nur den Inhalt eines Moduls. Lade eine XLSM Datei hoch. Aus der sollte hervorgehen, was die Ausgangssituation ist und wie Du das Ergebnis haben willst. In Deinem Fall also z.B. eine Datenbasis und das Ergebnis für 3 Startnummern. Dazu Deinen bisherigen Code in der Arbeitsmappe belassen.
Viele Grüße,
Zwenn
Anzeige
AW: Fehler beim Kompilieren - Prozedur zu groß
07.04.2018 16:49:00
Claus
Hi Zwenn,
ich habe die Datei auf ein min. beschränkt, aber sie ist immer noch zu groß zum hochladen. (1980KB statt erlaubten 300KB)
-mnpf-
LG
Claus
AW: Fehler beim Kompilieren - Prozedur zu groß
07.04.2018 17:02:02
Zwenn
Ok,
schick mir das Teil mal zu. Aber ich kann nix versprechen.
zwenn_glueckspilz@gmx.de
Gruß,
Zwenn
AW: Fehler beim Kompilieren - Prozedur zu groß
07.04.2018 17:12:36
Luschi
Hallo Claus,
mein Code sieht so aus:

Sub RueberSAM()
'Daten von AB_SAM in DatenSAM
Dim ws As Worksheet
Dim i As Integer, j As Integer, _
spS As String, spArr As Variant, spZ As Integer
Dim x1 As String, x2 As String
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
spS = "GP~W5,GQ~W7,GR~X7,GS~Y7,GT~Z7,GU~E7," & _
"GV~AA5,GW~AA7,CW~AB7,GY~AC7,GZ~AD7,HA~F7," & _
"HB,HC,HD,HE,HF,HG," & _
"HH,HI,HJ,HK,HL,HM," & "HN,HO,HP,HQ,HR,HS," & "HT,HU,HV,HW,HX,HY," & _
"HZ,IA,IB,IC,ID,IE," & "IF,IG,IH,II,IJ,IK," & "IL,IM,IN,IO,IP,IQ," & _
"IR,IS,IT,IU,IV,IW," & "IX,IY,IZ,JA,JB,JC," & "JD,JE,JF,JG,JH,JI," & _
"JJ,JK,JL,JM,JN,JO," & "IF,IG,IH,II,IJ,IK," & "JL,JM,JN,JO,JP,JQ," & _
"JR"
spArr = Split(spS, ",", -1, vbTextCompare)
With Sheets("DatenSAM")
If Sheets("DatenSAM").Range("A1").Value = Sheets("Arbeitsblatt_SAM").Range("A7") Then
For spZ = LBound(spArr) To UBound(spArr)
x1 = Split(spArr(spZ), "~", -1, vbTextCompare)(0)
x2 = Split(spArr(spZ), "~", -1, vbTextCompare)(1)
.Range(x1 & "1:" & x1 & 100).Value = Sheets("Arbeitsblatt_SAM").Range(x2).Value
Next spZ
End If
End With
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
End Sub
Du mußt nur die Variable 'spS' vervollständigen:
statt: "HB,HC,HD,HE,HF,HG,"
so:    "HB~AE5,HC~AE7,HD~AF7,HE~AG7,HF~AH7,HG~G7," usw.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Fehler beim Kompilieren - Prozedur zu groß
07.04.2018 17:22:51
Gerd
Moin,
bezweifle allerdings, dass der Code von Zwenn zu groß ist.


Sub RueberSAM()
'Daten von AB_SAM in DatenSAM
Dim i As Long, offs As Long
Dim Q As Worksheet, Z As Worksheet
Set Q = Sheets("DatenSAM"): Set Z = Sheets("Arbeitsblatt_SAM")
Application.ScreenUpdating = False
For i = 1 To 100
'StNr1
If Z.Cells(i, 1) = Q.Range("A7") Then
'WP1- 'SZ12
For offs = 0 To 11
Z.Cells(i, 198).Offset(0, (offs * 6)) = Q.Range("W5").Offset(0, offs * 6)
Z.Cells(i, 199).Resize(1, 4).Offset(0, offs * 6) = Q.Range("W7:Z7").Offset(0, offs * 6)
Z.Cells(i, 203).Offset(0, offs * 6) = Q.Range("E7").Offset(0, offs * 6)
Next
'SP
Z.Range("JJ" & i) = Q.Range("BS5")
Z.Range("JK" & i) = Q.Range("BS7")
Z.Range("JL" & i) = Q.Range("BT7")
Z.Range("JM" & i) = Q.Range("Q7")
'BK
Z.Range("JN" & i) = Q.Range("BU7")
Z.Range("JO" & i) = Q.Range("BV7")
Z.Range("JP" & i) = Q.Range("BW7")
Z.Range("JQ" & i) = Q.Range("R7")
'Gesamt Pkt
Z.Range("JR" & i) = Q.Range("T7")
End If
Next i
Set Q = Nothing: Set Z = Nothing
Application.ScreenUpdating = True
End Sub

Gruß Gerd
Anzeige
AW: Fehler beim Kompilieren - Prozedur zu groß
07.04.2018 17:41:28
Claus
Hallo Luschi,
danke für deine Antwort - aber leider reichen meine Kenntnisse in VBA nicht aus um es umzusetzen.
Schade - aber Danke der Mühe.
LG Claus
AW: Fehler beim Kompilieren - Prozedur zu groß
07.04.2018 17:43:41
Claus
Hallo Gerd,
deine Idee habe ich genommen und wie folgt eingesetzt.
Sub RueberSAM()
'Daten von AB_SAM in DatenSAM
Dim i As Long, offs As Long
Dim Q As Worksheet, Z As Worksheet
Set Q = Sheets("DatenSAM"): Set Z = Sheets("Arbeitsblatt_SAM")
Application.ScreenUpdating = False
For i = 1 To 100
'StNr1
If Z.Cells(i, 1) = Q.Range("A7") Then
'WP1- 'SZ12
For offs = 0 To 11
Z.Cells(i, 198).Offset(0, (offs * 6)) = Q.Range("W5").Offset(0, offs * 6)
Z.Cells(i, 199).Resize(1, 4).Offset(0, offs * 6) = Q.Range("W7:Z7").Offset(0, offs * 6)
Z.Cells(i, 203).Offset(0, offs * 6) = Q.Range("E7").Offset(0, offs * 6)
Next
'SP
Z.Range("JJ" & i) = Q.Range("BS5")
Z.Range("JK" & i) = Q.Range("BS7")
Z.Range("JL" & i) = Q.Range("BT7")
Z.Range("JM" & i) = Q.Range("Q7")
'BK
Z.Range("JN" & i) = Q.Range("BU7")
Z.Range("JO" & i) = Q.Range("BV7")
Z.Range("JP" & i) = Q.Range("BW7")
Z.Range("JQ" & i) = Q.Range("R7")
'Gesamt Pkt
Z.Range("JR" & i) = Q.Range("T7")
End If
'StNr2
If Z.Cells(i, 1) = Q.Range("A8") Then
'WP1- 'SZ12
For offs = 0 To 11
Z.Cells(i, 198).Offset(0, (offs * 6)) = Q.Range("W5").Offset(0, offs * 6)
Z.Cells(i, 199).Resize(1, 4).Offset(0, offs * 6) = Q.Range("W8:Z8").Offset(0, offs * 6)
Z.Cells(i, 203).Offset(0, offs * 6) = Q.Range("E8").Offset(0, offs * 6)
Next
'SP
Z.Range("JJ" & i) = Q.Range("BS5")
Z.Range("JK" & i) = Q.Range("BS8")
Z.Range("JL" & i) = Q.Range("BT8")
Z.Range("JM" & i) = Q.Range("Q8")
'BK
Z.Range("JN" & i) = Q.Range("BU8")
Z.Range("JO" & i) = Q.Range("BV8")
Z.Range("JP" & i) = Q.Range("BW8")
Z.Range("JQ" & i) = Q.Range("R8")
'Gesamt Pkt
Z.Range("JR" & i) = Q.Range("T8")
End If
'StNr3
If Z.Cells(i, 1) = Q.Range("A9") Then
'WP1- 'SZ12
For offs = 0 To 11
Z.Cells(i, 198).Offset(0, (offs * 6)) = Q.Range("W5").Offset(0, offs * 6)
Z.Cells(i, 199).Resize(1, 4).Offset(0, offs * 6) = Q.Range("W9:Z9").Offset(0, offs * 6)
Z.Cells(i, 203).Offset(0, offs * 6) = Q.Range("E9").Offset(0, offs * 6)
Next
'SP
Z.Range("JJ" & i) = Q.Range("BS5")
Z.Range("JK" & i) = Q.Range("BS9")
Z.Range("JL" & i) = Q.Range("BT9")
Z.Range("JM" & i) = Q.Range("Q9")
'BK
Z.Range("JN" & i) = Q.Range("BU9")
Z.Range("JO" & i) = Q.Range("BV9")
Z.Range("JP" & i) = Q.Range("BW9")
Z.Range("JQ" & i) = Q.Range("R9")
'Gesamt Pkt
Z.Range("JR" & i) = Q.Range("T9")
End If
'StNr4
If Z.Cells(i, 1) = Q.Range("A10") Then
'WP1- 'SZ12
For offs = 0 To 11
Z.Cells(i, 198).Offset(0, (offs * 6)) = Q.Range("W5").Offset(0, offs * 6)
Z.Cells(i, 199).Resize(1, 4).Offset(0, offs * 6) = Q.Range("W10:Z10").Offset(0, offs * 6)
Z.Cells(i, 203).Offset(0, offs * 6) = Q.Range("E10").Offset(0, offs * 6)
Next
'SP
Z.Range("JJ" & i) = Q.Range("BS5")
Z.Range("JK" & i) = Q.Range("BS10")
Z.Range("JL" & i) = Q.Range("BT10")
Z.Range("JM" & i) = Q.Range("Q10")
'BK
Z.Range("JN" & i) = Q.Range("BU10")
Z.Range("JO" & i) = Q.Range("BV10")
Z.Range("JP" & i) = Q.Range("BW10")
Z.Range("JQ" & i) = Q.Range("R10")
'Gesamt Pkt
Z.Range("JR" & i) = Q.Range("T10")
End If
'StNr5
If Z.Cells(i, 1) = Q.Range("A11") Then
'WP1- 'SZ12
For offs = 0 To 11
Z.Cells(i, 198).Offset(0, (offs * 6)) = Q.Range("W5").Offset(0, offs * 6)
Z.Cells(i, 199).Resize(1, 4).Offset(0, offs * 6) = Q.Range("W11:Z11").Offset(0, offs * 6)
Z.Cells(i, 203).Offset(0, offs * 6) = Q.Range("E11").Offset(0, offs * 6)
Next
'SP
Z.Range("JJ" & i) = Q.Range("BS5")
Z.Range("JK" & i) = Q.Range("BS11")
Z.Range("JL" & i) = Q.Range("BT11")
Z.Range("JM" & i) = Q.Range("Q11")
'BK
Z.Range("JN" & i) = Q.Range("BU11")
Z.Range("JO" & i) = Q.Range("BV11")
Z.Range("JP" & i) = Q.Range("BW11")
Z.Range("JQ" & i) = Q.Range("R11")
'Gesamt Pkt
Z.Range("JR" & i) = Q.Range("T11")
End If
'StNr6
If Z.Cells(i, 1) = Q.Range("A12") Then
'WP1- 'SZ12
For offs = 0 To 11
Z.Cells(i, 198).Offset(0, (offs * 6)) = Q.Range("W5").Offset(0, offs * 6)
Z.Cells(i, 199).Resize(1, 4).Offset(0, offs * 6) = Q.Range("W12:Z12").Offset(0, offs * 6)
Z.Cells(i, 203).Offset(0, offs * 6) = Q.Range("E12").Offset(0, offs * 6)
Next
'SP
Z.Range("JJ" & i) = Q.Range("BS5")
Z.Range("JK" & i) = Q.Range("BS12")
Z.Range("JL" & i) = Q.Range("BT12")
Z.Range("JM" & i) = Q.Range("Q12")
'BK
Z.Range("JN" & i) = Q.Range("BU12")
Z.Range("JO" & i) = Q.Range("BV12")
Z.Range("JP" & i) = Q.Range("BW12")
Z.Range("JQ" & i) = Q.Range("R12")
'Gesamt Pkt
Z.Range("JR" & i) = Q.Range("T12")
End If
'StNr7
If Z.Cells(i, 1) = Q.Range("A13") Then
'WP1- 'SZ12
For offs = 0 To 11
Z.Cells(i, 198).Offset(0, (offs * 6)) = Q.Range("W5").Offset(0, offs * 6)
Z.Cells(i, 199).Resize(1, 4).Offset(0, offs * 6) = Q.Range("W13:Z13").Offset(0, offs * 6)
Z.Cells(i, 203).Offset(0, offs * 6) = Q.Range("E13").Offset(0, offs * 6)
Next
'SP
Z.Range("JJ" & i) = Q.Range("BS5")
Z.Range("JK" & i) = Q.Range("BS13")
Z.Range("JL" & i) = Q.Range("BT13")
Z.Range("JM" & i) = Q.Range("Q13")
'BK
Z.Range("JN" & i) = Q.Range("BU13")
Z.Range("JO" & i) = Q.Range("BV13")
Z.Range("JP" & i) = Q.Range("BW13")
Z.Range("JQ" & i) = Q.Range("R13")
'Gesamt Pkt
Z.Range("JR" & i) = Q.Range("T13")
End If
'StNr8
If Z.Cells(i, 1) = Q.Range("A14") Then
'WP1- 'SZ12
For offs = 0 To 11
Z.Cells(i, 198).Offset(0, (offs * 6)) = Q.Range("W5").Offset(0, offs * 6)
Z.Cells(i, 199).Resize(1, 4).Offset(0, offs * 6) = Q.Range("W14:Z14").Offset(0, offs * 6)
Z.Cells(i, 203).Offset(0, offs * 6) = Q.Range("E14").Offset(0, offs * 6)
Next
'SP
Z.Range("JJ" & i) = Q.Range("BS5")
Z.Range("JK" & i) = Q.Range("BS14")
Z.Range("JL" & i) = Q.Range("BT14")
Z.Range("JM" & i) = Q.Range("Q14")
'BK
Z.Range("JN" & i) = Q.Range("BU14")
Z.Range("JO" & i) = Q.Range("BV14")
Z.Range("JP" & i) = Q.Range("BW14")
Z.Range("JQ" & i) = Q.Range("R14")
'Gesamt Pkt
Z.Range("JR" & i) = Q.Range("T14")
End If
'StNr9
If Z.Cells(i, 1) = Q.Range("A15") Then
'WP1- 'SZ12
For offs = 0 To 11
Z.Cells(i, 198).Offset(0, (offs * 6)) = Q.Range("W5").Offset(0, offs * 6)
Z.Cells(i, 199).Resize(1, 4).Offset(0, offs * 6) = Q.Range("W15:Z15").Offset(0, offs * 6)
Z.Cells(i, 203).Offset(0, offs * 6) = Q.Range("E15").Offset(0, offs * 6)
Next
'SP
Z.Range("JJ" & i) = Q.Range("BS5")
Z.Range("JK" & i) = Q.Range("BS15")
Z.Range("JL" & i) = Q.Range("BT15")
Z.Range("JM" & i) = Q.Range("Q15")
'BK
Z.Range("JN" & i) = Q.Range("BU15")
Z.Range("JO" & i) = Q.Range("BV15")
Z.Range("JP" & i) = Q.Range("BW15")
Z.Range("JQ" & i) = Q.Range("R15")
'Gesamt Pkt
Z.Range("JR" & i) = Q.Range("T15")
End If
'StNr10
If Z.Cells(i, 1) = Q.Range("A16") Then
'WP1- 'SZ12
For offs = 0 To 11
Z.Cells(i, 198).Offset(0, (offs * 6)) = Q.Range("W5").Offset(0, offs * 6)
Z.Cells(i, 199).Resize(1, 4).Offset(0, offs * 6) = Q.Range("W16:Z16").Offset(0, offs * 6)
Z.Cells(i, 203).Offset(0, offs * 6) = Q.Range("E16").Offset(0, offs * 6)
Next
'SP
Z.Range("JJ" & i) = Q.Range("BS5")
Z.Range("JK" & i) = Q.Range("BS16")
Z.Range("JL" & i) = Q.Range("BT16")
Z.Range("JM" & i) = Q.Range("Q16")
'BK
Z.Range("JN" & i) = Q.Range("BU16")
Z.Range("JO" & i) = Q.Range("BV16")
Z.Range("JP" & i) = Q.Range("BW16")
Z.Range("JQ" & i) = Q.Range("R16")
'Gesamt Pkt
Z.Range("JR" & i) = Q.Range("T16")
End If
Next i
Set Q = Nothing: Set Z = Nothing
Application.ScreenUpdating = True
End Sub

Aber es funktioniert nicht - wahrscheinlich habe ich beim Transfer einen Fehler gemacht.
LG
Claus
Anzeige
AW: Fehler beim Kompilieren - Prozedur zu groß
07.04.2018 17:57:58
Zwenn
Hallo zusammen,
das Problem war, dass Claus den ganzen Codeblock 70x untereinander kopieren wollte. Ich habe ihm das nun auf die Schnelle so umgebaut:
(Wobei i vermutlich eher dynamisch gehalten werden muss. Das ganze Projekt besteht aus mehreren, teilweise eher komplexen Tabellen und relativ viel Code.)

Sub RueberSAM()
'Daten von AB_SAM in DatenSAM
Dim j As Integer
Dim i As Integer
Application.ScreenUpdating = False
For j = 7 To 76
For i = 1 To 100
'StartNr1
If Sheets("DatenSAM").Range("A" & i) = Sheets("Arbeitsblatt_SAM").Range("A" & j)  _
Then
'WP1
Sheets("DatenSAM").Range("GP" & i) = Sheets("Arbeitsblatt_SAM").Range("W5")
Sheets("DatenSAM").Range("GQ" & i) = Sheets("Arbeitsblatt_SAM").Range("W" & j)
Sheets("DatenSAM").Range("GR" & i) = Sheets("Arbeitsblatt_SAM").Range("X" & j)
Sheets("DatenSAM").Range("GS" & i) = Sheets("Arbeitsblatt_SAM").Range("Y" & j)
Sheets("DatenSAM").Range("GT" & i) = Sheets("Arbeitsblatt_SAM").Range("Z" & j)
Sheets("DatenSAM").Range("GU" & i) = Sheets("Arbeitsblatt_SAM").Range("E" & j)
'WP2
Sheets("DatenSAM").Range("GV" & i) = Sheets("Arbeitsblatt_SAM").Range("AA5")
Sheets("DatenSAM").Range("GW" & i) = Sheets("Arbeitsblatt_SAM").Range("AA" & j)
Sheets("DatenSAM").Range("GX" & i) = Sheets("Arbeitsblatt_SAM").Range("AB" & j)
Sheets("DatenSAM").Range("GY" & i) = Sheets("Arbeitsblatt_SAM").Range("AC" & j)
Sheets("DatenSAM").Range("GZ" & i) = Sheets("Arbeitsblatt_SAM").Range("AD" & j)
Sheets("DatenSAM").Range("HA" & i) = Sheets("Arbeitsblatt_SAM").Range("F" & j)
'WP3
Sheets("DatenSAM").Range("HB" & i) = Sheets("Arbeitsblatt_SAM").Range("AE5")
Sheets("DatenSAM").Range("HC" & i) = Sheets("Arbeitsblatt_SAM").Range("AE" & j)
Sheets("DatenSAM").Range("HD" & i) = Sheets("Arbeitsblatt_SAM").Range("AF" & j)
Sheets("DatenSAM").Range("HE" & i) = Sheets("Arbeitsblatt_SAM").Range("AG" & j)
Sheets("DatenSAM").Range("HF" & i) = Sheets("Arbeitsblatt_SAM").Range("AH" & j)
Sheets("DatenSAM").Range("HG" & i) = Sheets("Arbeitsblatt_SAM").Range("G" & j)
'WP4
Sheets("DatenSAM").Range("HH" & i) = Sheets("Arbeitsblatt_SAM").Range("AI5")
Sheets("DatenSAM").Range("HI" & i) = Sheets("Arbeitsblatt_SAM").Range("AI" & j)
Sheets("DatenSAM").Range("HJ" & i) = Sheets("Arbeitsblatt_SAM").Range("AJ" & j)
Sheets("DatenSAM").Range("HK" & i) = Sheets("Arbeitsblatt_SAM").Range("AK" & j)
Sheets("DatenSAM").Range("HL" & i) = Sheets("Arbeitsblatt_SAM").Range("AL" & j)
Sheets("DatenSAM").Range("HM" & i) = Sheets("Arbeitsblatt_SAM").Range("H" & j)
'WP5
Sheets("DatenSAM").Range("HN" & i) = Sheets("Arbeitsblatt_SAM").Range("AM5")
Sheets("DatenSAM").Range("HO" & i) = Sheets("Arbeitsblatt_SAM").Range("AM" & j)
Sheets("DatenSAM").Range("HP" & i) = Sheets("Arbeitsblatt_SAM").Range("AN" & j)
Sheets("DatenSAM").Range("HQ" & i) = Sheets("Arbeitsblatt_SAM").Range("AO" & j)
Sheets("DatenSAM").Range("HR" & i) = Sheets("Arbeitsblatt_SAM").Range("AP" & j)
Sheets("DatenSAM").Range("HS" & i) = Sheets("Arbeitsblatt_SAM").Range("I" & j)
'WP6
Sheets("DatenSAM").Range("HT" & i) = Sheets("Arbeitsblatt_SAM").Range("AQ5")
Sheets("DatenSAM").Range("HU" & i) = Sheets("Arbeitsblatt_SAM").Range("AQ" & j)
Sheets("DatenSAM").Range("HV" & i) = Sheets("Arbeitsblatt_SAM").Range("AR" & j)
Sheets("DatenSAM").Range("HW" & i) = Sheets("Arbeitsblatt_SAM").Range("AS" & j)
Sheets("DatenSAM").Range("HX" & i) = Sheets("Arbeitsblatt_SAM").Range("AT" & j)
Sheets("DatenSAM").Range("HY" & i) = Sheets("Arbeitsblatt_SAM").Range("J" & j)
'WP7
Sheets("DatenSAM").Range("HZ" & i) = Sheets("Arbeitsblatt_SAM").Range("AU5")
Sheets("DatenSAM").Range("IA" & i) = Sheets("Arbeitsblatt_SAM").Range("AU" & j)
Sheets("DatenSAM").Range("IB" & i) = Sheets("Arbeitsblatt_SAM").Range("AV" & j)
Sheets("DatenSAM").Range("IC" & i) = Sheets("Arbeitsblatt_SAM").Range("AW" & j)
Sheets("DatenSAM").Range("ID" & i) = Sheets("Arbeitsblatt_SAM").Range("AX" & j)
Sheets("DatenSAM").Range("IE" & i) = Sheets("Arbeitsblatt_SAM").Range("K" & j)
'WP8
Sheets("DatenSAM").Range("IF" & i) = Sheets("Arbeitsblatt_SAM").Range("AY5")
Sheets("DatenSAM").Range("IG" & i) = Sheets("Arbeitsblatt_SAM").Range("AY" & j)
Sheets("DatenSAM").Range("IH" & i) = Sheets("Arbeitsblatt_SAM").Range("AZ" & j)
Sheets("DatenSAM").Range("II" & i) = Sheets("Arbeitsblatt_SAM").Range("BA" & j)
Sheets("DatenSAM").Range("IJ" & i) = Sheets("Arbeitsblatt_SAM").Range("BB" & j)
Sheets("DatenSAM").Range("IK" & i) = Sheets("Arbeitsblatt_SAM").Range("L" & j)
'SZ9
Sheets("DatenSAM").Range("IL" & i) = Sheets("Arbeitsblatt_SAM").Range("BC5")
Sheets("DatenSAM").Range("IM" & i) = Sheets("Arbeitsblatt_SAM").Range("BC" & j)
Sheets("DatenSAM").Range("IN" & i) = Sheets("Arbeitsblatt_SAM").Range("BD" & j)
Sheets("DatenSAM").Range("IO" & i) = Sheets("Arbeitsblatt_SAM").Range("BE" & j)
Sheets("DatenSAM").Range("IP" & i) = Sheets("Arbeitsblatt_SAM").Range("BF" & j)
Sheets("DatenSAM").Range("IQ" & i) = Sheets("Arbeitsblatt_SAM").Range("M" & j)
'SZ10
Sheets("DatenSAM").Range("IR" & i) = Sheets("Arbeitsblatt_SAM").Range("BG5")
Sheets("DatenSAM").Range("IS" & i) = Sheets("Arbeitsblatt_SAM").Range("BG" & j)
Sheets("DatenSAM").Range("IT" & i) = Sheets("Arbeitsblatt_SAM").Range("BH" & j)
Sheets("DatenSAM").Range("IU" & i) = Sheets("Arbeitsblatt_SAM").Range("BI" & j)
Sheets("DatenSAM").Range("IV" & i) = Sheets("Arbeitsblatt_SAM").Range("BJ" & j)
Sheets("DatenSAM").Range("IW" & i) = Sheets("Arbeitsblatt_SAM").Range("N" & j)
'SZ11
Sheets("DatenSAM").Range("IX" & i) = Sheets("Arbeitsblatt_SAM").Range("BK5")
Sheets("DatenSAM").Range("IY" & i) = Sheets("Arbeitsblatt_SAM").Range("BK" & j)
Sheets("DatenSAM").Range("IZ" & i) = Sheets("Arbeitsblatt_SAM").Range("BL" & j)
Sheets("DatenSAM").Range("JA" & i) = Sheets("Arbeitsblatt_SAM").Range("BM" & j)
Sheets("DatenSAM").Range("JB" & i) = Sheets("Arbeitsblatt_SAM").Range("BN" & j)
Sheets("DatenSAM").Range("JC" & i) = Sheets("Arbeitsblatt_SAM").Range("O" & j)
'SZ12
Sheets("DatenSAM").Range("JD" & i) = Sheets("Arbeitsblatt_SAM").Range("BO5")
Sheets("DatenSAM").Range("JE" & i) = Sheets("Arbeitsblatt_SAM").Range("BO" & j)
Sheets("DatenSAM").Range("JF" & i) = Sheets("Arbeitsblatt_SAM").Range("BP" & j)
Sheets("DatenSAM").Range("JG" & i) = Sheets("Arbeitsblatt_SAM").Range("BQ" & j)
Sheets("DatenSAM").Range("JH" & i) = Sheets("Arbeitsblatt_SAM").Range("BR" & j)
Sheets("DatenSAM").Range("JI" & i) = Sheets("Arbeitsblatt_SAM").Range("P" & j)
'SP
Sheets("DatenSAM").Range("JJ" & i) = Sheets("Arbeitsblatt_SAM").Range("BS5")
Sheets("DatenSAM").Range("JK" & i) = Sheets("Arbeitsblatt_SAM").Range("BS" & j)
Sheets("DatenSAM").Range("JL" & i) = Sheets("Arbeitsblatt_SAM").Range("BT" & j)
Sheets("DatenSAM").Range("JM" & i) = Sheets("Arbeitsblatt_SAM").Range("Q" & j)
'BK
Sheets("DatenSAM").Range("JN" & i) = Sheets("Arbeitsblatt_SAM").Range("BU" & j)
Sheets("DatenSAM").Range("JO" & i) = Sheets("Arbeitsblatt_SAM").Range("BV" & j)
Sheets("DatenSAM").Range("JP" & i) = Sheets("Arbeitsblatt_SAM").Range("BW" & j)
Sheets("DatenSAM").Range("JQ" & i) = Sheets("Arbeitsblatt_SAM").Range("R" & j)
'Gesamt Pkt
Sheets("DatenSAM").Range("JR" & i) = Sheets("Arbeitsblatt_SAM").Range("T" & j)
End If
Next i
Next j
Application.ScreenUpdating = True
End Sub
Viele Grüße,
Zwenn
Anzeige
AW: Fehler beim Kompilieren - Prozedur zu groß
07.04.2018 18:12:25
Claus
Hallo Zwenn,
danke danke danke - das ist die Lösung. Es funktioniert !!!! froi
auch vielen Dank an Gerd und Luschi.
Und entschuldigt das ich mein Problem nicht deutlich genug umrissen habe.
LG
Claus
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Fehler beim Kompilieren: Prozedur zu groß in Excel VBA


Schritt-für-Schritt-Anleitung

Wenn Du mit dem Fehler „Prozedur zu groß“ in Excel VBA konfrontiert wirst, kann das frustrierend sein. Dieser Fehler tritt häufig auf, wenn eine Prozedur zu viele Zeilen Code enthält. Hier sind die Schritte, um Deinen VBA-Code zu optimieren:

  1. Reduziere den Code: Überprüfe, ob Du wiederkehrende Blöcke durch Schleifen ersetzen kannst. Anstatt den Code 70 Mal zu kopieren, kannst Du eine Schleife verwenden, um die gleichen Aufgaben für verschiedene Startnummern auszuführen.

  2. Verwende Arrays: Statt mehrere Zeilen für ähnliche Operationen zu haben, kannst Du Daten in Arrays speichern und dann in einer Schleife darauf zugreifen.

  3. Code umstrukturieren: Teile Deinen Code in kleinere, modularisierte Funktionen auf. So bleibt die Hauptprozedur übersichtlich und Du verhinderst die Fehlermeldung.

  4. Beispiel für eine optimierte Prozedur:

    Sub RueberSAM()
       Dim j As Integer
       Dim i As Integer
       Application.ScreenUpdating = False
       For j = 7 To 76
           For i = 1 To 100
               If Sheets("DatenSAM").Range("A" & i) = Sheets("Arbeitsblatt_SAM").Range("A" & j) Then
                   'Hier kommen die Datenzuweisungen
               End If
           Next i
       Next j
       Application.ScreenUpdating = True
    End Sub

Häufige Fehler und Lösungen

  • Fehler: „Prozedur zu groß“
    Lösung: Reduziere den Code, indem Du Schleifen und Arrays verwendest.

  • Fehler: Code wird nicht vollständig ausgeführt
    Lösung: Stelle sicher, dass alle Schleifen korrekt geschlossen sind. Das Fehlen von Next kann dazu führen, dass der Code nicht wie gewünscht funktioniert.


Alternative Methoden

Wenn die oben genannten Strategien nicht helfen, kannst Du folgende Methoden in Betracht ziehen:

  1. Verwendung von Application.Calculate: Wenn Du große Datenmengen verarbeitest, kann das Setzen von Application.Calculation = xlCalculationManual zu Beginn des Codes helfen, die Leistung zu verbessern.

  2. Gleichzeitige Datenverarbeitung: Nutze die Möglichkeit, Daten in einem Schritt zu bearbeiten, anstatt sie einzeln zu adressieren. Dies kann die Effizienz erheblich steigern.


Praktische Beispiele

Hier ist ein Beispiel für eine einfache Optimierung:

Anstatt:

If Sheets("DatenSAM").Range("A" & i) = Sheets("Arbeitsblatt_SAM").Range("A7") Then
    Sheets("DatenSAM").Range("GP" & i) = Sheets("Arbeitsblatt_SAM").Range("W5")
End If

Verwende:

Dim spArr As Variant
spArr = Array("W5", "W7", "X7", "Y7", "Z7") ' Beispiel für Werte
For Each val In spArr
    Sheets("DatenSAM").Range("GP" & i) = Sheets("Arbeitsblatt_SAM").Range(val)
Next

Tipps für Profis

  • Nutze Optionen: Überlege, ob Du Option Explicit am Anfang Deines Moduls hinzufügen möchtest. Dies zwingt Dich dazu, alle Variablen zu deklarieren, was die Fehlersuche erleichtert.

  • Debugging: Verwende die Debugging-Funktionen von Excel VBA (z.B. Debug.Print), um den Verlauf Deiner Variablen zu überwachen, während der Code läuft.

  • Refactoring: Überarbeite und verbessere regelmäßig Deinen Code, um sicherzustellen, dass er effizient bleibt.


FAQ: Häufige Fragen

1. Warum bekomme ich die Fehlermeldung „Prozedur zu groß“?
Diese Fehlermeldung tritt auf, wenn Deine VBA-Prozedur mehr als 64 KByte Code enthält. Dies geschieht oft, wenn Du viele wiederholte Codeabschnitte hast.

2. Wie kann ich den Code optimieren?
Verwende Schleifen und Arrays, um redundante Zeilen zu vermeiden. Teile Deinen Code in kleinere Funktionen auf, um die Lesbarkeit zu erhöhen.

3. Was sind die Vorteile von Application.ScreenUpdating?
Das Deaktivieren von ScreenUpdating während der Ausführung Deines Codes kann die Leistung verbessern, da Excel nicht bei jedem Schritt neu gezeichnet wird.

4. Welches Excel-Version sollte ich verwenden?
Die beschriebenen Techniken sind in Excel 2010 und neueren Versionen anwendbar.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige