Anzeige
Archiv - Navigation
568to572
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
568to572
568to572
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

einmalige Schleife

einmalige Schleife
17.02.2005 08:20:26
Marius
Guten Morgen ans Forum,
ich benötige Hilfe bei einer VB-Schleife, die ich es nicht ganz hinbekomme. Es sollen Daten aus einer UserForm (K_Erfassung) in eine Daten Tabelle (Kalendererfassung) geschrieben werden. Dabei sind drei Felder immer gleich, aber die anderen sollen immer Fortlaufend geschrieben werden.
Es sollen immer in die nächste freie Zeile immer nur einmal die Daten übernommen werden.
TextBox 1 = A3 = immer gleich
TextBox 2 = B3 = immer gleich
TextBox 3 = C3 = immer gleich
TextBox 4 = A ab Zeile 5 = variabel
TextBox 5 = B ab Zeile 5 = variabel
TextBox 6 = C ab Zeile 5 = variabel
…
TextBox13= K ab Zeile 5 = variabel
Mein Code (füge ich bei) überschreibt immer alle Variablen und läuft immer für alle 500 Zeilen durch, soll aber die bestehenden stehen lassen und nur einmal die Werte einfügen.

Private Sub CommandButton1_Click()
Sheets("Kalendererfassung").Visible = True
Sheets("Kalendererfassung").Select
Range("A3").Select
ActiveCell.Select
ActiveCell = TextBox1
Range("b3").Select
ActiveCell.Select
ActiveCell = TextBox2
Range("c3").Select
ActiveCell.Select
ActiveCell = TextBox3
Dim i As Integer
Range("a5").Select
For i = 5 To 500
If ActiveCell = "" Then ActiveCell.Select
ActiveCell = TextBox4
ActiveCell.Cells(z + 1, s + 2).Select
ActiveCell = TextBox5
ActiveCell.Cells(z + 1, s + 2).Select
ActiveCell = TextBox6
ActiveCell.Cells(z + 1, s + 2).Select
ActiveCell = ""
ActiveCell.Cells(z + 2, s - 2).Select
Next i
Range("a5").Select
Sheets("Start").Select
Range("A3").Select
Sheets("Kalendererfassung").Visible = False
K_Erfassung.Hide
End Sub

Bitte um Hilfe und schon mal danke im Voraus
Marius

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

Betreff
Datum
Anwender
Anzeige
AW: einmalige Schleife
Stefan
Hallo Marius,
hab mal versucht deinen Code zu ändern, hab ihn nicht getestet, kann daher auch nicht sagen, ob er funktioniert:

Private Sub CommandButton1_Click()
Sheets("Kalendererfassung").Visible = True
Sheets("Kalendererfassung").Range("A3").Select
ActiveCell.Offset(0, 0).Value = textBox1.Value
ActiveCell.Offset(0, 1).Value = TextBox2.Value
ActiveCell.Offset(0, 2).Value = TextBox3.Value
Dim i As Integer
'Range("a5").Select
For i = 2 To 500
If ActiveCell.Offset(0 + i, 0).Value = "" Then
ActiveCell.Offset(0 + i, 0).Value = TextBox4.Value
ActiveCell.Offset(0 + i, 1).Value = TextBox5.Value
ActiveCell.Offset(0 + i, 2).Value = TextBox6.Value
Next i
'Range("a5").Select
Sheets("Start").Range("A3").Select
Sheets("Kalendererfassung").Visible = False
K_Erfassung.Hide
End Sub

Habe folgende Zeilen aus deinen Code entfernt, wußte nicht was du damit bezweckst
' ActiveCell = ""
' ActiveCell.Cells(z + 2, s - 2).Select
Gruß Stefan
Anzeige
AW: einmalige Schleife
Marius
fehler beim komilieren
next ohne for
...sowas oder ähnliches bekomme ich auch dauernd, habe schon zig Varianten ausprobiert, kenne mich mit VB leider nicht so aus.
AW: einmalige Schleife
Stefan
Sorry, ein End if vergessen. Hier der geänderte Code

Private Sub CommandButton1_Click()
Sheets("Kalendererfassung").Visible = True
Sheets("Kalendererfassung").Range("A3").Select
ActiveCell.Offset(0, 0).Value = textBox1.Value
ActiveCell.Offset(0, 1).Value = TextBox2.Value
ActiveCell.Offset(0, 2).Value = TextBox3.Value
Dim i As Integer
'Range("a5").Select
For i = 2 To 500
If ActiveCell.Offset(0 + i, 0).Value = "" Then
ActiveCell.Offset(0 + i, 0).Value = TextBox4.Value
ActiveCell.Offset(0 + i, 1).Value = TextBox5.Value
ActiveCell.Offset(0 + i, 2).Value = TextBox6.Value
End If
Next i
'Range("a5").Select
Sheets("Start").Range("A3").Select
Sheets("Kalendererfassung").Visible = False
K_Erfassung.Hide
End Sub

Gruß Stefan
Anzeige
AW: einmalige Schleife
Marius
Super, ein Problem ist gelöst, er lässt die vorhandenen Daten stehen aber er schreibt die Daten immer noch bis 500 voll. Er soll aber, nach dem er eine freie Zeile gefunden hat und die Daten eingefügt hat die Schleife auch abbrechen.
Marius
AW: einmalige Schleife
Stefan
Hallo Marius,
verstehe dich nicht ganz, soll die For-next schleife nur 1x durchlaufen werden.
Ein verwirrter Stefan
AW: einmalige Schleife
Marius
Sorry, wenn ich mich falsch ausdrücke, aber er soll die Daten aus der UserForm einfach in die nächste freie Zeile schreiben. Das macht er ja auch aber nach dem er die Daten da eingetragen hat soll er die Schleife abbrechen. (Daten nur einmal eintragen)
Anzeige
AW: einmalige Schleife
Stefan
Hallo Marius,
nachdem ich meine Frage gepostet, wurde mir klar was du meinst. Teste das mal

Private Sub CommandButton1_Click()
Sheets("Kalendererfassung").Visible = True
Sheets("Kalendererfassung").Range("A3").Select
ActiveCell.Offset(0, 0).Value = textBox1.Value
ActiveCell.Offset(0, 1).Value = TextBox2.Value
ActiveCell.Offset(0, 2).Value = TextBox3.Value
'Dim i As Integer
'Range("a5").Select
Range("A65536").End(xlUp).Offset(1, 0).Value = textbox4.Value
Range("B65536").End(xlUp).Offset(1, 0).Value = textbox5.Value
Range("C65536").End(xlUp).Offset(1, 0).Value = textbox6.Value
'Range("a5").Select
Sheets("Start").Range("A3").Select
Sheets("Kalendererfassung").Visible = False
K_Erfassung.Hide
End Sub

Gruß Stefan
Anzeige
AW: einmalige Schleife
Marius
Stefan...
wir haben es, puhhhh, dank, danke, danke, funktioniert, habe es auch schon modifiziert, super.
Danke nochmal
Bin dir was schuldig
P.S.: Der Code schaut ja einfach aus als er ist. Verstehe zwar nicht als (zB. "A6536") aber ist ja egal. Danke!!!
AW: einmalige Schleife
Stefan
Hallo Marius,
eine andere Möglichkeit

Private Sub CommandButton1_Click()
Sheets("Kalendererfassung").Visible = True
Sheets("Kalendererfassung").Range("A3").Select
ActiveCell.Offset(0, 0).Value = textBox1.Value
ActiveCell.Offset(0, 1).Value = TextBox2.Value
ActiveCell.Offset(0, 2).Value = TextBox3.Value
Dim i As Integer
'Range("a5").Select
For i = 2 To 500
If ActiveCell.Offset(0 + i, 0).Value = "" Then
ActiveCell.Offset(0 + i, 0).Value = TextBox4.Value
ActiveCell.Offset(0 + i, 1).Value = TextBox5.Value
ActiveCell.Offset(0 + i, 2).Value = TextBox6.Value
Exit For
End If
Next i
'Range("a5").Select
Sheets("Start").Range("A3").Select
Sheets("Kalendererfassung").Visible = False
K_Erfassung.Hide
End Sub

Anzeige
AW: einmalige Schleife
Marius
Ich muss dir noch mal für deine Hilfe danken, bin echt gerettet.
Aber ein kleines Minus haben die beiden Codes schon. Wenn der Benutzer mal ein Feld in der UserForm auslässt dann wir sich diese Spalte bei der Nächste Eingab verschieben.
...das werde ich wohl anders lösen müssen.
Dir aber noch mal Große Dank.
Marius
AW: einmalige Schleife
Stefan
vielleicht so?

Private Sub CommandButton1_Click()
If textbox4.Value = "" Or textbox5.Value = "" Or textbox6.Value = "" Then
MsgBox "Es sind nicht alle Felder gefüllt": End
Sheets("Kalendererfassung").Visible = True
Sheets("Kalendererfassung").Range("A3").Select
ActiveCell.Offset(0, 0).Value = textBox1.Value
ActiveCell.Offset(0, 1).Value = TextBox2.Value
ActiveCell.Offset(0, 2).Value = TextBox3.Value
Dim i As Integer
'Range("a5").Select
For i = 2 To 500
If ActiveCell.Offset(0 + i, 0).Value = "" Then
ActiveCell.Offset(0 + i, 0).Value = textbox4.Value
ActiveCell.Offset(0 + i, 1).Value = textbox5.Value
ActiveCell.Offset(0 + i, 2).Value = textbox6.Value
Exit For
End If
Next i
'Range("a5").Select
Sheets("Start").Range("A3").Select
Sheets("Kalendererfassung").Visible = False
K_Erfassung.Hide
End Sub

Anzeige
AW: einmalige Schleife
Marius
Ist eine kluge Idee aber das End muss ein end if sein sonst geht es nicht. Außerdem zeigt er die Meldung zwar an, schreibt aber die Daten trozdem rein. Das liegt daran da das end nicht funktioniert. An der Stelle sollte das Makro ja enden aber ohne end if keine if anweisung.
AW: einmalige Schleife
Stefan
Noch besser wäre bei den Command-Button die Enabled-Eigenschaft, solange auf False zu
setzen, bis alle Textboxen gefüllt sind
https://www.herber.de/bbs/user/18249.xls
AW: einmalige Schleife
Marius
Super !!! ist ja noch geiler! und einfacher!
Dank an den Meister

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige