Live-Forum - Die aktuellen Beiträge
Datum
Titel
19.04.2024 12:23:24
19.04.2024 11:45:34
Anzeige
Archiv - Navigation
1580to1584
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

Diverse Probleme in VBA

Diverse Probleme in VBA
02.10.2017 13:07:38
Tonatiuh2011
Hallo Excel-Gemeinde,
ich bin leider noch blutiger Anfänger in Sachen VBA und deshalb Brauche ich eure Hilfe.
Meine Herausforderung sieht wie folgt aus:
Die UserForm soll durch einen Dopelklick in irgendeiner Zelle einer bestimmten Spalte erfolgen. (Meine Lösung klappt nur Teilweise)
Hier der Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
With Target
UserForm1.Show
End With
End Sub


Anschliessend sollen Daten aus der UserForm in das Tabellenblatt eingetragen werden. Dies soll in der Zeile passieren in der der Doppelklick ausgeführt wurde. Nur in bestimmten Zellen. Hinzu kommt das in einem weiteren Tabellenblatt nochmal Daten aus der UserForm übernommen werden sollen. Fühlt sich ein Profi angesprochen mir bei dieser Aufgabe zu Helfen? Mein Dank wäre Ihm gewiss.
Viele Grüße
Tona

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Beispielmappe bitte
02.10.2017 13:31:12
Werner
Hallo Tona,
hier mal nur zum Öffnen der Userform:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 3 Then Userform1.show
End Sub

Die Userform wird geöffnet bei Doppelklick in irgendeiner Zelle in Spalte C (Column = 3).
Für mehr reicht es nicht bei deiner Beschreibung.
Bitte eine Beispielmappe mit deiner Userform sowie Erklärungen was wohin soll.
Gruß Werner
AW: Diverse Probleme in VBA
02.10.2017 14:55:44
Hajo_Zi

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
userform1.Tag =Target´.Address
UserForm1.Show
End Sub
dann hast Du die Adresse in der Userform.
nur wenige schauen auf Deinen Rechner und sehen die Datei.
Ich möchte gerne den Fehler im Original sehen.
Ich baue keine Datei nach. Die Zeit hat schon jemand investiert.
Ein Nachbau sieht meist anders aus als das Original. Darum sollte das Original verlinkt werden.
Wenn du an Stelle einer Demomappe deine Originalmappe hochladen willst, diese aber sensible Daten enthält, kannst du diese Daten anonymisieren bzw. pseudonymisieren.

Ich gebe keinen Dank für eine Rückmeldung, da ich durch solche Beiträge nicht meine Beitragszahl erhöhen muss.
Also ich schreibe keine Beiträge mit dem Betreff "Gerne u. Danke für die Rückmeldung. o.w.T."
Rückmeldung ist ja in der Heutigen Zeit nicht üblich und die wenigen die eine Rückmeldung geben, mögen mir das verzeihen, das kein Danke für eine Rückmeldung kommt.
Anzeige
AW: Diverse Probleme in VBA
02.10.2017 15:02:45
Hajo_Zi
cancel=true
fehlt.
Gruß Hajo
AW: Diverse Probleme in VBA
02.10.2017 16:01:47
Tonatiuh2011
Datei ist angefügt. Sie verfügt über keine sensiblen Daten.
Nun zum Ablauf:
Im Tabellenblatt 1 soll mit einem Doppelklick in eine Zelle in der Spalte J (Sendungsnummer) die UserForm aufgerufen werden. In der UserForm werden folgende Informationen eingegeben:
1. aktuelles Datum
2. Datum des Versands
3. Lager per Dropdown
4. Die eigentliche Sendungsnummer
5. TES-Nummern (20stellig mit zwei Nullen am Anfang. Wird über die Formatierung gelöst)
6. Warenrücklaufnummer (WRN)
Nach Bestätigung der Eingabe soll in der Tabelle1 zu jeder Sendungsnummer hintereinander die TES eingetragen werden und in Tabelle4 zu jeder TES die WRN, Datum, Sendungsnummer und das Lager übernommen werden. In Tabelle1 sollen die Daten in die Zeile eingegeben werden, die per doppelklick das UserForm öffnet. In Tabelle4 sollen die Daten einfach untereinander geschrieben werden. Quasi jede neue TES in die nächste leere Zeile und die WRN dahinter.
https://www.herber.de/bbs/user/116694.zip
Anzeige
Raus
02.10.2017 16:28:35
Hajo_Zi
ich sehe es so, mein Codevorschlag wurde ignoriert, ich sehe also keine Bedarf weiter zu machen.
Gruß Hajo
AW: Raus
02.10.2017 18:13:58
Tonatiuh2011
Hallo Hajo,
dein Codevorschlag wurde nicht ignoriert, sondern noch nicht umgesetzt. Aber alleine um es zu testen werde ich ihn ausprobieren.
Grüß Tona
Mimose?
03.10.2017 10:36:45
Werner
Hallo Hajo,
einfach mal wieder etwas "hingerotzt" aber am Thema vorbei.
Gruß Werner
Nachfrage
03.10.2017 10:35:20
Werner
Hallo Tona,
konnte mir die Datei gestern leider nur kurz ansehen.
Anmerkung dazu:
Willst du wirklich eine UserForm mit gefühlten 500 Eingabefeldern?
Die müssten ausgewertet werden, ob dort Daten vorhanden sind oder nicht.
Zudem ist die Optik dann völlig unübersichtlich, dein User wird durch die Maske erschlagen.
Reduzier doch die UserForm auf Eingabefelder zur Erfassung von einem Datensatz. Ist dieser erfasst und abgespeichert, dann wird die Eingabemaske geleert und es kann der nächste Datensatz erfasst werden.
Warte auf Antwort.
Gruß Werner
Anzeige
AW: Nachfrage
03.10.2017 11:55:59
Tonatiuh2011
Hallo Werner,
ja, leider werden diese Felder so gebraucht. Jedoch soll die UserForm nach der Eingabe wieder geleert werden um mit einem neuen Datensatz gefüllt zu werden. Bei jeder Eingabe der Daten werden nicht zwangsläufig alle Felder gebraucht. Sollte es eine Möglichkeit geben, z.B. weitere Felder aufzudecken sobald das vorherige gefüllt wurde wäre es natürlich eine SUPER Lösung. So könnte die erst TES und dort die erste WRN nur angezeigt werden und weitere Felder nur bei Bedarf angezeigt werden.
Zur Info: Es gibt keine feste Anzahl an Datensätzen. Mal sind es 3 TES und ein anderes Mal sind es 6. Auch bei der WRN gibt es keine feste Menge. Mit der Menge die in der UserForm angezeigt wird, habe ich das Maximum festgelegt.
Grüß Tona
Anzeige
AW: Nachfrage
03.10.2017 23:53:36
Tonatiuh2011
Hallo Werner,
war gestern noch etwas fleisig und habe etwas an der UserForm gearbeitet. Nun sieht sie übersichtlicher aus, da nur die in Gebrauch befindlichen und die nachfolgenden Felder zu sehen sind. Ist zwar nicht profesionell geschrieben, aber es funktioniert.
Leider habe ich noch Probleme mit dem ansprechen bestimmter Zellen.
Dabei sollen in der Tabelle1 nur die Zellen angesprochen werden, die sich in der Reihe der Zelle befinden die per doppelklick die UserForm öffnet. Zum anderen sollen in Tabelle 4 Bestimmte Werte einfach nur untereinander geschrieben werden. Immer in die erste leere Zeile. Vielleicht kannst du mir da weiter helfen.
Gruß Tona
https://www.herber.de/bbs/user/116743.zip
Anzeige
AW: Nachfrage
04.10.2017 13:35:31
Werner
Hallo Tona,
kann ich mir erst morgen Mittag ansehen. Bin momentan am Arbeiten und kann deine Datei nicht herunterladen laden. Melde mich.
Gruß Werner
AW: Nachfrage
06.10.2017 13:43:30
Werner
Hallo Tona,
hatte seither leider keine Zeit. Konnte jetzt nur mal kurz drüber schauen. Zwei Anmerkungen/Änderungen zu deinem bisherigen Code.
Deine Offset Angaben im Code (hier im UserForm initialize Ereignis) sind falsch. Ist dir noch nicht aufgefallen, dass beim Start der Userform das Lager und das Erstellungsdatum nicht übernommen wird? Zudem denke ich, dass auch die Sendungsnummer der angeklickten Zelle in die Userform übernommen werden sollte oder nicht?
Hier der geänderte Code:
Private Sub UserForm_Initialize()
''Daten in die UserForm übernehmen
With UserForm1
.tbxDatum.Value = Date
.tbxDatumLV.Value = ActiveCell.Offset(, -8).Value
.cboLaeger.Value = ActiveCell.Offset(, -6).Value
.tbxSendungsnummer = ActiveCell.Text
End With
End Sub
Dann würde ich noch im Doppelklick-Ereignis Cancel = True einfügen. Das verhindert, dass die doppelt angeklickte Zelle im Bearbeitungsmodus bleibt.
Hier der geänderte Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
If Target.Column = 10 Then UserForm1.Show
End Sub
Hinweis zum Offset:
ActiveCell.Offset(0, 1)

AktiveZelle.Versatz(Zeilenversatz, Spaltenversatz)
Bei obigem Beispiel: Gleiche Zeile eine Zelle nach rechts
Bei .Offset(1, 1) eine Zeile nach unten und eine Zelle nach rechts
Das geht auch mit negativen Werten
Bei .Offset(-1, -1) eine Zeile nach oben und eine Zelle nach links
Den Rest werde ich mir noch mal anschauen, weiß aber im Moment nicht, wann ich dazu komme. Habe im Moment ziemlich viel um die Ohren.
Wenn du willst, kannst du den Beitrag ja mal auf offen stellen (Kästchen neben dem Passwort anhaken). Vielleicht hat ja ein anderer Helfer die Muse schon mal weiter zu machen.
Gruß Werner
Anzeige
AW: Nachfrage
06.10.2017 16:10:46
Tonatiuh2011
Hallo Werner,
vielen Dank erstmal bis dahin. War schon eine sehr große Hilfe. Kurze Frage zu dieser Codezeile:
.tbxSendungsnummer = ActiveCell.Text
Du hast diese mit .Text beendet. War das Absicht auch wenn es sich um eine Zahl handelt?
Habe das Häckchen rein gemacht für andere.
Beste Grüße
Tona
AW: Antwort
07.10.2017 14:26:56
Werner
Hallo Tona,
zu deiner Frage:
In Textboxen steht grundsätzlich Text, auch wenn du aus einer Zelle ein Zahl in eine Textbox eintragen lässt.
Mach doch das .Text einfach mal weg und öffne die Userform. Es wird der Wert aus der Zelle eingelesen, aber als reine Zahl, so dass deine Formatierung der Zelle verloren geht.
Durch das .Text wird der Zellinhalt so in die Textbox übernommen, wie er in der Zelle angezeigt wird.
Übrigens, jetzt über das Wochenende kann ich mich nicht weiter um die Sache kümmern, muss arbeiten.
Gruß Werner
Anzeige
AW: Antwort
09.10.2017 10:11:37
Tonatiuh2011
Hallo Werner,
viellen Dank dir für die Erklärung und auch die schnellen Antworten.
Das Thema ist leider immer noch offen. Somit spreche ich alle an:
Ich suche immer noch den Code um die erste leere Zelle in Spalte A in der Tabelle 4 aufzurufen.
Kann mir da jemand Helfen?
Beste Grüße
Tona

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige