Praxissemster

Liebe/-r Experte/-in,

ich bin der Absolute Vba Anfänger und komme nicht weiter.
habe folgendes problem
ich habe mehrere Userforms
in einem Userform sinf mehrere Textboxe (artikelnummer,Liertermin,kunde…) also es können entweder buchstabe(Kunde),Datum(Liefertermin) oder auch Zahlen eingegeben werden: bei Artikelnummer(Zahlen),Kunden(Buchstaben u.s.w)…sooo meine Fragen sind:
1-wie kann ich die Eingaben einschränken
2-wie mache ich es wenn ich Eingabe nach Eingabe den text in den textboxwn füllen möchte(Bei leere Angaben Msgbox)
3-wie kann ich datum/Zahlen/werte von einen Tabellenblatt in einen anderen übertragen(Bei veränderung im Tabellenblatt1 ->veränderung im Tabellenblatt2

Ich komme nicht weiter leider und das macht mich fertig

gerne können Sie mich nach der email fragen falls nötig

bin für jede Hilfe dankbar und bedanke mich im voraus

mfg Anis

Hallo Anis,

in welcher Firma machst du denn dein Praxissemester? :wink:

Also, es gibt auch Steuerelemente von Drittanbietern, welche diese Funktionalität bereits besitzen - da müsstest dann nichts mehr selber programmieren (gerade für die Datumsangabe ist das recht nett, da hier meist gleich ein kleiner Kalender mit aufgeht, wo man das Datum komfortabel selektieren kann).
Allerdings bekommst du dadurch Abhängigkeiten in dein Projekt, weswegen man es nicht so ohne Weiteres auf einem anderen Rechner zum Laufen bekommt (die verwendeten Steuerelemente müssten nämlich auch dort verfügbar sein) - daher würde ich davon abraten. Dies sei nur zur Vollständigkeit erwähnt.

Um dein Ziel zu erreichen, musst du auf bestimmte Ereignisse reagieren. Je nach dem, wie sich dein Steuerelement verhalten soll, sind das folgende:

Valitate() - wenn die Eingabe vollständig ist (der Nutzer z. B. Enter drückt, oder zu einem anderen Steuerelement wechselt)
Change() - wenn sich der Inhalt der Textbox ändert.
KeyDown() - wenn eine Taste gedrückt wird, während die Textbox den Fokus besitzt.

Ich würde zum KeyDown()-Ereignis raten, da du hier „on the fly“ auf Nutzer-Eingaben reagieren kannst, ohne dass die falsche Eingabe in der Textbox erscheint. (z. B. den Tastendruck abbrechen, wenn Buchstaben statt Zahlen eingegeben wurden. - Abgebrochen wird mit „KeyCode = 0“)

Alternativ kannst du es auch wie folgt lösen:
Die falsche Eingabe nicht unterdrücken, dafür aber die Textfarbe rot färben und das Verlassen der Textbox verhindern (mit „Cancel = True“ im Valitate()-Ereignis).
Damit ist sichergestellt, dass die Textbox immer mit korrekter Eingabe verlassen wird - der Nutzer erkennt dabei aber besser, was er falsch gemacht hat. Dieses Verhalten halte ich für etwas professioneller als die obige Variante. Deine Idee mit den MsgBoxen halte ich dagegen für äußerst nervig! :wink:

Ja, bei weiteren Fragen, bitte die E-Mail-Adresse mitsenden - das ist besser (z. B. um Kode-Beispiele anzuhängen).

Hallo Anis,

ich habe beruflich oft mit VBA und VB.net zu tun.

Antworten zu Deinen Fragen:

zu 1.) es gibt mehrere Methoden, um eine Eingabe einschränken zu können:

onKeyDown und onKeyUp: Diese Methode wird aufgerufen, sobald der Anwender eine Taste betätigt hat.
Durch Setzen der Variable Keycode (oder KeyAscii ?) auf 0 kann eine Tasteneingabe gezielt unterbunden werden.

beforeUpdate Diese Methode wird aufgerufen, nachdem der Inhalt übernommen werden soll.
Durch setzen des Variable Cancel kann ein Update-Vorgang unterbunden werden.

zur 2. Frage:

Mit Hilfe der Anweisung

txtBox.Value = „Inhalt“

kann eine Textbox gezielt mit einem Inhalt gefüllt werden.

Gültigkeitsregeln für Textboxen müssen selbst geschrieben werden: z.B.

sub textbox_beforeUpdate(…)
if textbox.value = „“ then
msgbox „Meldung“
end if
end sub

Die genauen Parameter von _beforeUpdate habe ich jetzt nicht im Kopf - Sorry.

zur Frage 3:

Ich gehe mal davon aus, dass MS Excel die Tabellenkalkulations-Software eingesetzt wird.

In Excel benötigt man für das Ändern von Werten in Abhängigkeit von Eingaben in anderen Zellen kein VBA einsetzen. Hier reicht ein Verweis auf die Eingabezelle. Wenn in der Eingabezelle der Wert sich ändert, wird dieser Wert automatisch in der Zielzelle ebenfalls abgeändert.

Bei Fragen stehe ich Dir gerne weiterhin zur Verfügung.

Mit freundlichen Grüßen
BigBen

hallo
ja gute Idee danke
meine email ist [email protected],haben Sie auch eine?
kann Ihnen dann einen exemplar schicken von einem userform und mir sagen was ich da sonst machen kann,bin der absolute anfänger

danke danke
nfg anis

hey,
vielen dankerstmal für Ihren Tipps.
bei der Frage 2(Msgbox aber ich auch so gemacht aber möchte dazu noch daß die Eingaben eine nach der andere gemacht werden daß der cursor automatisch auf den zweiten textbox wechselt sobald kein Fehler festgestellt wurde.
ja bei der Frage der Verknüpfung: funktioniert der sverweis nicht nur wenn ich im gleichen tabellenblatt befinde??

danke danke
mfg anis

Hallo Anis,
ui, Du hast so viele Fragen zu grundlegenden Techniken des Programmierens. Ich empfehle Dir dringend erstmal ein paar Grundlagen zu Excel-VBA über eine Suche im Internet.

Am Besten Du versuchst es mal in einer Suchmaschine mit:

vba tutorial excel filetype:stuck_out_tongue:df

Gruß Erwin

hey,
ich hab schon bisschen ahnung von vba aber mit den fragen hab ich echt lange beschäftigt und viel drüber gibts im web nicht

danke trotzdem
mfg anis