Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Prozedur zu groß -> Wie meine Formel verkürzen?

Prozedur zu groß -> Wie meine Formel verkürzen?
01.10.2018 13:00:40
Florian
Guten Tag zusammen!
Ich habe in einem Tabellenblatt eine Eingabemaske zum Anlegen für neue Aufträge und deren Inhalt erstellt.
Die Daten dieser Maske sollen dann beim Klicken auf einen Button in einer anderen Anordnung in einem Anderen Tabellenblatt eingetragen werden, damit man sie später jederzeit wieder aufrufen kann (wie in einer Datenbank).
Das ganze funktionierte auch sehr gut, bis meine Formel zu lang wurde und dann jetzt immer folgende Fehlermeldung kommt: "Fehler beim Kompilieren: Prozedur zu groß."
Vielleicht kann mir jemand helfen, die Formel so zu "kürzen", dass ich trotzdem die Daten von ca. 1300 Feldern verarbeiten kann?!
Hier meine Formel:
Private Sub Button_Auftrag_Speichern_Click()
'Anzahl an bereits angelegten Aufträgen feststellen
Dim add As Integer
add = Sheets("Verweise").Range("A2").Value
Sheets("Aufträge").Cells(add, 1).Value = Sheets("Auftragsanlage").Range("G2")
'Auftragspositionen übertragen
'Pos 1
'Referenz
Sheets("Aufträge").Cells(add, 13).Value = Sheets("Auftragsanlage").Range("C13")
'Menge
Sheets("Aufträge").Cells(add, 14).Value = Sheets("Auftragsanlage").Range("H13")
'Material
Sheets("Aufträge").Cells(add, 15).Value = Sheets("Auftragsanlage").Range("J13")
'Konfektionierung
Sheets("Aufträge").Cells(add, 16).Value = Sheets("Auftragsanlage").Range("M13")
'Haube
'Länge
Sheets("Aufträge").Cells(add, 17).Value = Sheets("Auftragsanlage").Range("Q13")
'Breite
Sheets("Aufträge").Cells(add, 18).Value = Sheets("Auftragsanlage").Range("R13")
'Höhe
Sheets("Aufträge").Cells(add, 19).Value = Sheets("Auftragsanlage").Range("S13")
'Boden
'Länge
Sheets("Aufträge").Cells(add, 20).Value = Sheets("Auftragsanlage").Range("T13")
'Breite
Sheets("Aufträge").Cells(add, 21).Value = Sheets("Auftragsanlage").Range("U13")
'QM
Sheets("Aufträge").Cells(add, 22).Value = Sheets("Auftragsanlage").Range("V13")
'Preis
Sheets("Aufträge").Cells(add, 23).Value = Sheets("Auftragsanlage").Range("Y13")
'Summe
Sheets("Aufträge").Cells(add, 24).Value = Sheets("Auftragsanlage").Range("AB13")
'Haubenmitarbeiter
Sheets("Aufträge").Cells(add, 25).Value = Sheets("Auftragsanlage").Range("AE13")
'Pos 2
'Referenz
Sheets("Aufträge").Cells(add, 26).Value = Sheets("Auftragsanlage").Range("C14")
'Menge
Sheets("Aufträge").Cells(add, 27).Value = Sheets("Auftragsanlage").Range("H14")
'Material
Sheets("Aufträge").Cells(add, 28).Value = Sheets("Auftragsanlage").Range("J14")
'Konfektionierung
Sheets("Aufträge").Cells(add, 29).Value = Sheets("Auftragsanlage").Range("M14")
'Haube
'Länge
Sheets("Aufträge").Cells(add, 30).Value = Sheets("Auftragsanlage").Range("Q14")
'Breite
Sheets("Aufträge").Cells(add, 31).Value = Sheets("Auftragsanlage").Range("R14")
'Höhe
Sheets("Aufträge").Cells(add, 32).Value = Sheets("Auftragsanlage").Range("S14")
'Boden
'Länge
Sheets("Aufträge").Cells(add, 33).Value = Sheets("Auftragsanlage").Range("T14")
'Breite
Sheets("Aufträge").Cells(add, 34).Value = Sheets("Auftragsanlage").Range("U14")
'QM
Sheets("Aufträge").Cells(add, 35).Value = Sheets("Auftragsanlage").Range("V14")
'Preis
Sheets("Aufträge").Cells(add, 36).Value = Sheets("Auftragsanlage").Range("Y14")
'Summe
Sheets("Aufträge").Cells(add, 37).Value = Sheets("Auftragsanlage").Range("AB14")
'Haubenmitarbeiter
Sheets("Aufträge").Cells(add, 38).Value = Sheets("Auftragsanlage").Range("AE14")
'Pos 3
'Referenz
Sheets("Aufträge").Cells(add, 39).Value = Sheets("Auftragsanlage").Range("C15")
'Menge
Sheets("Aufträge").Cells(add, 40).Value = Sheets("Auftragsanlage").Range("H15")
'Material
Sheets("Aufträge").Cells(add, 41).Value = Sheets("Auftragsanlage").Range("J15")
'Konfektionierung
Sheets("Aufträge").Cells(add, 42).Value = Sheets("Auftragsanlage").Range("M15")
'Haube
'Länge
Sheets("Aufträge").Cells(add, 43).Value = Sheets("Auftragsanlage").Range("Q15")
'Breite
Sheets("Aufträge").Cells(add, 44).Value = Sheets("Auftragsanlage").Range("R15")
'Höhe
Sheets("Aufträge").Cells(add, 45).Value = Sheets("Auftragsanlage").Range("S15")
'Boden
'Länge
Sheets("Aufträge").Cells(add, 46).Value = Sheets("Auftragsanlage").Range("T15")
'Breite
Sheets("Aufträge").Cells(add, 47).Value = Sheets("Auftragsanlage").Range("U15")
'QM
Sheets("Aufträge").Cells(add, 48).Value = Sheets("Auftragsanlage").Range("V15")
'Preis
Sheets("Aufträge").Cells(add, 49).Value = Sheets("Auftragsanlage").Range("Y15")
'Summe
Sheets("Aufträge").Cells(add, 50).Value = Sheets("Auftragsanlage").Range("AB15")
'Haubenmitarbeiter
Sheets("Aufträge").Cells(add, 51).Value = Sheets("Auftragsanlage").Range("AE15")
'Pos 4
'Referenz
Sheets("Aufträge").Cells(add, 52).Value = Sheets("Auftragsanlage").Range("C16")
'Menge
Sheets("Aufträge").Cells(add, 53).Value = Sheets("Auftragsanlage").Range("H16")
'Material
Sheets("Aufträge").Cells(add, 54).Value = Sheets("Auftragsanlage").Range("J16")
'Konfektionierung
Sheets("Aufträge").Cells(add, 55).Value = Sheets("Auftragsanlage").Range("M16")
'Haube
'Länge
Sheets("Aufträge").Cells(add, 56).Value = Sheets("Auftragsanlage").Range("Q16")
'Breite
Sheets("Aufträge").Cells(add, 57).Value = Sheets("Auftragsanlage").Range("R16")
'Höhe
Sheets("Aufträge").Cells(add, 58).Value = Sheets("Auftragsanlage").Range("S16")
'Boden
'Länge
Sheets("Aufträge").Cells(add, 59).Value = Sheets("Auftragsanlage").Range("T16")
'Breite
Sheets("Aufträge").Cells(add, 60).Value = Sheets("Auftragsanlage").Range("U16")
'QM
Sheets("Aufträge").Cells(add, 61).Value = Sheets("Auftragsanlage").Range("V16")
'Preis
Sheets("Aufträge").Cells(add, 62).Value = Sheets("Auftragsanlage").Range("Y16")
'Summe
Sheets("Aufträge").Cells(add, 63).Value = Sheets("Auftragsanlage").Range("AB16")
'Haubenmitarbeiter
Sheets("Aufträge").Cells(add, 64).Value = Sheets("Auftragsanlage").Range("AE16")
 ... und so weiter bis Position 100!
Vielen Dank vorab für jede Hilfe!
VG, Florian

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Prozedur zu groß -> Wie meine Formel verkürz?
01.10.2018 13:16:21
Daniel
Hi
ohne da jetzt den Sinn zu hinterfragen, könntest du die Programmzeilen mit einer Schleife über Sheets
For P = 1 to 100 'Anzahl Positionen
'Referenz
Sheets("Aufträge").Cells(add, P * 13 + 0).Value = Sheets("Auftragsanlage").Cells(12 + P, "C")   _
'Menge
Sheets("Aufträge").Cells(add, P * 13 + 1).Value = Sheets("Auftragsanlage").Cells(12 + P, "H")
'Material
Sheets("Aufträge").Cells(add, P * 13 + 2).Value = Sheets("Auftragsanlage").Cells(12 + P, "J")
'Haubenmitarbeiter
Sheets("Aufträge").Cells(add, P * 13 + 12).Value = Sheets("Auftragsanlage").Cells(12 + P, "AE") _
Next P

Gruß Daniel
Anzeige
AW: Prozedur zu groß -> Wie meine Formel verkürz?
01.10.2018 14:31:30
Florian
1000 Dank Daniel!
Mit der Schleife klappt es super!
AW: Prozedur zu groß -> Wie meine Formel ..
01.10.2018 14:55:18
Karl-heinz
Hallo Florian,
hier ein kurzer möglicher Ansatz. (ungetestet) Lediglich die Beschriftung im Makro leidet etwas.
Im Array kann man alles vorgeben....
Sub SetzeWerte()
Dim add As Integer, Arr() As String
add = Sheets("Verweise").Range("A2").Value
'                           Pos1                Pos2
Arr = Split(",G2,,,,,,,,,,,,C13,H13,J13,M13,.......", ",")
For Spalte = 13 To UBound(Arr)
If Arr(Spalte)  "" Then
Sheets("Aufträge").Cells(Add, Spalte).Value = Sheets("Auftragsanlage").Range(Arr(Spalte)). _
Value
End If
Next Spalte
End Sub
viele Grüße
Karl-Heinz
Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige