Hallo zusammen,
ich habe ein Formular mit 9 Textboxen, in die ich Adressdaten eingebe (Anrede, Name, Zusatz, Zusatz 2, Straße, Zusatz, Ort, Zusatz, Land). Diese Werte werden in den Zellen A2 bis I2 eingetragen.
Soweit, so gut.
Nun kann es sein, dass einige Textboxen unausgefüllt bleiben, so bleibt bei der Datenübertragung eine Zelle leer. Wenn mein Empfänger beispielsweise keine Straße hätte, so bleibt mitten im Matrix eine Zelle leer.
Die Werte sollen alle hintereinander im Matrix stehen. So soll, bevor der Wert einer Textbox übertragen wird, immer im Bereich A2:I2 nach der ersten leeren Zelle gesucht und dort der Wert eingetragen werden.
Ich stelle mir das so vor:
Wert der Textbox1 in Zelle A1. Wenn Textbox1 einen leeren Wert hatte und A1 leer bleibt, soll dort der Wert der Textbox2 hinein usw. … .
Kann mir hier jemand den Code für ein Makro verraten?
Im Voraus vielen, vielen Dank!
Gruß
Christian
Warum Makro?
das, was Du willst lässt sich auch mit Formeln realisieren.
Zumindest, wenn ich das richtig verstehe.
Von daher würde ich Dir empfehlen von Makros abstand zu nehmen, solange es nicht anders geht.
Du musst nur eine Formel bauen, die Dir die „Datensatznummer“ anzeigt…
Also wenn Deine Werte in Spalte B in Zeilen 2 bis 15 stehen so:
(in Spalte A - Beispiel für Zelle A2)
=WENN(B1="";"";MAX(B$1:B1)+1)
das kann dann mit einem Sverweis leicht übertragen werden.
Falls Du mit Zeile 1 anfängst, dann brauchst Du für den ersten Datensatz eine andere Formel, weil sonst ein Zirkelbezug entstehen würde…
Grüße
Munich
Danke schon mal für die Hilfe, aber mit Formeln und Zahlen möchte ich nicht arbeiten, denn das ist bei Wörtern (wie Hamburg, Deutschland etc.) schlecht… . Am besten ist es, dass ich mein Makro direkt mit in den Code von dem UserForm einbauen kann, in das auch die Werte in die TextBoxen eingetragen werden.
Viele Grüße
Christian
Danke schon mal für die Hilfe, aber mit Formeln und Zahlen
möchte ich nicht arbeiten, denn das ist bei Wörtern (wie
Hamburg, Deutschland etc.) schlecht… .
falsch!
es wird nach meinem Vorschlag lediglich geprüft ob die Zelle leer ist. Der Inhalt ist ansonsten absolut egal!
Am besten ist es,
dass ich mein Makro direkt mit in den Code von dem UserForm
einbauen kann, in das auch die Werte in die TextBoxen
eingetragen werden.
Wenn nur Du es benutzt kannst Du diese Aussage treffen - das Problem hört sich aber eher nach Fremdnutzung an, und dann sind Makros keine gute Idee (Sicherheitsrichtlinien -> deaktivierte Makros)
ich stelle Dir hier ein Makro, das für mich ähnliches tut - nur räumt es für mich von links nach rechts auf…
So ähnlich müsstest Du es dann eben auch aufbauen…
Aber wie gesagt: Nimm lieber Formeln!
Sub aufraeumen()
Application.ScreenUpdating = False
i = 0
j = 0
For i = 0 To 14 Step 1
findeleer = Range("I1").Offset(0, i).Value
If findeleer = "" Then
For j = i + 1 To 14 Step 1
findenext = Range("I1").Offset(0, j).Value
If Not findenext = "" Then
' copy-part
Range("I2:I16").Offset(0, j).Select
Selection.Copy
Range("I2:I16").Offset(0, i).Select
ActiveSheet.Paste
Range("I2:I16").Offset(0, j).ClearContents
i = i + 1
End If
Next j
End If
Next i
Application.ScreenUpdating = True
End Sub
Wert der Textbox1 in Zelle A1. Wenn Textbox1 einen leeren Wert
hatte und A1 leer bleibt, soll dort der Wert der Textbox2
hinein usw. … .
Hi Christian,
Private Sub CommandButton1\_Click()
Dim T, Spa As Long
Range("A2:i2").ClearContents
For T = 1 To 9
If Controls("TextBox" & T) "" Then
Spa = Spa + 1
Cells(2, Spa) = Controls("TextBox" & T)
End If
Next T
End Sub
Gruß
Reinhard
Vielen Dank für die Hilfe, nur beim Ausführen kommt die Fehlermeldung, dass das Objekt nicht gefunden werden kann 
Habe ich vielleicht etwas vergessen??
Vielen, vielen Dank!
Gruß
Christian
Da hast du recht mit den Formeln…, aber ich dachte, wenn ich sowieso ein Makro habe, da ja generell erst mal die Werte aus den TextBoxen übertragen werden müssen, dann kann ich das gleich mit da einbinden… .
Habs nun erst mal mit Formel gelöst!
Vielen, vielen Dank!
Gruß
Christian
Vielen Dank für die Hilfe, nur beim Ausführen kommt die
Fehlermeldung, dass das Objekt nicht gefunden werden kann 
Habe ich vielleicht etwas vergessen??
Hi Christian,
ich ging davon aus du hast eine Userform mit 9 TextBoxen und einem „Übernahme“-CommandButton.
Bei Klick auf den CB werden die Werte in die Zellen geshrieben.
Gruß
Reinhard
Hallo Reinhard,
bisher sah das Makro so aus:
Private Sub CommandButton1_Click()
Unload Me
Range(„A1“) = ComboBox1.Value
Range(„B1“) = TextBox1.Value
Range(„C1“) = TextBox2.Value
Range(„D1“) = TextBox3.Value
Range(„E1“) = TextBox4.Value
Range(„F1“) = TextBox5.Value
Range(„G1“) = TextBox6.Value
Range(„H1“) = TextBox7.Value
Range(„I1“) = TextBox8.Value
End Sub
Das Makro von dir eingearbeitet klappt leider immer noch nicht, hab noch mal alles versucht, aber irgendwie klappts nicht 
Tausend Dank für die Hilfe hier!
Gruß
Christian
Hallo Christian,
Private Sub CommandButton1_Click()
Unload Me
Range(„A1“) = ComboBox1.Value
Range(„B1“) = TextBox1.Value
…
End Sub
das hat Fehlerfrei funktioniert? *staun* Ich hätte nie gewagt „unload me“ oberhalb eines Codes zu platzieren mit dem ich die UF auslesen will, sondern es immer unterhalb platziert.
Das Makro von dir eingearbeitet klappt leider immer noch
nicht, hab noch mal alles versucht, aber irgendwie klappts
nicht 
Ich hatte es 3-4mal getestet, keine Probleme.
Erstelle mal eine Beispieldatei, Daten braucht man ja nicht, und bastle da eine UF mit 1mal CB und einigen TBs, falls da mein Code nicht läuft, so lade mal die Datei hoch mittels FAQ:2861
Oder kannst ja auch eine Kopie der jetzigen Datei hochladen, alle Blattdaten kannst du ja löschen und brauchen tut man ja auch nur ein Tabellenblatt.
Gruß
Reinhard
Hallo Reinhard,
unter diesem Link ist jetzt mal die Ausgangssituation.
http://www.hostarea.de/server-09/September-29db392c1…
Könntest du nun einmal dein Makro einbringen??
Vielen, vielen Dank für deine Hilfe!!!
Gruß
Christian
unter diesem Link ist jetzt mal die Ausgangssituation.
http://www.hostarea.de/server-09/September-29db392c1…
Könntest du nun einmal dein Makro einbringen??
Hi Christian,
wenn du nur 8 Textboxen hast, gibts natürlich Fehler wenn der Code die 9te TB sucht.
Private Sub CommandButton1\_Click()
Dim T, Spa As Long
Range("A2:i2").ClearContents
Spa = 1
For T = 1 To 8
If Controls("TextBox" & T) "" Then
Spa = Spa + 1
Cells(2, Spa) = Controls("TextBox" & T)
End If
Next T
Range("A2") = ComboBox1
Unload UserForm1
End Sub
Gruß
Reinhard
Absolut Weltklasse!!! Vielen, vielen, herzlichen Dank!!!
Genauso habe ich mir das vorgestellt!!!
(Wo lernt man sowas bloß…?)
Gruß
Christian
Private Sub CommandButton1_Click()
Dim T, Spa As Long
Range(„A2:i2“).ClearContents
Spa = 1
For T = 1 To 8
If Controls(„TextBox“ & T) „“ Then
Spa = Spa + 1
Cells(2, Spa) = Controls(„TextBox“ & T)
End If
Next T
Range(„A2“) = ComboBox1
Unload UserForm1
End Sub
Hallo Reinhard
Ich bin ja schon unverschämt, wenn ich jetzt noch mit einem zusätzlichen Wunsch komme.
Wenn ich bei der ComboBox nichts auswähle, bleibt A2 leer. Die Werte aus den Textboxen füllen ja die Zeile erst von B2 bis maximal I2.
Und nun mein Wunsch: Das ganze so zu steuern, dass der Wert der ersten gefüllten Textbox in A2 geschrieben wird, falls die ComboBox „wertlos“ bleibt.
Wie müsste der Code dann aussehen?
Viele Grüsse von einem unverschämten Zürcher
Hallo Niclaus,
Wenn ich bei der ComboBox nichts auswähle, bleibt A2 leer.
Wie machst du das, „nix“ auszuwählen, wenn nur 3 „gefüllte“ Einträge auswählbar sind?
Und nun mein Wunsch: Das ganze so zu steuern, dass der Wert
der ersten gefüllten Textbox in A2 geschrieben wird, falls die
ComboBox „wertlos“ bleibt.
ungetestet:
Private Sub CommandButton1\_Click()
Dim T, Spa As Long
Range("A2:i2").ClearContents
If ComboBox1 "" Then
Range("A2") = ComboBox1
Spa = 1
End If
For T = 1 To 8
If Controls("TextBox" & T) "" Then
Spa = Spa + 1
Cells(2, Spa) = Controls("TextBox" & T)
End If
Next T
Unload UserForm1
End Sub
PS: Was mich an dieser Beitragsfolge schon lange beschäftigt, wofür braucht man denn diesen Unsinn neuen Aspekt der Tabellenstrukturierung?
Ich habe eine Überschriftenzeile:
Anrede Vorname nachname zusatz1 Ort PLZ Telefon Schuhgröße
Nun kann man in einer UF in 8 Textboxen zu jedem Spaltentitel einen Wert eingeben.
Nun kenne ich nur Tel.-Nr und Schuhgröße, was habe ich/du dann bitteschön nach Durchlauf meines Codes von dem da:
Anrede Vorname nachname zusatz1 Ort PLZ Telefon Schuhgröße
4711 46
Dies wäre für mich korrekt:
Anrede Vorname nachname zusatz1 Ort PLZ Telefon Schuhgröße
4711 46
PS2: dankeschön liebes w-w-w Team für die vielen Leerzeilen, mannomann habt ihr den Mistbug immer noch nicht beseitigt *fluch*
Gruß
Reinhard