Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1944to1948
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

user form einige Fragen

user form einige Fragen
01.09.2023 11:07:51
Werner
Hallo zusammen,

wir haben diesen Code und leider habe ich vier Fragen:

Frage 1: ich möchte gerne das immer eine Zahl mit zwei stellen nach Komma eingetragen werden, bei :
.Cells(28, 4) = Txt_Pos_Menge1

Frage 2: wenn in der UserForm ab der vierten Position nichts mehr eingetragen wird kommt ein Fehler das nix drin steht. Kann man das ignorrieren ?, da kein weiter eintrag erfolgt.

Frage 3:
wie möchte im Tabellenblatt Kunden in der Zweiten spalte die Anrede ( Herr/ Frau) einfügen, leider kommt dann im User Form bei Combobox dann auch die Anrede angezeigt aber das soll nicht sein.( Combobox1) sondern Kundenname und Vorname
Frage 4 :
ich möchte bei der Kundenname das es anzeigt : Kundenname, Vorname und Baustellenort


https://www.herber.de/bbs/user/162636.xlsm

So viele Fragen und ich hoffe mir kann jemand helfen.
Lieben Dank

36
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: user form einige Fragen
01.09.2023 11:35:52
Alwin Weisangler
Hallo Werner,

so:


Private Sub Txt_Pos_Menge1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If IsNumeric(Txt_Pos_Menge1) Then
Txt_Pos_Menge1 = Format(CDbl(Txt_Pos_Menge1), "0.00#,##")
End If
End Sub


Gruß Uwe
user form einige Fragen
01.09.2023 12:20:09
Alwin Weisangler
Hallo Werner,

entweder so, oder man kann auch eine kleine Funktion draus schnitzen. Bleibt aber trotzdem der Aufruf der Funktion über. Man spart nicht viel.
Leider kann man auch mit einer Klasse keine Enter oder Exit Ereignisse abfragen.

Gruß Uwe
user form einige Fragen
01.09.2023 12:24:44
Oberschlumpf
Hi Werner,

auch ich hab erst mal nur ne Lösung für Frage 1
hier, probier mal
https://www.herber.de/bbs/user/162640.xlsm

Nein, du musst nicht 16x den Code für die TxtBoxen für Menge wiederholen. (du hast in Frage 1 aber auch NUR für Txt_Pos_Menge1 gefragt und nicht erwähnt, dass das für alle TxtBoxen-Menge gelten soll!)
Ich hab das mit einer Funktion gelöst.

Klick mal auf den Button und gib im Userform(ular) n paar Einträge ein.
Klick auf den Anlegen-Button.

Nun siehst du in Tabelle die richtig eingetragenen Werte - zumindest bei mir funktionierts.
Das ist bis jetzt noch nix Halbes + nix Ganzes....aber grundsätzlich sollte Frage 1 beantwortet sein.

Deine anderen Fragen verstehe ich nicht, weil, sorry, deine Deutsch-Grammatik ist so schlecht...und dann noch viele Tippfehler.
Vielleicht überarbeitest du Frage 2 bis Frage 4 noch mal...

Konnte ich denn für Frage 1 schon mal helfen?

Ciao
Thorsten

Anzeige
user form einige Fragen
01.09.2023 13:20:29
daniel
HI

Frage 1 und 2
übergebe den Textboxinhalt einfach mit Cells(...).FormulaLocal = TextboxXXX.Text
damit werden Zahlen, wenn du sie "deutsch" in die Textbox geschrieben hast (Komma als Dezimalzeichen) korrekt und als Zahl in die Zelle übernommen, ohne das du da mit CDbl oder CCurr was umwandeln musst. Dann hast du auch keine Probleme mit leeren Textboxen oder wenn doch mal ein Text im Textfeld steht und keine Zahl
im Beleg-Blatt musst du dann einfach nur das Zahlenformat der Zellen entsprechend einstellen, also Anzahl Nachkommastellen und ggf Währung

du könntest aber auch die Textboxen direkt mit den jeweiligen Zellen verknüpfen, in dem du die Zelladresse in der Eigenschaft ControlSource einträgst.
dann brauchst du dafür nichts programmieren. Auch brauchst du dann nicht die Inhalte der Textboxen leeren wenn du eine neue Rechung schreiben willst, es reicht wenn du die Zellen im Tabellenblatt leerst.
Die Inhalte werden dann aber sofort übernommen, wenn du die Textbox verlässt und nicht erst bei Button-Klick


Frage 3 und 4
wenn deine Tabelle für die Combobox zusätzliche Spalten bekommst, dann musst du das in den Eigenschaften der Combobox berücksichtigen.
Welche Spalten im DropDown der Combobox angezeigt werden legst du mit der Eigenschaft ColumnWidth fest:
"0 Pt" heitß, die Spalte wird ausgeblendet. Andere Zahlen stehen dann für die Breite, Dies musst du dann anpassen.
0 Pt;49,95 Pt;49,95 Pt;0 Pt;0 Pt;0 Pt;0 Pt;0 Pt

welcher Text dann in der Eingabezeile angezeigt wird, regelst du mit der Eigenschaft TextColumn. Hier musst du die Nummer der Spalte angeben, die in der Textbox angezeigt werden soll, bei -1 wird glaube ich der Wert aus der BoundColumn (Spalte des Rückgabewertes für .Value oder .ControlsSource.



Gruß Daniel
Anzeige
user form einige Fragen
01.09.2023 15:16:09
Zwenn
Hallo Werner,

ich möchte Dir nicht "in die Suppe spucken", aber ich habe mir Dein Projekt angesehen und habe einige Anmerkungen, bzw. Hinweise dazu. Kannst Du natürlich einfach ignorieren, wenn Du sicher bist zu wissen was Du machst, bzw. brauchst. Zumal Du noch in der Entwicklungsphase bist. Aber eine Checkliste kann nie schaden.

Ich bin kein Wirtschaftsmensch, aber außer über einige technische Dinge, bzw. den Aufbau Deiner Tabellen, bin ich über die 10 Bestandteile gestolpert, die jede Rechnung (laut Quelle ab 250 €) enthalten muss. Wie gesagt, ich weiß Du bist noch in der Entwicklungsphase und hast die bisher vermutlich nur noch nicht alle untergebracht. Ich gehe meine Anmerkungen anhand dieser 10 Bestandteile durch, weil sie eine gute Gliederung ergeben und damit automatisch "alles an seinem Platz ist".
Quelle für die 10 Bestandteile, auf die ich mich im Folgenden beziehe: https://www.easybill.de/ratgeber/10-bestandteile-einer-rechnung

1. Der vollständige Name sowie die Anschrift des Unternehmens (Rechnungsadresse)
Fehlt in Deinem bisherigen Entwurf, ist aber genug Platz für vorhanden.

2. Steuernummer oder die Umsatzsteueridentifikationsnummer (USt-IdNr.)
Fehlt bisher

3. Vollständiger Name und Anschrift des Kunden
Fehlt in Deinem bisherigen Entwurf, ist aber genug Platz für vorhanden.

4. Ausstellungsdatum / Rechnungsdatum
Ist vorhanden.

5. Fortlaufende Rechnungsnummer
Ist vorhanden, ich bin nur nicht sicher, ob die für Folgerechnungen wirklich hochgezählt wird.

6. Zeitpunkt der Lieferung / Leistung
Ist vorhanden.

7. Menge und die Art der Lieferung bzw. der Umfang und die Art der Leistung
Ist vorhanden, aber die Art der Integration zur Aufnahme der Punkte im Makro finde ich nicht gut gelöst.
Du hast fix maximal 16 Positionen über Textboxen vorgesehen. Ich würde eine Zeile mit Textboxen für die Eingabe jeder Position anlegen und dann jede Position mit einem Button in eine Listbox übernehmen, die Du darunter anordnest. Dadurch ist die Menge der Positionen egal. Da bei Übernehme der Werte in die Tabelle nun die Listboxeinträge übernommen werden, bist Du automatisch das Problem mit der Prüfung los, ob die nächste Positon noch Werte enthält.
An dieser Stelle kann man schon im Hinterkopf haben, dass sich evtl. mehr als eine Rechnungsseite ergibt. Prinzipiel ist das kein Problem, Du musst ggf. nur überlegen, wie Seite 2 und weitere aufgebaut sein sollen. Der Seitenumbruch erfolgt bei entsprechend vielen Positionen.

8. Entgelt für die Lieferung / Leistung in Netto
Du hast ein Entgeld eingetragen, es ist aber nicht ersichtlich ob netto oder brutto.

9. Der auf das Nettoentgelt entfallende Umsatzsteuersatz
Der Steuersatz fehlt noch.

10. Der auf das Nettoentgelt entfallende Umsatzsteuerbetrag
Auch dieser Betrag fehlt noch. Zusätzlich würde ich immer auch den Gesamtbetrag ausweisen.

Weitere Anmerkungen zu den Tabellen
Ok, hat sich doch nicht alles so in die 10 Punkte eingefügt, wie ich dachte.

In der Tabelle alle Rechnungen sind nur wenige Bestandteile der Rechnungen vorhanden. Die eigentlichen Rechnungen archivierst Du also gar nicht. Es handelt sich mehr um eine Kosteneingangskontrolle. Das ist auch völlig ok und vor allem wichtig. Ich frage mich aber, ob Du die ganzen Rechnungsdaten jeweils mit dem Erstellen einer neuen Rechnung verwerfen willst. Ich habe da z.B. im Hinterkopf, was ist, wenn eine Rechnung storniert und neu ausgestellt werden muss? Dann fängst Du mit der von vorne an, statt die bestehende zu kopieren und nur zu bearbeiten. Allerdings ist bisher auch keine Bearbeitung von Datensätzen vorgesehen, wenn die UserForm geschlossen wurde. Ich weiß auch nicht, ob Du Rechnungen revisionssicher aufbewaren musst. Dann ist eine Excellösung vermutlich eher nicht geeignet.

In der Tabelle Kunden steht in der letzten Spalte die Baustelle. Die ist dort in jedem Fall falsch. Was passiert, wenn Du für einen Bestandskunden auf einer anderen Baustelle arbeitest? Du könntest keine zweite Baustelle anlegen, sondern müsstest einen weiteren Datensatz für den gleichen Kunden anlegen. Absolut tödlich, da doppelte Datenhaltung. Die Baustelle kannst Du aber mit in die Rechnungstabelle aufnehmen. Der Bezug zum Kundendatensatz ist dort ja bereits über die Kundennummer eindeutig hergestellt.

In der Tabelle Beleg hast Du "unendlich viele" Spalten genutzt, von denen Du für unterschiedliche Einträge viele davon zusammenfasst. Gibt es dafür einen bestimmten Grund? Denn das verkompliziert das Handling der Tabelle ingesamt erheblich.

Das waren meine Gedanken dazu. Vielleicht kannst Du damit etwas anfangen, vielleicht auch nicht :-)

Viele Grüße,

Zwenn
Anzeige
Bitte unbedingt zur Kenntnis nehmen
01.09.2023 16:06:22
Zwenn
Hallo Werner,

ich bin es noch einmal. In einem Nebensatz meines vorherigen Postings habe ich die Revisionssicherheit von Rechnungen erwähnt. Aus Neugierde habe ich nun noch einmal nachgesehen. Laut Gesetzgeber ist inzwischen jeder Gewerbetreibende verpflichtet seine Rechnungen und weiteres GoBD konform zu archivieren. Mit Word und Excel ist das fast nicht möglich.

Falls Du (auch) nicht weißt, was es damit auf sich hat, lies Dir mal die unten verlinkte Seite durch. Finde ich mindestens so informativ, dass einige Alarmleuchten aufblinken. Also "irgendwie" funktionert es, aber was genau zu beachten ist und wie zu machen ist, da würde ich mich auf jeden Fall beraten lassen, wenn ich Rechnungen stellen müsste. Vielleicht ist es einfacher sich eine entsprechende Softwarelösung zu kaufen, mit der Rechnungen und Kunden erstellt und verwaltet werden können.
https://www.kruse-lippert.de/ordnungsgemaesse-rechnungserstellung-mit-word-und-excel-darauf-muessen-sie-achten/

Viele Grüße,

Zwenn
Anzeige
Bitte unbedingt zur Kenntnis nehmen
01.09.2023 20:22:31
Werner
Hallo Zwenn,

Die 10 halte ich schon ein, in meiner original Excel Vorlage ist alles vorhanden.

Ich habe noch einen Button der die Datei in ein PDF umwandeln.

Danke für die vielen Informationen
Bitte unbedingt zur Kenntnis nehmen
02.09.2023 07:56:36
Oberschlumpf
Hi Werner,

du schreibst, im Original ist alles bzgl der von Zwenn erwähnten 10 Punkte enthalten.

Gilt das auch für Punkt 7?
Hast du im Original also auch nur 3 Textboxen für Artikel, Menge + Preis und 1 Listbox für die temporäre Übernahme aus den Textboxen?
Wenn ja, wieso zeigst du uns dann ein Userform mit 16 x 3 Textboxen?

Oder gibt es auch im Original 16 x 3 Textboxen?

Ich möchte wissen:
- willst/musst du weiterhin mit 16 x 3 Textboxen arbeiten?
- oder ist es auch möglich, den Vorschlag von Zwenn (3 Textboxen + 1 Listbox) zu übernehmen?

Ciao
Thorsten
Anzeige
Bitte unbedingt zur Kenntnis nehmen
02.09.2023 08:26:28
Oberschlumpf
boah, Werner!!!

Was machst du denn nur????

Ich seh mir gerad in deiner Bsp-Datei diesen Code-Teil genauer an:



.Cells(28, 45) = CCur(Txt_Pos_Preis1)
.Cells(29, 45) = CCur(Txt_Pos_Preis2)
.Cells(30, 45) = CCur(Txt_Pos_Preis3)
.Cells(31, 45) = CCur(Txt_Pos_Preis4)
.Cells(32, 45) = CCur(Txt_Pos_Preis5)
.Cells(28, 45) = CCur(Txt_Pos_Preis1)
.Cells(29, 45) = CCur(Txt_Pos_Preis2)
.Cells(30, 45) = CCur(Txt_Pos_Preis3)
.Cells(31, 45) = CCur(Txt_Pos_Preis4)
.Cells(32, 45) = CCur(Txt_Pos_Preis5)
.Cells(28, 45) = CCur(Txt_Pos_Preis1)
.Cells(29, 45) = CCur(Txt_Pos_Preis2)
.Cells(30, 45) = CCur(Txt_Pos_Preis3)
.Cells(31, 45) = CCur(Txt_Pos_Preis4)
.Cells(32, 45) = CCur(Txt_Pos_Preis5)
.Cells(32, 45) = CCur(Txt_Pos_Preis5)

Finde den Fehler! JETZT!

a) wieso überträgst du Daten nur für 5 Zeilen in die Tabelle???
b) wieso überträgst du die Daten nicht für alle 16 Positionen in die Tabelle???
c) vor allem aber - wieso wiederholst du den Code DREI MAL????

Verstehe ich bis jetzt noch nicht - bin auf deine Antwort neugierig.

Ciao
Thorsten
Anzeige
Bitte unbedingt zur Kenntnis nehmen
02.09.2023 11:18:05
Werner
Hallo Thorsten,

hier habe ich mal meine Original Version reingestellt.
Ja du hast Recht, wenn ich mehrere Seiten hätte, wäre ich am A.....
Ich habe mich für die 16 Pos. entschieden, da ich in VBA nicht so den Plan habe. Natürlich wäre es schöner, wenn ich da flexibler mit den Zeilen wäre, wüsste aber nicht wie das alles funktioniert. Momentan trage ich alles ohne VBA ein. Mit Userform würde das alles natürlich vereinfachen.

Ich komme ja nicht einmal hin, das wenn ich in den User Form reingehe auf Kundenname auswähle und ich den Namen , den Baustellenort sehe.
Der Hintergrund ist, das der Name mehrmals vorkommt, aber der Baustellenort wo anderst ist. Jeder Baustellenort bekommt eine andere Kundennummer, z.b. hat ein Hausverwalter mehrere Objekte , muss ich aber die Rechnung immer an den Hausverwalter schicken mit der Adresse von der Baustellenadresse, wegen der zu Ordnung.

Zu deine Fragen;


a) wieso überträgst du Daten nur für 5 Zeilen in die Tabelle??? -> war leider ein Kopie Fehler und vergessen es zu ändern
b) wieso überträgst du die Daten nicht für alle 16 Positionen in die Tabelle??? --> zu unerfahren. flexiblere Zeilen wäre am besten
c) vor allem aber - wieso wiederholst du den Code DREI MAL???? -> war leider ein Kopie Fehler und vergessen es zu ändern

Ich hoffe, das du mir noch ein paar Tipps geben kannst, damit ich es Ordentlich hinbekomme.
Ich wäre natürlich für eine andere Lösung sehr sehr offen.


https://www.herber.de/bbs/user/162655.xlsm


Danke für ALLES

Anzeige
Bitte unbedingt zur Kenntnis nehmen
02.09.2023 12:40:45
Oberschlumpf
Hi,

ich versuch mein Glück.
Kann aber dauern, weil a) viel geändert werden muss, b) ich jetzt erst mal Hunger hab.

Ciao erst mal
Thorsten
Bitte unbedingt zur Kenntnis nehmen
02.09.2023 14:01:12
Werner
Hallo Thorsten,

Also das Essen geht natürlich vor :)

Besten Dank und bin voll gespannt, was du zauberst:-)

Danke dir für alles
Bitte unbedingt zur Kenntnis nehmen
06.09.2023 06:53:38
Oberschlumpf
Moin Werner,

sorry, hoffentlich schaff ich es noch, bevor dein Beitrag im Archiv verschwindet.
Ich denk, heute werd ich fertig.

Ciao erst mal
Thorsten
Bitte unbedingt zur Kenntnis nehmen
06.09.2023 13:34:10
Werner
Hey Thorsten:),

Ich dachte du hast mich vergessen. Cool danke das du da dran bleibst. Danke dir .
Anzeige
ich habe fertig...endlich
06.09.2023 19:27:34
Oberschlumpf
Hi Werner,

bevor ich mit Erklärung beginne, erst mal diese Info:

Es kann durchaus sein, dass dieser Beitrag (auch mit meiner jetzigen Antwort) im Archiv "verschwindet", bevor du fertig damit bist, all meine Erklärungen zu verstehen.
Deshalb speicher dir unbedingt diesen Link https://www.herber.de/forum/archiv/1944to1948/1944807_user_form_einige_Fragen.html als Favorit in deinem WEB-Browser!
Bei dem gezeigten Link handelt es sich um deinen Beitrag, der schon im Archiv aufrufbar ist - und zwar immer.

So, geht los...seuffzzz

Deine Datei umzubauen hat echt viel Arbeit, Zeit, Nerven gekostet.
Aber hier, probier mal
https://www.herber.de/bbs/user/162700.xlsm

Ich habe, bis auf 3, alle anderen Textboxen + dazugehörigen Labels gelöscht. - ach so, neben den nun nur noch 3 Textboxen habe ich einen extra Button, Beschriftung "Eintragen" hinzugefügt; zu dem Button später mehr

Anstelle der zu vielen Textboxen habe ich eine Listbox hinzugefügt.

Hier mal eine Anleitung, wie du das neue Userform(ular) anwenden kannst:

1. Klick im Blatt "Beleg" auf den Button "Rechnung schreiben"
Es öffnet sich das neue Userform - schau es dir ruhig erst mal in Ruhe an


2. Klick als erstes gleich mal auf den Button "anlegen" ganz unten links

Beim Klick dieses Buttons wird - immer zuerst - geprüft, ob alle Textfelder, deren Inhalte in das Blatt "Beleg" übertragen sind, auch einen Wert enthalten.
Dein 1. Klick "reagiert" mit Hinweis "Nicht alle Datenfelder sind ausgefüllt." - nach Bestätigung der MsgBox wird automatisch das erste Control ohne Inhalt, hier die ComboBox, markiert, so dass du nur noch was auswählen müsstest, ohne dass extra du die Combobox erst mal per Hand auswählst.

Jetzt klapp die ComboBox mal auf.
Ganz nach Wunsch wird in der Auswahlliste nun Nachname Vorname + Baustellenort angezeigt.

So, wähl mal in der ComboBox einen beliebigen Eintrag aus.
Du siehst, nach Auswahl aus der Aufklapp-Liste ist in der ComboBox nur noch der Nachname zu sehen.
Das liegt daran, weil in VBA-ComboBoxen immer der Wert von nur einer der Spalten aus der Aufklapp-Liste angezeigt werden kann.
Das macht aber nix, weil es für den Vornamen eine eigene Textbox gibt.

Wie du siehst, sind nun schon mehrere Textboxen automatisch ausgefüllt - im oberen Bereich fehlt nur noch der Eintrag für's Lieferdatum.
(wobei ich die Textbox für Lieferdatum nicht verstehe. Du hast diese zwar in deiner letzten Bsp-Datei selbst schon im Userform eingetragen, aber nirgendwo im Code wird das Lieferdatum verwendet)


3. Klick doch jetzt noch mal auf den Button "anlegen" ganz unten links
Nun wird wieder geprüft, ob alle Pflichtfelder einen Wert enthalten.
Und siehe da! Der Code erkennt, dass das Feld für Lieferdatum noch leer ist - und markiert dieses Feld auch automatisch - sobald du die Msgbox geschlossen hast.
Trag auch fürs Lieferdatum einen Wert ein


4. Jetzt klick in die Textbox "Bezeichnung"

5. Trag einen passenden Text ein

6. Drück auf der Tastatur auf die Enter-Taste
Oh, schön, es wird automatisch die Textbox "Menge" aktiviert, und du kannst sofort den nächsten, passenden Wert eintragen

7. Gib also in "Menge" den richtigen Wert ein und drück wieder auf die Enter-Taste
Auch jetzt "springt" der Text-Cursor automatisch in die nächste TextBox "Einzelpreis".

8. Gib in "Einzelpreis" einen Wert ein und drück wieder auf die Enter-Taste
Jetzt wird automatisch der Button "Eintragen" aktiviert, von dem ich schon am Anfang geschrieben hatte.

B e v o r du mit Enter- oder Maustaste den Button "Eintragen" betätigst, änder doch noch mal den Eintrag in "Einzelpreis" - gib mal in "Einzelpreis" irgdeinen Text ein

Und drück oder klicke erst jetzt auf den Button "Eintragen"


9. Auch mit Ausführen des Buttons "Eintragen" wird zuerst geprüft, ob die Werte in den 3 TextBoxen sinnvoll sind, denn...
- in "Bezeichnung" können sowohl Text als auch Zahlen stehen; aber das Feld DARF NICHT leer sein
- in "Menge" und in "Einzelpreis" MÜSSEN Zahlen eingegeben werden, Texte SIND NICHT ERLAUBT

So, da du ja (hoffentlich :-) ) in Einzelpreis einen Text eingetragen hattest, ...
- wirst du genau darüber informiert, dass nur Zahleneingabe erlaubt ist
- der falsche Textinhalt wird gelöscht
- die Textbox "Einzelpreis" wird wieder automatisch aktiviert, so dass du nun nur noch den richtigen Zahlenwert eintragen musst


10. Ein erneuter Klick auf den Button "Eintragen" prüft wieder auf sinnvole Eingaben, stellt fest, dass alles korrekt ist, und überträgt die TextBox-Einträge mit der Positions-Nummer 001 in die Listbox

Die Einträge in den Textboxen werden gelöscht, und es wird wieder automatisch die TextBox "Bezeichnung" aktiviert.
Du kannst also gleich für den nächsten Artikel alle Texte + Werte eintragen.
Wenn die Werte korrekt sind, überträgt ein erneuter Klick auf den Button "Eintragen" wieder alle Textbox-Einträge mit Positions-Nummer 002 in die nächtste Zeile der ListBox ein.

So, die Schritte 9. und 10. kannst nun so lange wiederholen, bis alle Artikel eingetragen sind; die Positions-Nummer wird immer automatisch um 1 erhöht.


11. ERST JETZT klickst du auf den Button "anlegen"

a) es wird weiterhin zuerst geprüft, ob alle Felder Einträge haben
b) Jetzt erscheint eine MsgBox mit Ja/Nein-Button - es wird beschrieben, was mit Klick auf JA passieren wird - die Msgbox wartet auf deinen Klick auf JA oder NEIN

NEIN = die MsgBox wird geschlossen, sonst passiert nix weiter

JA = ...
- zuerst werden die Stammdaten wie Name, Adresse, Kd-Nr, Rechn.nr usw mit den entsprechenden Daten aus dem Userform ausgetauscht
- dann werden alle alten Datenzeilen im Blatt "Beleg" gelöscht
- nun werden die neuen Datenzeilen aus der ListBox in das Blatt "Beleg" übertragen
- das Userform wird geschlossen, und du siehst das blatt "Beleg" mit allen neuen Daten

YEAHHH!!!

Werner, Werner!!!
Soooo viel Arbeit - vor allem diese vielen verbundenen Zellen!

Ach so...noch was Wichtiges.
Im Userform und natürlich auch im Blatt "Beleg" gibt es 2x Datumseinträge, nämlich das Rechnungsdatum und das Lieferdatum (ok, Lieferdatum hast du noch nich in "Beleg" in Verwendung), aber egal, es sind zwei Datumsfelder.

Im Userform verwendest du dafür einfach nur Textfelder...
- hier kann aber die Eingabe zu vielen Tipp-, Format- oder sonstigen Fehlern führen
- besser wäre, so denke ich, wenn sich bei Anklicken von Rechnungs- oder auch Lieferdatum ein weiteres Userform öffnet, welches aussieht wie ein Kalender, z Bsp so, oder ähnlich:

Userbild

- hier wählst du nach Wunsch Tag/Monat/Jahr aus, klickst auf OK, und das Datum wird im richtigen Format ins jeweilige Textfeld eingetragen (Eingaben per Hand nicht mehr möglich)

JETZT KOMMT MEIN ABER! :-)))

a) ich habe die Datums-Textfelder NICHT überwacht, ob ein richtiges Datum eingetragen wurde, weil es da einiges an Kontrolle benötigt.
b) ich habe nicht, und ich werde auch nicht :-) ein zweites Userform erstellen, das ausseht wie ein Kalender, weil allein nur das Designen, also welche ComboBox,TextBox,Label soll wohin, dauert sehr lange...wenn, wie im Bild gezeigt, die Monate überlappend dargestellt werden sollen, benötigt man allein nur für die Tage 42 einzelne Button + 7 Button für die Kalenderwochen!

Wenn du a) möchtest, und das nicht allein hinbekommst, erstell bitte einen neuen Beitrag.
Wenn du b) möchtest, und das nicht allein hinbekommst, erstell bitte einen neuen Beitrag.

Sooo, puhhhh!! Nur dafür, dass ich all das hier geschrieben habe, brauchte ich über 1 Stunde.

Nur etwas noch:
Natürlich möchte ich wissen, ob allein nur die Bsp-Datei nach meiner Anleitung 1. bis 11. auch bei dir funktioniert - eigentlich...erwarte...ich von dir ein "Ja, funktioniert", da die Bsp-Datei ja auch bei mir funktioniert.

Sollte aber, wider erwarten, schon nur mit der Bsp-Datei etwas nicht funktionieren, kannst du mich natürlich weiter fragen.
(ich würd aber empfehlen, nicht mehr in diesem Beitrag zu antworten, weil er ja bald im Archiv verschwindet - erstell also auch dann einen neuen Beitrag, wenn du schon mit der Bsp-Datei Probleme hast.)

Aber ich bitte dich, alle Probleme, die sich vielleicht ergeben, wenn du versuchst, meinen Code aus der Bsp-Datei in deine Original-Datei zu übertragen und anzupassen, auch in neuen Beiträgen zu stellen, aber bitte nicht an mich direkt zu "adressieren".

Genau so bitte ich dich, für ganz neue Ideen für deine Datei ebenfalls neue Beiträge für die Allgemeinheit zu erstellen.
Für jeden neuen Beitrag empfehle ich dir, immer meine Bsp-Datei per Upload zur Verfügung zu stellen.

Wieso ich "neue Fragen" nicht mehr beantworten möchte? Sorry, Werner, aber das, was ich hier alles gemacht habe, war sehr viel...ich brauch mal Ruhe.

Konnte ich denn helfen?

Ciao
Thorsten
Anzeige
ich habe fertig...endlich
06.09.2023 20:55:10
Werner
Hallo Thorsten,

erst einmal 10000000000 mal Dankeschön für deine Hilfe.
Es sieht echt Mega aus. Ich habe natürlich viele Belege schon getestet. Das einzige was mir nur aufgefallen ist, dass die Zeilenhöhen immer kleiner / teilweise so klein das man sie nicht sieht, aber diese kann ich ja manuell immer anpassen. Denke mal da wird es keine Idee geben.

Danke Thorsten und ich würde dich drücken drücken drücken :-)

Liebe Grüße Werner
ich habe fertig...endlich
07.09.2023 00:35:16
Oberschlumpf
Hi Werner,

schau ich mir morgen mal an mit der Zeilenhöhe.

Ciao
Thorsten
Zeilenhöhe ändern = so
07.09.2023 07:14:03
Oberschlumpf
Moin Werner,

so, jetzt bin ich nich mehr so ko wie gestern und kann nun deutlicher sagen, dass ich mich natürlich freue, wenn ich dir schon mal helfen konnte.

Und was die Zeilenhöhe betrifft, tu das hier:

schreib genau zwischen diese Zeilen...nich ober..nich unterhalb, sondern genau dazwischen...


.Range("A29:BF" & 28 + luf2.ufLsbPos.ListCount).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
.Rows(.Cells(.Rows.Count, "AY").End(xlUp).Row - 1).RowHeight = 4.5

...diese Zeile...


.Rows("28:" & .Cells(.Rows.Count, "AY").End(xlUp).Row - 1).RowHeight = 16

Du hast ja das Blatt "Beleg" so gestaltet, dass die Zeile direkt über Summe, unterhalb der Datenzeilen eine nur sehr kleine Zeilenhöhe hat.
Und genau diese Zeile wandert bei erneuten Eingaben über das Userform immer mit, oder vervielfältigt sich sogar.

Die nun neu hinzugefügte CODEzeile sorgt nach Bereinigen der alten Datenzeilen dafür, dass - vor dem Einfügen - neuer Datenzeilen aus dem Userform erst mal alle "leeren" Datenzeilen im Blatt "Beleg" die Standardhöhe von 16 erhalten.
- erst jetzt werden die neuen Datenzeilen hinzugefügt
- und wieder die letzte Zeile oberhalb von Summe erhält wieder ihre niedrige Zeilenhöhe von nur 4,5 zurück.

Hilfts?

Ciao
Thorsten
Zeilenhöhe ändern = so
07.09.2023 09:11:45
Werner
Hallo Thorsten,

hat geklappt, Super Danke dir echt für ALLES und für deine wertvolle Zeit.

Danke
Zeilenhöhe ändern = so
07.09.2023 09:22:11
Oberschlumpf
Hi Werner,

cool, auch das freut mich natürlich! :-)

Ich "bastel" gerad wieder in deiner Bsp-Datei.
Bist du noch an weiteren Änderungen interessiert, oder ist jetzt alles ok so, wie es ist?
Frag nich, was genau ich ändern will, beantworte nur meine Frage :-)

Ciao
Thorsten
Zeilenhöhe ändern = so
07.09.2023 12:48:49
Werner
Ach Thorsten, du kannst gerne was basteln, aber das was du "gezaubert" hast, ist echt klasse.

Ich würde dich gerne weiter fragen stellen, weiß aber nicht was excel noch alles schönes kann damit es noch schöner und leichter zu Bediener wäre:)

Ich freue mich natürlich über jede Erneuerung und bin auch mega gespannt, was Excel alles kann.

Du weißt gar nicht, wie glücklich ich bin wie cool das alles funktioniert:-)

Danke echt für alles
ja, dann guck mal hier...
07.09.2023 13:23:03
Oberschlumpf
Hi Werner,

ich hab nun doch n neues Userform für die 2 Datumsfelder eingebaut! :-)

Nee, nich so eins, wovon ich dir letztens ein Bild zeigte - so eins kannste dir noch immer selber bauen :-)

Mein Datums-Userform ist so einfach gehalten, wie es nur geht.
Es hat 3 ComboBoxen (mit Beschriftungslabels für Tag,Monat,Jahr), 1 weiteres Label, in dem das gewählte Datum gezeigt wird und 1 OK-Button.

Sooo, wähl in Haupt-Userform in ComboBox einen Eintrag aus, so dass zumindest die Stammdaten befüllt werden.

Nun klick mal auf die TextBox "Liefer-" oder "Rechnungsdatum".
In beiden Fällen öffnet sich das neue Userform.
Ohne Auswahl von irgdwas, nur Klick auf OK = es erscheint ne MsgBox, dass was falsch is
Erst nach Auswahl aller 3 Comboboxen, und dann Klick auf OK, wird das ausgewählte Datum in eins der Datumsfelder übertragen.
SO ist es ab jetzt nich mehr möglich, in ein Datumsfeld falsche Einträge zu machen!

Mach mal wieder n paar Tests (vllt noch heute, weil Beitrag bald im Archiv weg ist) und erzähl mir, obs bei dir auch so toll funktioniert :-)

Ach so...wenn du Monat 02 auswählst, gibt es trotzdem die Tage 01 bis 31, da hatte ich keine Lust mehr, zu prüfen, ob Februar ausgewählt, und ob dann 28 oder 29 Tage verfügbar sind.

hier die Datei
https://www.herber.de/bbs/user/162710.xlsm

Hilfts??? :-)

Ciao
Thorsten
ja, dann guck mal hier...
07.09.2023 20:35:37
Werner
Hey Thorsten,

ja das ist ja eine geile S......... , das schaut scho cool aus.
Habe gerade paar mal getestet und funktioniert klasse. Danke Dir :-) :-) :-)
ja, dann guck mal hier...
07.09.2023 20:50:10
Werner
Hallo Thorsten,

was auch cool wäre eine UserForm für Kundenstamm ( TB Kunden ) eingeben, eingeben und ändern wenn was falsch ist und das Tabellenblatt ausgeblendet ist. Wäre auch cool oder ?
Und noch eine Idee , aber da habe ich keine Idee :-)
Das z.b. Angezeigt wird, welche Rechnung ( TB alle Rechnungen ) noch nicht bezahlt ist und dann eingeben kann wenn das Geld überwiesen wurde. :-)

Danke nochmal für alles
ja, dann guck mal hier...
08.09.2023 01:07:35
Oberschlumpf
Hi Werner,

erst mal freu ich mich, dass dir das mit dem neuen Userform auch so gut gefällt!

Aber ab hier bin ich nun, wie ja von mir "angekündigt", leider raus :-)

Das wegen der Datumsfelder hatte ich noch nachgereicht, weil es mich selbst störte, dass hier noch - uneingeschränkt - Fehleingaben wie Text, zu viele Zeichen, usw möglich waren...ein Datum besteht in Deutschland nun mal aus maximal 10 bestimmten Zeichen (8 Zahlen und 2 Punkte) - jetzt gibts nur noch die (Fehler)Möglichkeit, dass du für Februar als Tag mehr als 28, bzw 29 auswählen könntest :-)

Und ja, weitere Ideen = ...
...in Blatt "Beleg" eine Datenzeile anklicken = es öffnet sich das Userform, und du könntest Änderungen vornehmen und natürlich in "Beleg" aktualisieren
...im Userform ein weiterer Button, mit dem du ausgewählte Kunden mit all den dazugehörigen Datensätzen löschen könntest
...im Blatt "Kunden" den Autofilter aktivieren; nun könntest du z Bsp eine Kundennummer auswählen = Anzeige von nur diesem Kunden und besserer Überblick, wie oft Kunde x bestellt und wieviel insgesamt er schon bezahlt hat
...das ganze nach Auswahl in Autofilter auch noch in einem weiteren Blatt grafisch schön darstellen, z Bsp als Diagramm oder so
...und bestimmt noch ganz viel weitere Ideen

Aber dafür erstell bitte neue Beiträge (nich alle Ideen auf einmal erfragen!), denn ich habe hier fertig :-)

Ciao
Thorsten


ja, dann guck mal hier...
08.09.2023 06:37:53
Werner
Guten morgen Thorsten,
Möchte mich nochmal bedanken.
Danke ist jetzt schon Weltklasse das alles :)
Kurze Nachfrage
08.09.2023 09:08:24
Werner
Hallo Thorsten,
Mir ist gerade was aufgefallen.
Bei der alten Version wurde die Daten in das tabellenbaltt rechnung abgespeichert ( für Finanzamt )
Wenn das nämlich nicht gespeichert wird, aber ich ein Problem das die Rechnung nummer fortlaufend weiter geht..

Könntest du das nochmal anschauen ?

Dankeschöööön :)
Kurze Nachfrage
08.09.2023 09:30:50
Oberschlumpf
Hi Werner,

ja, das war mir gestern auch aufgefallen, aber da war es zu spät.
Und für diesen Beitrag ist es auch...zu spät!^^

Erstell bitte einen neuen Beitrag, füg per Upload die aktuellste Datei hinzu....und beschreib dein Problem bitte so, dass es alle verstehen...und nicht nur ich :-)

Ciao
Thorsten
user form einige Fragen
01.09.2023 13:46:57
Werner
Hallo Daniel
das mit ControlSource hört sich besser an .

Wie müsste den eine Code Zeile aussehen ? Dann könnte ich es abändern :-)

Danke
user form einige Fragen
01.09.2023 14:14:41
Alwin Weisangler
Hallo Werner,

anbei mal der Einbau über 3 Ecken (API) Textbox mit Enterereignis in Klasse. Das ist eben für mich der interessantere Teil.
Was die anderen Fehler angeht übergebe einfach:


if Txt_Pos_Preis4>"" then .Cells(28, 45) = CCur(Txt_Pos_Preis1)

und setze den Kram in Schleifen 'a la


.Cells(28, 45) = CCur(controls("Txt_Pos_Preis" & i)

Der Rest wurde bereits angesprochen.
https://www.herber.de/bbs/user/162644.xlsm

Gruß Uwe
user form einige Fragen
01.09.2023 16:22:41
daniel
HI
ich schrieb doch, wenn du mit ControlSource arbeitest, um die Textboxwerte in die Tabelle zu schreiben, benötigst du KEINEN Code.
du musst im Editor einmal jede Textbox anklicken und dann ins Eigenschaftsfenster gehen und dort bei der Eigenschaft ControlSource die Zelladresse der Zelle eintragen, in welcher der Textboxwert erscheinen soll. Das ist ein einmaliger Manueller Vorgang beim Erstellen der Userform.
Userbild
Gruß Daniel
user form einige Fragen
01.09.2023 12:46:11
Werner
Hallo Thorsten,

bei mir kommt ein Fehler wenn ich in der zweiten Zeile was eintrage und zwar bei :
.Cells(29, 45) = CCur(Txt_Pos_Preis2)

Zu meine weiteren Frage,
Ich habe manchmal nur eine Position und manchmal 12 Positionen. Das heißt wenn ich eine Position eingebe soll der Code aufhören da ich nix weiter eingebe. Momentan kommt dann ein Fehler wie oben beschrieben.

zu Frage 3
In meinen Tabellenblatt Kunden habe ich Spalte1 meine Kundennummer und in Spalte 2 und 3 Name und Nachname. Jetzt will ich aber das die Anrede in Spalte 3 ist und Nachname in Spalte 3 und der Vorname in Spalte4. Jetzt habe ich ein Problem in der User Form wenn es es ändern würde. Wähle ich den Kundenname aus, kommt dann Herr Sepp1 anstatt Sepp1, Müller 1.

zur Frage 4

im UserForm Kundenname möchte ich gerne die Anzeige ( Auswahl ) haben Sepp1, Müller1, München,

leider weiß ich nicht wo ich das umstellen kann.

Danke

user form einige Fragen
01.09.2023 12:53:23
Oberschlumpf
Hi Werner,

"...Anrede in Spalte 3 ist und Nachname in Spalte 3 und der Vorname in Spalte4..."

Du willst also wirklich Anrede UND Nachname in Spalte3?

Wenn ja, ist das nicht gut, weil für Anrede sollte eine eigene Spalte verwendet werden
Wenn nein, dann verrat mir bitte, was genau soll wo genau hin?

Ciao
Thorsten
user form einige Fragen
01.09.2023 13:05:24
Werner
Ah Sorry du hast Recht,

Anrede in Spalte 2
Nachname in Spalte 3
Vorname in Spalte 4
AW: user form einige Fragen
01.09.2023 11:40:57
Werner
Hallo Uwe,
muss ich es dann bei allen Pos-Menge machen ?

Private Sub Txt_Pos_Menge1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If IsNumeric(Txt_Pos_Menge1) Then
Txt_Pos_Menge1 = Format(CDbl(Txt_Pos_Menge1), "0.00#,##")
End If
End Sub

Private Sub Txt_Pos_Menge2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If IsNumeric(Txt_Pos_Menge2) Then
Txt_Pos_Menge2 = Format(CDbl(Txt_Pos_Menge1), "0.00#,##")
End If
End Sub

also 16 mal ?

Danke
Versuch Beitrag unten dran
01.09.2023 14:34:24
Alwin Weisangler
ich hoffe jetzt, dass ich es geschnallt habe wie man einen Beitrag unten dran geschrieben bekommt.

Uwe

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige