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

Schleifenbildung zum Eintragen

Schleifenbildung zum Eintragen
14.02.2007 10:01:59
Christian
Hallo Leute,
habe ein kleines Problem mit meiner Tabelle. Ich habe für Eintragungen in eine Tabelle eine UserForm1 zur Verfügung. Auf dieser UserForm befinden sich neben einigen anderen Text- und ComboBoxes zwei TextBoxes (TextBox 13 und TextBox 14), die eine Angabe „von“ und „bis“ vorsehen, anhand derer die Eintragungen in der zugehörigen Tabelle in der nächsten freien Zeile entsprechend oft wiederholt werden sollen. Und zwar in je einer neuen Zeile mit der Maßgabe, dass alle anderen Angaben in der jeweiligen Zeile wiederholt werden.
Und das hab ich bisher:
Datum = TextBox12.Value
Depot = TextBox2.Value
ISIN = TextBox3.Value
Nennwert = TextBox8.Value
Währung = ComboBox2.Value
StückeNummer = TextBox6.Value
KuponNummer_von = TextBox13.Value
KuponNummer_bis = TextBox14.Value
Art_des_WP = ComboBox1.Value
Buchungsbelegnummer = TextBox7.Value
Erster_Freigeber = TextBox9.Value
Zweiter_Freigeber = TextBox10.Value
Empfänger = TextBox11.Value
Bogentresor_Zugang:
On Error Resume Next
If CInt(TextBox14.Value) < CInt(TextBox13.Value) Then
MsgBox "Es wurde eine falsche Ende Zinsschein-Nummer eingegeben.", _
48, " Hinweis für " & Application.UserName
TextBox14.SetFocus
Exit Sub
End If
Set gefunden = Worksheets("Bogentresor").Range("K10:K769").Find("")
gefunden = Datum
Set gefunden = Worksheets("Bogentresor").Range("C10:C769").Find("")
gefunden = Depot
Set gefunden = Worksheets("Bogentresor").Range("D10:D769").Find("")
gefunden = ISIN
Set gefunden = Worksheets("Bogentresor").Range("E10:E769").Find("")
gefunden = Nennwert
Set gefunden = Worksheets("Bogentresor").Range("F10:F769").Find("")
gefunden = StückeNummer
Set gefunden = Worksheets("Bogentresor").Range("G10:G769").Find("")
gefunden = KuponNummer
Set gefunden = Worksheets("Bogentresor").Range("H10:H769").Find("")
gefunden = Art_des_WP
Set gefunden = Worksheets("Bogentresor").Range("I10:I769").Find("")
gefunden = Währung
Set gefunden = Worksheets("Bogentresor").Range("J10:J769").Find("")
gefunden = Buchungsbelegnummer
Set gefunden = Worksheets("Bogentresor").Range("K10:K769").Find("")
gefunden = Erster_Freigeber
Set gefunden = Worksheets("Bogentresor").Range("M10:M769").Find("")
gefunden = Zweiter_Freigeber
Set gefunden = Worksheets("Bogentresor").Range("C11:M" & Range("M769").End(xlUp).Row).ClearContents
lZeile = Worksheets("Bogentresor").Range("C10:C769").Find("") '= Start-Zeile der Ausgabe
For lIndex = CInt(TextBox13.Value) To CInt(TextBox14.Value)
gefunden = Worksheets("Bogentresor").Range("F" & lZeile).Value = TextBox6.Value
gefunden = Worksheets("Bogentresor").Range("G" & lZeile).Value = lIndex
lZeile = lZeile + 1
Next lIndex
Diesenletzten Teil habe ich aus einer Tabelle aus dem Herber-Archiv genommen und versucht umzuwandeln.
Kann mir jamand sagen, was ich falsch mache ?

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

Betreff
Datum
Anwender
Anzeige
AW: Schleifenbildung zum Eintragen
14.02.2007 22:48:40
fcs
Hallo Christian,
so ganz steig ich durch deinen Code nicht durch. Aber du kannst ihn meiner Meinung nach etwas Vereinfachen und einen Vorschlag für die Schleife hab ich auch eingefügt. Die Verwendung von Cells statt Range für einzelne Zellen ist in Schleifen meist einfacher und der Code ist auch etwas schneller.
Gruss
Franz

Datum = TextBox12.Value
Depot = TextBox2.Value
ISIN = TextBox3.Value
Nennwert = TextBox8.Value
Währung = ComboBox2.Value
StückeNummer = TextBox6.Value
KuponNummer_von = TextBox13.Value
KuponNummer_bis = TextBox14.Value
Art_des_WP = ComboBox1.Value
Buchungsbelegnummer = TextBox7.Value
Erster_Freigeber = TextBox9.Value
Zweiter_Freigeber = TextBox10.Value
Empfänger = TextBox11.Value
Bogentresor_Zugang:
On Error Resume Next
If CInt(TextBox14.Value) < CInt(TextBox13.Value) Then
MsgBox "Es wurde eine falsche Ende Zinsschein-Nummer eingegeben.", _
48, " Hinweis für " & Application.UserName
TextBox14.SetFocus
Exit Sub
End If
With Worksheets("Bogentresor")
Set gefunden = .Range("K10:K769").Find("")
lZeile = gefunden.Row
.Cells(lZeile, 11).Value = Datum 'Spalte K
.Cells(lZeile, 3).Value = Depot 'Spalte C
.Cells(lZeile, 4).Value = ISIN 'Spalte D
.Cells(lZeile, 5).Value = Nennwert 'Spalte E
.Cells(lZeile, 6).Value = StückeNummer 'Spalte F
.Cells(lZeile, 7).Value = KuponNummer 'Spalte G
.Cells(lZeile, 8).Value = Art_des_WP 'Spalte H
.Cells(lZeile, 9).Value = Währung 'Spalte I
.Cells(lZeile, 10).Value = Buchungsbelegnummer 'Spalte J
.Cells(lZeile, 12).Value = Erster_Freigeber 'Spalte L ? oder soll dies doch Spalte K sein?
.Cells(lZeile, 13).Value = Zweiter_Freigeber 'Spalte M
'vorhandenen Zellinhalte im Bereich Cxxx:M769 löschen, xxx=lZeile+1
.Range(.Cells(lZeile + 1, 3), .Cells(769, 13).End(xlUp).Row).ClearContents
For lIndex = CInt(TextBox13.Value) To CInt(TextBox14.Value)
lZeile = lZeile + 1
.Cells(lZeile, 11).Value = Datum 'Spalte K
.Cells(lZeile, 3).Value = Depot 'Spalte C
.Cells(lZeile, 4).Value = ISIN 'Spalte D
.Cells(lZeile, 5).Value = Nennwert 'Spalte E
.Cells(lZeile, 6).Value = StückeNummer 'Spalte F
.Cells(lZeile, 7).Value = lIndex 'Spalte G
.Cells(lZeile, 8).Value = Art_des_WP 'Spalte H
.Cells(lZeile, 9).Value = Währung 'Spalte I
.Cells(lZeile, 10).Value = Buchungsbelegnummer 'Spalte J
.Cells(lZeile, 12).Value = Erster_Freigeber 'Spalte L ? oder soll dies doch Spalte K sein?
.Cells(lZeile, 13).Value = Zweiter_Freigeber 'Spalte M
Next lIndex
End With

Anzeige
AW: Schleifenbildung zum Eintragen
15.02.2007 08:31:08
Christian
Hallo Franz,vielen Dank für Deine Mühe. Ich habe es mit Deiner Lösung versucht, klappt aber leider auch nicht. Ich ver such es einmal anders zu beschreiben.Wenn der User etwas einbucht, soll Excel sich in der vohandenen (teilweise schon ausgefüllten) Tabelle die nächste frei Zeile ab Zeile 13 suchen und dort anfangen einzutragen. Dabei wird grundsätzlich nur in eine Zeile eingetragen. Gibt allerdings der User Kuponnummern von / bis an, dann soll Excel für jede Kuponnummer eine weitere Zeile eintragen und alle anderen Daten (Datum, Depot,...) in jeder Zeile wiederholen.Ein vorheriges Löschen der Inhalte soll also nicht erfolgen. Ebenso, kann keine feste Celle programmiert werden. Ich habe das dann immer über die range "" Methode versucht. ist doch korrekt oder ?
Anzeige
AW: Schleifenbildung zum Eintragen
15.02.2007 22:26:57
fcs
Hallo Christian,
so ist es halt. Ungenaue Vorgaben ergen en unbefriedigendes Ergebnis.
Ich hoffe mit folgender Variante kommst du deinem Ziel näher, wobei du noch ein paar Sachen ergänzen/anpassen muss (Zeilen mit Fragezeichen)
Für die Bestimmung der nächsten leeren Zeile hat sich eine andere Methode bewährt, als die Suche nach einem Leerstring.
Gruß
Franz
Sub xxx()
Datum = TextBox12.Value
Depot = TextBox2.Value
ISIN = TextBox3.Value
Nennwert = TextBox8.Value
Währung = ComboBox2.Value
StückeNummer = TextBox6.Value
KuponNummer = xxxx '?
KuponNummer_von = TextBox13.Value
KuponNummer_bis = TextBox14.Value
Art_des_WP = ComboBox1.Value
Buchungsbelegnummer = TextBox7.Value
Erster_Freigeber = TextBox9.Value
Zweiter_Freigeber = TextBox10.Value
Empfänger = TextBox11.Value
Bogentresor_Zugang:
On Error Resume Next
If CInt(TextBox14.Value) < CInt(TextBox13.Value) Then
MsgBox "Es wurde eine falsche Ende Zinsschein-Nummer eingegeben.", _
48, " Hinweis für " & Application.UserName
TextBox14.SetFocus
Exit Sub
End If
With Worksheets("Bogentresor")
'Nächste freie Zeile ab Zeile 13 in Spalte K bestimmen
lZeile = Application.WorksheetFunction.Max(13, .Cells(769, 11).End(xlUp).Row + 1)
If TextBox13.Value <> "" And TextBox14.Value <> "" Then
'für KuponNummer_von und KuponNummer_bis wurden Werte eingegeben
For lIndex = CInt(TextBox13.Value) To CInt(TextBox14.Value)
.Cells(lZeile, 11).Value = Datum 'Spalte K
.Cells(lZeile, 3).Value = Depot 'Spalte C
.Cells(lZeile, 4).Value = ISIN 'Spalte D
.Cells(lZeile, 5).Value = Nennwert 'Spalte E
.Cells(lZeile, 6).Value = StückeNummer 'Spalte F
.Cells(lZeile, 7).Value = lIndex 'Kupon-Nummer Spalte G
.Cells(lZeile, 8).Value = Art_des_WP 'Spalte H
.Cells(lZeile, 9).Value = Währung 'Spalte I
.Cells(lZeile, 10).Value = Buchungsbelegnummer 'Spalte J
.Cells(lZeile, 12).Value = Erster_Freigeber 'Spalte L ? oder soll dies doch Spalte K sein?
.Cells(lZeile, 13).Value = Zweiter_Freigeber 'Spalte M
lZeile = lZeile + 1
Next lIndex
Else
'Nur Daten für einen Kupon eintragen
.Cells(lZeile, 11).Value = Datum 'Spalte K
.Cells(lZeile, 3).Value = Depot 'Spalte C
.Cells(lZeile, 4).Value = ISIN 'Spalte D
.Cells(lZeile, 5).Value = Nennwert 'Spalte E
.Cells(lZeile, 6).Value = StückeNummer 'Spalte F
.Cells(lZeile, 7).Value = KuponNummer 'Spalte G
.Cells(lZeile, 8).Value = Art_des_WP 'Spalte H
.Cells(lZeile, 9).Value = Währung 'Spalte I
.Cells(lZeile, 10).Value = Buchungsbelegnummer 'Spalte J
.Cells(lZeile, 12).Value = Erster_Freigeber 'Spalte L ? oder soll dies doch Spalte K sein?
.Cells(lZeile, 13).Value = Zweiter_Freigeber 'Spalte M
End If
End With
End Sub

Anzeige
AW: Schleifenbildung zum Eintragen
19.02.2007 22:53:10
Christian
Hallo Franz, ich werd das gleich mal ausprobieren.
Danke - ich bin wirklich Dankbar aber natürlich habe ich nicht mit einer Ideallösung gerechnet. Gerade das macht ja das Salz in der Suppe aus. So bleibt mir ja auch noch ein wenig Nachdenken übrig. Danke nochmals.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige