Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1680to1684
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

Code kürzen durch Schleife

Code kürzen durch Schleife
26.03.2019 01:31:07
benny124aka
Hallo zusammen,
Ich würde gerne den bzw. die folgenden Code´s als Schleife schreiben, schaffe es aber leider nicht die Textboxen innerhalb der Schleife anzusprechen.
In den Textboxen befinden sich Zahlen, Buchstaben und ein Datum
So siehts bisher aus:(funktioniert auch, ist aber sehr lang!Außerdem ist es so sehr umständlich bei Erweiterung.- Geht das auch als Schleife?)
1.Code
Private Sub cmd_save_Click()
Dim intErsteLeereZeile As Long
'bestimmt die erste freie Zeile im Tabelleblatt
intErsteLeereZeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
ActiveSheet.Cells(intErsteLeereZeile, 1).Value = Me.TextBox1
ActiveSheet.Cells(intErsteLeereZeile, 2).Value = Me.TextBox2
ActiveSheet.Cells(intErsteLeereZeile, 3).Value = Me.TextBox3
ActiveSheet.Cells(intErsteLeereZeile, 4).Value = Me.TextBox4
ActiveSheet.Cells(intErsteLeereZeile, 5).Value = Me.TextBox5
ActiveSheet.Cells(intErsteLeereZeile, 6).Value = Me.TextBox6
'Rechnungsdatum
With ActiveSheet.Cells(intErsteLeereZeile, 7)
If Me.TextBox7.Text = "" Then
.ClearContents
ElseIf IsDate(Me.TextBox7.Text) Then
.Value = CDate(Me.TextBox7)
Else
.Value = Me.TextBox7
End If
End With
ActiveSheet.Cells(intErsteLeereZeile, 8).Value = Me.TextBox8
ActiveSheet.Cells(intErsteLeereZeile, 9).Value = Me.TextBox9
ActiveSheet.Cells(intErsteLeereZeile, 10).Value = Me.TextBox10
ActiveSheet.Cells(intErsteLeereZeile, 11).Value = Me.TextBox11
ActiveSheet.Cells(intErsteLeereZeile, 12).Value = Me.TextBox12
ActiveSheet.Cells(intErsteLeereZeile, 13).Value = Me.TextBox13
ActiveSheet.Cells(intErsteLeereZeile, 14).Value = Me.TextBox14
ActiveSheet.Cells(intErsteLeereZeile, 15).Value = Me.TextBox15
ActiveSheet.Cells(intErsteLeereZeile, 16).Value = Me.TextBox16
Unload frm_Erfassen
End Sub

.................................................................................
2.Code
z ist eine Global As Integer Variable
.................................................................................
Private Sub cmd_save_Click()
Sheets("Tabelle1").Cells(Z, 1) = TextBox1
Sheets("Tabelle1").Cells(Z, 2) = TextBox2
Sheets("Tabelle1").Cells(Z, 3) = TextBox3
Sheets("Tabelle1").Cells(Z, 4) = TextBox4
Sheets("Tabelle1").Cells(Z, 5) = TextBox5
Sheets("Tabelle1").Cells(Z, 6) = TextBox6
Sheets("Tabelle1").Cells(Z, 7) = TextBox7
Sheets("Tabelle1").Cells(Z, 8) = TextBox8
Sheets("Tabelle1").Cells(Z, 9) = TextBox9
Sheets("Tabelle1").Cells(Z, 10) = TextBox10
Sheets("Tabelle1").Cells(Z, 11) = TextBox11
Sheets("Tabelle1").Cells(Z, 12) = TextBox12
Sheets("Tabelle1").Cells(Z, 13) = TextBox13
Sheets("Tabelle1").Cells(Z, 14) = TextBox14
Sheets("Tabelle1").Cells(Z, 15) = TextBox15
Sheets("Tabelle1").Cells(Z, 16) = TextBox16
Unload frm_Bearbeiten
End Sub

...........................................................................
Wäre für eure Hilfe sehr dankbar :)
gruß benny

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code kürzen durch Schleife
26.03.2019 05:46:39
Hajo_Zi
Hallo Benny,
benutze die Tag Eigenschaft. Du hast keine Datei verlinkt, da Du es sedlber erarbeiten wolltest.
Viel Erfolg.
Private Sub CMD_Uebertragen_Click()
' Übertragen der Daten in die Tabelle
' auf der Eigenschaft Tag der Steuerelmente steht die Tabelle
' und die Spalte in die die Daten geschrieben werden
' Der Datensatz wird immer nach der letzten Zeile geschrieben
Dim ObCb As Object
Dim Loletzte As Long
' letzte Zeile in Tabelle01 feststellen
Loletzte = Worksheets("Tabelle01").UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1
If Loletzte  "" Then
Worksheets(Left(ObCb.Tag, 9)).Range(Mid(ObCb.Tag, 11, 2) _
& Loletzte) = ObCb.Value
End If
Next ObCb
Else
MsgBox "Es ist keine Zeile mehr frei"
End If
End Sub


Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.
Anzeige
AW: Code kürzen durch Schleife
27.03.2019 00:21:40
benny124aka
Hallo,
erst einmal vielen Dank für eure Mühe. Die datei habe ich nicht angehangen weil ich das beim letzten mal iwie nicht hinbekommen habe.
Ich möchte natürlich gerne alles selbst erarbeiten, das übersteigt bei jetzigem VBA stand aber leider meine Fähigkeiten noch ein wenig.
Zum 1. Code : Viele Elemente die mir bis Dato unbekannt waren.
Zum 2.Code : da kann ich schon einiges nachvollziehen. Bekomme aber leider immer die Fehlermeldung 1004 Anwendungs- oder objektdefinierter Fehler.
die Geschichte mit dem Datum war ein Hinweis von einem User hier.
und es gibt 2 Codes weil es 2 Tabellenblätter und 2 Userformen gibt. Ist aber auch schon länger her das ich das geschrieben habe. Kann auch sein das ich es einfach auf 2 verschiedene arten ausprobiert habe.
Habe die Datei mal angehangen.
https://www.herber.de/bbs/user/128677.xlsm
Bin für jeden Tipp und jede Hilfe dankbar.
Gruß Benny
Anzeige
kann ich nicht nachvollziehen...
27.03.2019 17:05:14
Werner
Hallo,
...in deiner Beispielmappe mit dem Code von Matthias kommt kein Fehler beim Klick auf Speichern, Daten werden wie gewünscht in die Tabelle geschrieben.
Gruß Werner
AW: kann ich nicht nachvollziehen...
28.03.2019 15:09:20
benny124aka
Hallo Werner,
also es wird etwas gespeichert. Aber nicht da wo es soll.
Fehlermeldung habe ich aber hier in dieser Datei auch nicht mehr bekommen.
Die Werte aus den Textboxen 1-16 sollen im Tabellenblatt in die Spalten 1-16 geschrieben werden. Aktuell speichert er aber nur eine "1" aus Textbox1 in Spalte 7 oder so.
gruß benny
AW: kann ich nicht nachvollziehen...
29.03.2019 11:29:34
Werner
Hallo Benny,
auch das kann ich so nicht bestätigen. Mit deiner Beispieldatei, mit dem Code von Matthias im Speichern-Button, werden die Daten der verschiedenen Textboxen richtig in die jeweiligen Spalten des Tabellenblattes geschrieben.
Gruß Werner
Anzeige
der 2.Code ...
26.03.2019 06:22:45
Matthias
Hallo
Hier mal für das 2.Beispiel (nicht getestet)
z ist eine Global As Integer Variable(Zitat)
Geht das auch als Schleife?
Antwort: Ja
Option Explicit
Private Sub cmd_save_Click()
Dim x&
Application.EnableEvents = 0
With Worksheets("Tabelle1")
For x = 1 To 16
.Cells(Z, x) = Controls("TextBox" & x)
Next
End With
Application.EnableEvents = 1
Unload frm_Bearbeiten
End Sub
Das ich das Formular nicht nachbaue sollte verständlich sein.
Ist mir zu viel Aufwand.
Beim 'Rechnungsdatum
hast Du doch bereits mit With prgrammiert, warum dann nicht konsequent weiter?
Wieso gibts 2x Private Sub cmd_save_Click() ?
Gruß Matthias
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige