Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
608to612
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
608to612
608to612
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Kann ich diesen Code kleiner schreiben

Kann ich diesen Code kleiner schreiben
11.05.2005 20:30:13
Thomas
Hallo Liebe Excel Freunde!
Ich hätte da mal eine Frage was diesen unten stehenden Code angeht.
Er ist ziemlich lang und wenn man was ändert möchte dauert es stunden.
Deswegen meine Frage ob man den Code so ändern kann das er keiner wird.
Zur erklärung: Der Code trägt die daten der ganzen TB von der userform in Excel ein und zwar immer in die nächste Freie Zeile und von da aus immer eine weiter nach Rechts. Desweiteren wird als erstes immer der Zähler um 1 erhöht.
Wenn mir jemand von euch da helfen könnte würde ich mich sehr freuen.


Private Sub CommandButton2_Click()
Set Frm = Auftragsverwaltung
Sheets("AuftragSpeichern1").Activate
Dim i As Single
Sheets("AuftragSpeichern1").Activate
Range("A65536").End(xlUp).Copy
Range("A2").Select
Selection.PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
i = Range("A2").Value
i = i + 1
Range("A65536").End(xlUp).Offset(1, 0).Value = i
Range("A65536").End(xlUp).Select
With Frm
ActiveCell.Offset(0, 1).Value = .TextBox8.Value
ActiveCell.Offset(0, 2).Value = .TextBox9.Value
ActiveCell.Offset(0, 3).Value = .ComboBox8.Value
ActiveCell.Offset(0, 4).Value = .TextBox11.Value
ActiveCell.Offset(0, 5).Value = .ComboBox9.Value
ActiveCell.Offset(0, 6).Value = .TextBox14.Value
ActiveCell.Offset(0, 7).Value = .ComboBox10.Value
ActiveCell.Offset(0, 8).Value = .CheckBox7.Value
ActiveCell.Offset(0, 9).Value = .CheckBox8.Value
ActiveCell.Offset(0, 10).Value = .CheckBox9.Value
ActiveCell.Offset(0, 11).Value = .CheckBox10.Value
ActiveCell.Offset(0, 78).Value = .CheckBox11.Value
ActiveCell.Offset(0, 79).Value = .CheckBox12.Value
ActiveCell.Offset(0, 12).Value = .TextBox21.Value
ActiveCell.Offset(0, 13).Value = .TextBox22.Value
ActiveCell.Offset(0, 14).Value = .TextBox23.Value
ActiveCell.Offset(0, 15).Value = .TextBox24.Value
ActiveCell.Offset(0, 16).Value = .TextBox25.Value
ActiveCell.Offset(0, 17).Value = .TextBox26.Value
ActiveCell.Offset(0, 18).Value = .TextBox27.Value
ActiveCell.Offset(0, 19).Value = .TextBox28.Value
ActiveCell.Offset(0, 20).Value = .TextBox29.Value
ActiveCell.Offset(0, 21).Value = .TextBox30.Value
ActiveCell.Offset(0, 22).Value = .ComboBox2.Value
ActiveCell.Offset(0, 23).Value = .TextBox32.Value
ActiveCell.Offset(0, 24).Value = .TextBox33.Value
ActiveCell.Offset(0, 25).Value = .TextBox34.Value
ActiveCell.Offset(0, 26).Value = .TextBox35.Value
ActiveCell.Offset(0, 27).Value = .TextBox36.Value
ActiveCell.Offset(0, 28).Value = .ComboBox3.Value
ActiveCell.Offset(0, 29).Value = .TextBox38.Value
ActiveCell.Offset(0, 30).Value = .TextBox39.Value
ActiveCell.Offset(0, 31).Value = .TextBox40.Value
ActiveCell.Offset(0, 32).Value = .TextBox41.Value
ActiveCell.Offset(0, 33).Value = .TextBox42.Value
ActiveCell.Offset(0, 34).Value = .ComboBox4.Value
ActiveCell.Offset(0, 35).Value = .TextBox44.Value
ActiveCell.Offset(0, 36).Value = .TextBox45.Value
ActiveCell.Offset(0, 37).Value = .TextBox46.Value
ActiveCell.Offset(0, 38).Value = .TextBox47.Value
ActiveCell.Offset(0, 39).Value = .TextBox48.Value
ActiveCell.Offset(0, 40).Value = .ComboBox5.Value
ActiveCell.Offset(0, 41).Value = .TextBox50.Value
ActiveCell.Offset(0, 42).Value = .TextBox51.Value
ActiveCell.Offset(0, 43).Value = .TextBox52.Value
ActiveCell.Offset(0, 44).Value = .TextBox53.Value
ActiveCell.Offset(0, 45).Value = .TextBox54.Value
ActiveCell.Offset(0, 46).Value = .ComboBox6.Value
ActiveCell.Offset(0, 47).Value = .ComboBox7.Value
ActiveCell.Offset(0, 48).Value = .TextBox57.Value
ActiveCell.Offset(0, 49).Value = .ComboBox1.Value
ActiveCell.Offset(0, 50).Value = .TextBox59.Value
ActiveCell.Offset(0, 51).Value = .TextBox60.Value
ActiveCell.Offset(0, 52).Value = .TextBox61.Value
ActiveCell.Offset(0, 53).Value = .OptionButton11.Value
ActiveCell.Offset(0, 54).Value = .OptionButton12.Value
ActiveCell.Offset(0, 55).Value = .OptionButton13.Value
ActiveCell.Offset(0, 56).Value = .OptionButton14.Value
ActiveCell.Offset(0, 57).Value = .OptionButton15.Value
ActiveCell.Offset(0, 58).Value = .OptionButton16.Value
ActiveCell.Offset(0, 59).Value = .OptionButton1.Value
ActiveCell.Offset(0, 60).Value = .OptionButton2.Value
ActiveCell.Offset(0, 61).Value = .OptionButton3.Value
ActiveCell.Offset(0, 62).Value = .OptionButton4.Value
ActiveCell.Offset(0, 63).Value = .OptionButton5.Value
ActiveCell.Offset(0, 64).Value = .OptionButton6.Value
ActiveCell.Offset(0, 65).Value = .OptionButton7.Value
ActiveCell.Offset(0, 66).Value = .OptionButton8.Value
ActiveCell.Offset(0, 67).Value = .OptionButton9.Value
ActiveCell.Offset(0, 68).Value = .OptionButton10.Value
ActiveCell.Offset(0, 69).Value = .OptionButton17.Value
ActiveCell.Offset(0, 70).Value = .OptionButton18.Value
ActiveCell.Offset(0, 71).Value = .OptionButton19.Value
ActiveCell.Offset(0, 72).Value = .OptionButton20.Value
ActiveCell.Offset(0, 73).Value = .OptionButton21.Value
ActiveCell.Offset(0, 74).Value = .OptionButton22.Value
ActiveCell.Offset(0, 75).Value = .TextBox7.Value
ActiveCell.Offset(0, 76).Value = .TextBox78.Value
.TextBox79.Value = ActiveCell.Offset(0, 0).Value
End With
End Sub

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kann ich diesen Code kleiner schreiben
11.05.2005 20:41:51
Hajo_Zi
Hallo Thomas,
das kann ganz erheblich kürzer geschrieben werden, wenn mann die Tag Eigenschaft benutzt. Schreibe dort das Offset rein. 70 Zeilen könnte man bestimmt einsparen damit. Mir ist das aber zu aufwendig dies nachzubauen. Also benutze mal die Recherche (Service) und erstelle das selber. Das dürfte ja bei Deinem Level kein Problem sein.

Bitte keine Mail, Probleme sollten im Forum gelöst werden.
Microsoft MVP für Excel
Das Forum lebt auch von den Rückmeldungen.
Betriebssystem XP Home SP2 und Excel Version 2003 SP1.



"Wer Rechtschreibfehler findet, darf sie behalten!"
Dies gilt auch für Bert.
Anzeige
AW: Kann ich diesen Code kleiner schreiben
11.05.2005 20:53:23
Thomas
Erstmal danke für deine Antwort,
aber da habe ich mich wohl verklickt was das level angeht, Ich meinet Excel gut und VBA nur ein ganz keines Stück..
Kannst du mir sonst noch einen kleinen Tipp geben wie man den Code kleiner bekommt.
Wäre echt klasse, das gleich natürlich auch für alle anderen.
Ich wäre für Hilfe sehr dankbar.
Gruß
Thomas
AW: Kann ich diesen Code kleiner schreiben
11.05.2005 21:59:08
andre
--------------------------------------------------------------------------------

Bitte überprüfe Deine Nachricht!



Text:

Hallo Thomas,
wenn Du Deine Boxen mal entsprechend der Spalten bezeichnest kannst Du das ganze über eine Schleife füllen - im Prinzip so:
On Error Resume Next
For InJ = 1 To 79
Cells(1, InJ) = Controls("Textbox" & InJ)
Cells(1, InJ) = Controls("Combobox" & InJ)
Cells(1, InJ) = Controls("Optionbutton" & InJ)
Next InJ
On Error GoTo 0
Du kannst auch die tags verwenden, wie Hajo vorgeschlagen hat. Da kannst Du z.B. die Spalte als Tag einfügen und dann so auswerten - da kannst Du die Namen der Elemente lassen:
On Error Resume Next
For InJ = 1 To 78
Range(Controls("Textbox" & InJ).Tag & "2") = Controls("Textbox" & InJ)
Range(Controls("Textbox" & InJ).Tag & "2") = Controls("Combobox" & InJ)
Range(Controls("Textbox" & InJ).Tag & "2") = Controls("Optionbutton" & InJ)
Next InJ
On Error GoTo 0
Die 1 bzw. 2 steht für die Zeile, im Tag des Elementes steht z.B. A, B oder C usw. Wenn Du als Tag die Offset-Zahl eingibst kannst Du auch mit
On Error Resume Next
For InJ = 1 To 78
ActiveCell.Offset(0, Controls("Textbox" & InJ).Tag) = Controls("Textbox" & InJ)
ActiveCell.Offset(0, Controls("Textbox" & InJ).Tag) = Controls("Combobox" & InJ)
ActiveCell.Offset(0, Controls("Textbox" & InJ).Tag) = Controls("Optionbutton" & InJ)
Next InJ
On Error GoTo 0
arbeiten
Mit On Error ... überspringst Du den Fehler, weil zu einer Nummer ja nicht alle Elemente da sind. Wenn Deine Boxen nicht als höchstes die 78 hätten (die 79 kommt extra) könnte man in der 2. Variante auch das Schleifenende verringern, aber Deine Nummern sind ja nicht durchgängig ...
Anzeige
AW: Kann ich diesen Code kleiner schreiben
11.05.2005 21:49:16
Reinhard
Hallo Thomas,
viel ist da nicht zu machen Siehe anhang.
Aber machs wie Hajo sagte oder drucke dir deinen Code aus und benne die Schaltflächen anhand deines Ausdruckes neu.
also textox8 heisst dann TB1
also textox9 heisst dann TB2
combobox8 CB3 !nicht 1
combobox9 CB5
...
dann kommste mit nem 8 Zeiler aus
for each c in Controls
if instr(c,"TB") or instr(c,"CB")... then
s=right(c,1) 'klar muss anders lauten wenn 2stellig
activecell.offset(0,s).value=c.value
end if
next c
Gruß
Reinhard

Private Sub CommandButton2_Click()
Set Frm = Auftragsverwaltung
Sheets("AuftragSpeichern1").Activate
Dim i As Single
Sheets("AuftragSpeichern1").Activate
Range("A65536").End(xlUp).Copy
Range("A2").Select
Selection.PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
i = Range("A2").Value
i = i + 1
Range("A65536").End(xlUp).Offset(1, 0).Value = i
Range("A65536").End(xlUp).Select
With UserForm1
For n = 1 To 52
ActiveCell.Offset(0, n).Value = .Controls("TextBox" & n + 9).Value
Next n
For n = 53 To 58
ActiveCell.Offset(0, n).Value = .Controls("OptionButton" & n - 42).Value
Next n
For n = 59 To 68
ActiveCell.Offset(0, n).Value = .Controls("OptionButton" & n - 58).Value
Next n
For n = 96 To 74
ActiveCell.Offset(0, n).Value = .Controls("OptionButton" & n - 52).Value
Next n
ActiveCell.Offset(0, 1).Value = .TextBox8.Value
ActiveCell.Offset(0, 2).Value = .TextBox9.Value
ActiveCell.Offset(0, 3).Value = .ComboBox8.Value
ActiveCell.Offset(0, 4).Value = .TextBox11.Value
ActiveCell.Offset(0, 5).Value = .ComboBox9.Value
ActiveCell.Offset(0, 6).Value = .TextBox14.Value
ActiveCell.Offset(0, 7).Value = .ComboBox10.Value
ActiveCell.Offset(0, 8).Value = .CheckBox7.Value
ActiveCell.Offset(0, 9).Value = .CheckBox8.Value
ActiveCell.Offset(0, 10).Value = .CheckBox9.Value
ActiveCell.Offset(0, 11).Value = .CheckBox10.Value
ActiveCell.Offset(0, 78).Value = .CheckBox11.Value
ActiveCell.Offset(0, 79).Value = .CheckBox12.Value
ActiveCell.Offset(0, 22).Value = .ComboBox2.Value
ActiveCell.Offset(0, 28).Value = .ComboBox3.Value
ActiveCell.Offset(0, 34).Value = .ComboBox4.Value
ActiveCell.Offset(0, 40).Value = .ComboBox5.Value
ActiveCell.Offset(0, 46).Value = .ComboBox6.Value
ActiveCell.Offset(0, 47).Value = .ComboBox7.Value
ActiveCell.Offset(0, 48).Value = .TextBox57.Value
ActiveCell.Offset(0, 49).Value = .ComboBox1.Value
ActiveCell.Offset(0, 75).Value = .TextBox7.Value
ActiveCell.Offset(0, 76).Value = .TextBox78.Value
.TextBox79.Value = ActiveCell.Offset(0, 0).Value
End With
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige