Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
VBA TextBox Daten in Tabellenbereich speichern
12.06.2018 08:03:31
CatSpawn
Guten Morgen!
Vielleicht kann mir jemand bei diesem Problem helfen. Habe schon viele Foreneinträge durchgelesen, aber ich kann keine wirkliche Lösung für mein Problem anwenden.
Ich muss dazu sagen, dass ich auch erst vor kurzem in Ecxel eingestiegen bin und auch erst seit letzter Woche mit VBA rum probiere.
Eine kleine Lieferantenbewertung soll simuliert werden.
Jetzt habe ich zu Beginn auf einem Arbeitsblatt ein Formular erstellt mit 62 Textboxen.
Ich habe es auch schon geschafft dasss ich diese Werte in ein Arbeitsblatt einfüge, aber blöderweise habe ich dieses Arbeitsblatt auch später für andere Hilfsdaten zum auslagern benutzt. Das bedeutet ich muss den Bereich für die Lieferanten auf 10 begrenzen. (Tabellenbereich: A2:BJ11)
Man hätte es besser anlegen können, habe ich aber erst im Nachhinein gemerkt. Jetzt sind natürlich schon alle anderen Zellen mit anderen Arbeitsblättern verknüpft.
Und bestimmt kann man den Code auch noch vereinfachen, aber ich bin ja noch am Anfang. :-)
Hier ein Auszug aus meinem Code:
...
'Bei Klick auf den Speichern-Button werden die Inhalte in die Tabelle übertragen und das Fenster geschlossen!
Private Sub Button_Speichern_Click()
'Erste freie Zeile im Arbeitsblatt Datensatz ausfindig machen
Dim last As Integer
last = Worksheets("Datensatz").Cells(Rows.Count, 1).End(xlUp).Row + 1
'Name des Lieferanten wird in Spalte 1 eingetragen aus Textbox_Name
Worksheets("Datensatz").Cells(last, 1).Value = TextBox_Name
'Durch Lieferant erzielte Roherträge werden in Spalte 2 eingetragen aus TextBox_Rohertraege
Worksheets("Datensatz").Cells(last, 2).Value = CDec(UserFormLieferanten.TextBox_Rohertraege.Value)
'Lieferteil und Anzahl werden in die nächsten Spalten eingetragen
Worksheets("Datensatz").Cells(last, 3).Value = CDec(UserFormLieferanten.TextBox_Lieferteil1.Value)
Worksheets("Datensatz").Cells(last, 4).Value = CDec(UserFormLieferanten.TextBox_Lieferteil2.Value)
Worksheets("Datensatz").Cells(last, 5).Value = CDec(UserFormLieferanten.TextBox_Lieferteil3.Value)
Worksheets("Datensatz").Cells(last, 6).Value = CDec(UserFormLieferanten.TextBox_Lieferteil4.Value)
...
Er müsste ja theoretisch nur für den festgelegten Tabellenbereich umgeändert werden.
Und es sollte ein Hinweis erscheinen, dass keine Lieferanten mehr angenommen werden weil der Bereich voll ist.
Ich hoffe es kann mir jemand weiter helfen...
LG

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

Betreff
Datum
Anwender
Anzeige
AW: VBA TextBox Daten in Tabellenbereich speichern
12.06.2018 11:14:03
Robert
Hall CatSpawn,
ändere den Code wie folgt. Dabei wird geprüft, wie viele Lieferanten-Namen im Bereich A2:A11 bereits stehen. Sind es bereits 10 Lieferanten, wird das Makro mit einer entsprechenden Meldung abgebrochen, ansonsten geht es normal weiter.
'Erste freie Zeile bis zur Zeile 11 im Arbeitsblatt Datensatz  _
ausfindig machen
Dim last As Integer
last = WorksheetFunction.CountA (Worksheets("Datensatz").Range("A2:A11") _
) + 1
If last > 11 then
MsgBox "Es sind bereits 10 Lieferanten erfasst, Makro wird abgebrochen", vbCritical, " _
Maximale Lieferantenzahl erreicht"
Exit Sub
End If
' und hier dann weiter mit Deinem Code
Gruß
Robert
Anzeige
AW: VBA TextBox Daten in Tabellenbereich speichern
12.06.2018 14:35:19
CatSpawn
Danke schon einmal für die Hilfe.
Habe den Code abgeändert. Das Makro startet die Eingabemaske aber bei Klicken auf Speichern kommt ein Laufzeitfehler 13 : Typen unverträglich!
Beim Debuggen markiert er folgende Zeile gelb:
Worksheets("Datensatz").Cells(last, 2).Value = CDec(UserFormLieferanten.TextBox_Rohertraege.Value)
Weiß aber nicht warum!?
AW: VBA TextBox Daten in Tabellenbereich speichern
12.06.2018 15:43:15
CatSpawn
Also ich habe es jetzt nochmal probiert. Aschneinend hatte ich einen Fehler eingebaut. Jetzt bricht die Userform nicht mehr ab, aber wenn ich einen neuen Lieferanten hinzufüge wird der letzte Lieferant in 11 Zeile einfach immer überschrieben. Es kommt kein Hinweis dass keine mehr hinzugefügt werden können.
Anzeige
AW: VBA TextBox Daten in Tabellenbereich speichern
12.06.2018 15:54:14
CatSpawn
OK habe das größer-Zeichen durch ein größergleich-Zeichen in der Schleife ersetzt. Jetzt gehts mit dem Hinweis. Wenn ich jedoch die Lieferantendaten wieder komplett leere und eine neue Lieferantenliste erstellen möchte, löscht er mir die erste Tabellenzeile im "Datensatz" wo eigentlich Name, Lieferteil 1, Lieferteil 2, etc. steht und löscht immer wieder den letzten Eintrag, ersetzt durch einen neuen, wenn ich auf speichern klicke!
AW: VBA TextBox Daten in Tabellenbereich speichern
12.06.2018 17:10:15
Robert
Hallo,
da ich nicht die ganzen Textboxen nachbauen wollte, habe ich den Code nicht getestet. Daher der Fehler. Das Überschreiben der Daten kannst Du wie folgt korrigieren:
Wenn Du in A1 was stehen hast, ändere nachstehende Zeile wie folgt:
last = WorksheetFunction.CountA(Worksheets("Datensatz").Range("A1:A11")) + 1
steht in A1 nichts, dann bitte so:
last = WorksheetFunction.CountA(Worksheets("Datensatz").Range("A1:A11")) + 2
Die If-Bedingung muss aber wieder If last > 11 Then lauten.
Gruß
Robert
Anzeige
AW: VBA TextBox Daten in Tabellenbereich speichern
12.06.2018 16:33:28
CatSpawn
Ich nochmal... so ich glaube ich habe es. Es muss + 2 heißen am Ende der Zeile, da er ja beim Eintragen in der ersten Zeile mit dem Zählen beginnt. Wenn ich nur 1 hinzuadddiere überschreibt er sonst die Zeile die er durch CountA gezählt hat jedesmal!
Vielen Dank aber nochmal für die Hilfe!!!!!

329 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige