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

per re. MT - Userform öffnen

per re. MT - Userform öffnen
06.07.2017 18:09:32
STeve
Begrüße euch recht herzlich und hätte wieder mal eine Frage.
Zur Zeit erscheint beim
Change Ereignis (Byval Target as Range)
bei Eingabe einer Zeitangabe (kleiner als 16:00 Uhr) eine MsgBox - wenn "Ja" - dann Userform.
Wäre es möglich ohne die Zeit- Eingabe - in dieser Range - über die re. Maustaste diese UF aufzurufen.
Ideal wäre natürlich wenn das (ich nenne es mal) re.MT-Kontextmenü dann zw. mehreren Userformen eine Auswahl anbieten würde.
Besten Dank und mfg
STeve

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
ja das geht ...
06.07.2017 18:31:02
Matthias
Hallo
Dazu müsste man aber genaue Bedingungen kennen, wann das re. Kontexmenue eine Auswahl an UForm's
anbieten soll und in welchen Zellen nicht.
Soll heißen:
Ist das re.Kontexmenue ausgeblendet und nur die einzelnen UForm's aufrufbar
oder soll nur ein zusätzlicher Eintarg eingefügt werden, in denen man das UForm aufrufen kann.
Das praktiziere ich ich schon seit Jahren bei meinen Sudoku-Programmen.
Userbild
Mach mal ein Beispiel
Gruß Matthias
Kannst mir da was richten..........
06.07.2017 19:52:59
STeve
Hallo Matthias L ........das klingt gut.
In dieser Sub:
Public Sub multi1(ByVal Target As Range)
End Sub
.............. soll nur ein zusätzlicher Eintrag eingefügt werden, in denen man die UForm aufrufen kann.
Statt Sudoku 1-9 sollte Dienste 1-5 stehen (denke die Zahl ist anpassbar)
und dann re. statt
1 die 1 eintragen
1 reinen ND verplanen. ...............Name der UF = frmeinzelnenNDverplanen.Show
2 bis 5
usw. ist aber alles noch offen.
Kannst du mir da was richten?
Inzwischen verbleibe ich mfg
STeve
Anzeige
evtl. möglich, aber erst ab/am WE ...
06.07.2017 20:12:23
Matthias
Hallo STeve,
ich vergess Dich nicht.,
Ich versuch mal was am WE
und melde mich dann wieder.
Gruß Matthias
AW: evtl. möglich, aber erst ab/am WE ...
06.07.2017 20:21:03
STeve
Super Matthias... das wäre natürlich ein Hammer.
Vorab schon mal Tausend Dank für deine Mühen.
LG STeve...und wünsche trotzdem schönes WE.
Guten Morgen Matthias L.....brauche noch Hilfe
07.07.2017 08:21:45
STeve
Hallo Matthias L.........super Klasse. DANKE. :-)))
Habe die Subs in Modul(ueberreMTKontextmenueUFsladen) eingetragen:
Sub AddToCellMenu()
End Sub
Sub DeleteFromCellMenu()
End Sub
Sub LoadUF1()
frmeinzelnenNDverplanen.Show
End Sub
WBK - Activate und Deactivate erledigt.
.... aber natürlich bietet es mir die UF (frmeinzelnenNDverplanen.Show) über das re. MT-Kontext-Menü natürlich jederzeit in der Mappe in jeder Zelle (Range) an.
Damit die UF richtig geladen/initialisiert wird muss sie aus Change Ereignis
Public

Sub multi1(ByVal Target As Range)
heraus geladen werden. 1.) sind dann die User- Eingaben in die UF und die dann rückübermittelten Einträge in die _ Tabelle - an richtiger Position (Target Row und Columns, Offset usw.) 2.) lbl Beschriftungen in der UF werden über Variablen (wieder Target.Row, Offset usw.) aus dem _ Change geladen (und die fehlen natürlich jetzt) Mit der Bitte um Lösung mfg STeve
Anzeige
Hilfe gern, aber da fehlen die Informationen ...
07.07.2017 16:01:36
Matthias
Hallo
Damit die UF richtig geladen/initialisiert wird muss sie aus Change Ereignis heraus geladen werden.
Du wolltest doch die Formulare über das rechte Kontexmenue laden.
Dafür habe ich Dir ein funktionierendes Beispiel erstellt.
Was Du in Deinen Formularen und Tabellen machst kann ich nicht wissen.
Wie sollte ich Dir da weiter helfen können.
Gruß Matthias
Habe Datei erstellt und angehängt.....lg
07.07.2017 20:08:49
STeve
Hi Matthias....natürlich hast du Recht. Leider kann - noch ;-)) - keiner von euch hellsehen.
Habe jetzt für dich diese Datei hochgeladen:
https://www.herber.de/bbs/user/114753.xlsm
Dort ist ein Zählwerk (Code von Dirk aus Dubai) - unten in rot - wenn man im gelben Bereich
If Sh.Name "Tabelle1" Then
Set objRange = Intersect(Target, Range("C2:AG19"))
If Not objRange Is Nothing Then
die Art (links unten aufgezählt wie AAA, HonigN, aaa, bbb, ccc, HonigT usw.) eingibt dann zählt das Werk unten.
Habe jetzt deinen Code mit reMTKontextmenü eingebaut.
Jetzt meine Frage/Bitte......ist es möglich dass man es so einstellt dass der User deine UF-Angebote nur aufrufen kann (wenn außerhalb des gelben Bereiches - entweder enabled, verstecken oder was anderes?) wenn man im gelben Bereich die re. MT drückt.
Danke für deine Antwort/Hilfe.
lg STeve
Anzeige
natürlich geht das auch ...
07.07.2017 20:37:54
Matthias
Hallo,
folgenden Code ins Tabellenblatt kopieren:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Range("C2:AG19")) Is Nothing Then
Call AddToCellMenu 'Re.Kontexmenue erstellen
Else
Call DeleteFromCellMenu 'Re.Kontexmenue löschen
End If
End Sub
Dann ist im gelben Bereich die Möglichkeit über das Kontexmenue (re.Maustaste)
eine UserForm zu laden nicht vorhanden. :)
Gruß Matthias
Ja weil du es weißt und kannst......Super
07.07.2017 20:47:02
STeve
Hi nochmal..........DANKE dir für die Mühen und schnellen Antworten/Hilfen/Codes.
Klasse Matthias....da komm ich jetzt weiter.
Wünsch dir noch ein schönes WE
LG STeve
Anzeige
Danke für Deine Rückmeldung ... owT :)
07.07.2017 21:17:44
Matthias
Ob da noch jemand helfen kann....?
07.07.2017 22:33:23
STeve
Hallo nochmal.
Komme nicht weiter......ob das überhaupt geht? oder ist das Ende der Möglichkeiten?
Das Problem ist dass ich
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
End Sub
gar nicht zu Verfügung habe.
Ich spreche das Blatt über WBK_SheetChange (weil es jedesmal neu erstellt wird und (ab der neunten STelle immer anders heißt) an:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Left(Sh.Name, 9) = "DPL PI BH" Then
If Not Intersect(Target, multibereich1_neu) Is Nothing Then
Call multi1(Target)
End If
End Sub
Im Modul multi1(Target) werden dann einige Variablen extra für die UF definiert:
ND_Tag = Tag
WTAnfang = Cells(16, Target.Column)
WTAnfang = Format(WTAnfang, "dddd")
ND_Tag_Ende = naechsterTag
WTEnde = Cells(16, Target.Column + 1)
WTEnde = Format(WTEnde, "dddd")
MitarbeiterName = ActiveSheet.Cells(Target.Row + 3, 1)
zeile = Target.Row
Spalte = Target.Column
Treffer = zeile & "," & Spalte
frmeinzelnenNDverplanen.Tag = Treffer
um schließlich die UF korrekt laden zu können:
frmeinzelnenNDverplanen.Show
Mit dem Sub:
Sub LoadUF1()
frmeinzelnenNDverplanen.Show
End Sub
fehlt mir die definierte Range (multibereich1_neu) um die re. MT einzugrenzen
und
auch die Variablen damit die UF beschriftet wird.
Müsst also so ablaufen:
Sub LoadUF1()
a.) ....zuerst abchecken ob richtige Range (Target, mulitbereich1_neu)
b.) wenn ok dann call multi1 (Target)
c.) und nach Variablen laden
d.) frmeinzelnenNDverplanen.Show
End Sub
? Wenn jemand eine Idee hat wäre ich sehr dankbar.
Guten Abend und
lg STeve
Anzeige
Danke an MatthiasL .....brauche aber Info
08.07.2017 20:15:40
STeve
Matthias L hat hier tolle, schnelle und klasse Arbeit geliefert....da ich hänge habe ich die Frage wieder auf offen....sozusagen halboffen gestellt.
Hallo an alle....wünsche schönen Samstag Abend.
Hätte eine Frage:
Über eine UF wird ein neues Blatt erstellt:
(Der User trägt Monat und Jahr in cbo's ein - darum heißt das Blatt jedesmal anders.)
Dim ws As Worksheet
Set ws = Sheets.Add
ws.Name = "DPL PI BH " & FormularStarteingabeMaske.ComboMonat.Value & " " & FormularStarteingabeMaske.ComboJahr.Value ' neues Tabellenblatt wird generiert
Ist es machbar/möglich diesen Code:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, multibereich1_neu) Is Nothing Then   'nur in diesem Bereich wird  _
die re.MT-UF angeboten
Call AddToCellMenu        'Re.Kontexmenue erstellen
Else
Call DeleteFromCellMenu    'Re.Kontexmenue löschen
End If
End Sub

gleich nach der Erstellung in das
Worksheet_SelectionChange Ereignis automatisch einzutragen.
Also jetzt schon für zukünftig - über die UF durch User (die kein VBA können) erstellte Blätter - einen Code im WS_SelectionChange einzutragen?
Besten Dank und mfg
STeve
Anzeige
Zugriff VBA
09.07.2017 08:33:12
Hajo_Zi
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.
Du hast den Zugriff auf das VBA Projekt zugelassen um den Code in die neue Tabelle zu schreiben?
Zum Code Änderung muss Zugriff auf das VBA Projekt zugelassen werden.
Da dies tief in die Sicherheit geht, gebe ich dazu keine Auskunft.
Du hast in der UserForm zugelassen das eine Zelle in der Tabelle ausgewählt werden darf?
Du hast eine Zelle in der neuen Tabelle ausgewählt?

Ich gebe keinen Dank für eine Rückmeldung, da ich durch solche Beiträge nicht meine Beitragszahl erhöhen muss.
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: Zugriff VBA
09.07.2017 10:04:19
Gerd
Hallo STeve,
das geht am einfachsten mit Kopieren.(Nicht getestet, da Hajo noch am Dateinachbau arbeitet :-))
Dann ist der Ereigniscode des alten Blattes dabei.
Dim ws As Worksheet
Sheets(1).Copy(After:=Sheets(Sheets.Count))
Set ws = ActiveSheet
ws.Name = "DPL PI BH " & FormularStarteingabeMaske.ComboMonat.Value & " " &  _
FormularStarteingabeMaske.ComboJahr.Value ' neues Tabellenblatt wird generiert

Gruß Gerd
Fehlermeldung......
09.07.2017 11:14:32
STeve
Guten Morgen Gerd L......Vorab wieder mal herzlichesten Dank für deine Hilfe/klare Antwort und Mühen.
Wollt ich gleich probieren...aber..
Wenn ich
Sheets(1).Copy(After:=Sheets(Sheets.Count))
einfüge kommt in rot - Fehler beim Kompilieren ..........Erwartet:=
Letzte Klammer ) - hinten weg - kommt ....Listentrennzeichen oder )
Denke du wirst den Fehler gleich finden.
Danke und mfg
STeve
Anzeige
probiers so ...
09.07.2017 14:46:01
Matthias
Sheets(1).Copy After:=Sheets(Sheets.Count)
Wobei ich persönlich nicht mit Index kopieren würde.
Gruß Matthias
Hallo Gerd L....schön dass du da bist.
09.07.2017 15:08:58
STeve
Hi Gerd.
Dein Code klappt natürlich. Danke
bin aber am verzweifeln...da ich auch nicht mit Index (1) arbeiten kann und möchte - - probiere ich seit Stunden
jetzt mit deinem Code:
Sheets(1).Copy After:=Sheets(Sheets.Count)
statt (1)......das Blatt......(Left(Sh.Name, 9) = "DPL PI BH")........irgendwie einzubauen.
Da ich das bestehende Blatt (mit dem linksseitigen Namen "DPL PI BH")zuerst aktivieren/selectieren muss.
Habe schon Schleifen, Select Case und If versucht....kriege es einfach nicht hin.
bräuchte also sowas:
Sheets(Left(Sh.Name, 9) = "DPL PI BH").Copy After:=Sheets(Sheets.Count)
Danke für deine Hilfe.
lg STeve
Anzeige
AW: Sorry Matthias....du bist ja :-)
09.07.2017 15:15:52
STeve
AW: Sorry Matthias....du bist ja :-) owT
Thanks an Gerd und Matthias........lg STeve
09.07.2017 19:36:36
STeve
Danke an Gerd L und Matthias..........habe es jetzt endlich geschafft.
Mit dieser For Next Schleife.....
Dim ws As Worksheet 'Vorschlag von Gerd L- dann wird das Selection_Change_Ereignis mitkopiert
For Each ws In ActiveWorkbook.Worksheets
If Left(ws.Name, 9) = "DPL PI BH" Then
Sheets(ws.Name).Copy After:=Sheets(Sheets.Count) ' ausgebessert von Matthias
GoTo fertig
End If
Next ws
fertig:
Set ws = ActiveSheet

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige