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

Userform über Variable ansprechen (Set UF_Dialog = UF_PRIVATE_Dialog)

Userform über Variable ansprechen (Set UF_Dialog = UF_PRIVATE_Dialog)
13.01.2020 12:09:04
Zacharias
Hallo liebe Excel-Spezis,
ich versuche folgendes Problem zu lösen:
Ich habe eine Datei mit diversen Modulen und Userformen, mit der ich Auswertungen erzeuge.
Eine abgespeckte d.h. via VBE um „PRIVATE“-Module und –Userformen bereinigte Version dieser Datei, geht turnusmäßig an andere Nutzer, die nur Teilfunktiontionalität nutzen (dürfen).
Nun habe ich je nach Nutzer u.a. eine Userform UF_PRIVATE_Dialog für mich und eine UF_PUBLIC_Dialog für alle anderen Nutzer.
Im Code verwende ich allerdings nur das Objekt UF_Dialog (Public UF_Dialog As Object ) , daß ich wie folgt abhängig vom Dateinamen der jeweils gültigen Userform zuweise:
Select Case True
Case UCase(ThisWorkbook.Name) = "TOOL_ADMIN.XLSM"
Set UF_Dialog = UF_PRIVATE_Dialog
Case Else
Set UF_Dialog = UF_PUBLIC_Dialog
End Select

Nun mein Problem:
Die PRIVATE -Module/Userformen lösche ich in den Nutzerdateien via VBE.
Daher wird in den Nutzerversionen die Codezeile
Set UF_Dialog = UF_PRIVATE_Dialog
aufgrund der gelöschten Userform UF_PRIVATE_Dialog bemängelt.
Als Alternative in der Zuweisung hatte ich daher versucht UF_Dialog wie folgt zuzuweisen:

Select Case True
Case UCase(ThisWorkbook.Name) = "TOOL_ADMIN.XLSM"
Set UF_Dialog = ThisWorkbook.VBProject.VBComponents("UF_PRIVATE_Dialog")
Case Else
Set UF_Dialog = ThisWorkbook.VBProject.VBComponents("UF_PUBLIC_Dialog")
End Select

Das funktioniert zwar, nur habe ich nun das Problem, dass die Zuweisung auf diese Art ein _ anderes Ergebnis liefert, als die Variante

Set UF_Dialog = UF_PRIVATE_Dialog
Das Objekt bzw. seine Eigenschaften weichen bei beiden Varianten voneinander ab.
Dadurch kann ich nicht wie vorher auf die Objekte der Userform zugreifen.
Z.B. funktioniert die Anweisung

UF_Dialog.L_PROJ_PAB_Aktuell = "  " & strID_PROJ_PAB_aktuell
nicht, während die Anweisung bei Nutzung der konkreten Userform funktioniert:
UF_PUBLIC_Dialog.L_PROJ_PAB_Aktuell = "  " & strID_PROJ_PAB_aktuell.

Ich würde mich sehr freuen, wenn mir jemand einen Hinweis geben könnte, wie ich eine funktionierende Zuweisung realisieren kann, bei der ich eine Variable UF_Dialog genauso im Code nutzen kann, wie die tatsächliche Userform UF_PRIVATE_Dialog.
Wie immer vielen Dank vorab, für jeden der sich mit meinem Problem beschäftigt.
Ich wünsche Euch einen schönen Wochenstart.
Zacharias

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Userform über Variable ansprechen (Set UF_Dialog = UF_PRIVATE_Dialog)
13.01.2020 12:32:27
Zacharias
Als Ergänzung noch ein Bild von den Inhalten der UF_Dialog-Userform abhängig von der Art der Zuweisung.
Userbild
AW: Userform über Variable ansprechen (Set UF_Dialog = UF_PRIVATE_Dialog)
13.01.2020 14:52:34
Mullit
Hallo,
versuchs mal hiermit:
Set UF_Dialog = UserForms.Add("UF_PUBLIC_Dialog")

Gruß, Mullit
AW: Userform über Variable ansprechen (Set UF_Dialog = UF_PRIVATE_Dialog)
13.01.2020 15:57:44
Zacharias
Hallo Mullit,
absolut Super !! Sehr gut - das ist die Lösung. Vielen Dank!
Da wäre ich nicht drauf gekommen, ich hätte eher erwartet, daß userforms.add
eine neue userform erzeugt.
Daß ich mich erst jetzt melde, liegt daran, daß ich erst noch den Grund für die Meldung
Laufzeitfehler '28':
Nicht genügend Stapelspeicher
finden mußte.
Lag aber daran, daß sich meine SetVariables-Sub in der ich die UF_Dialog Zuweisung durchführe
rekursiv startete, weil die Anweisung

Set UF_Dialog = UserForms.Add("UF_PRIVATE_Dialog")
das Userform_Initialze Ereignis aufruft, wo die SetVariables-Sub ebenfalls aufgerufen wird.
Schön blöd von mir ;-)
Diese Lösung suche ich seit Wochen, mit was für Krücken habe ich den bisherigen Workaround gesichert - irre!
Also nochmal vielen Dank an Dich!
Viele Grüße
Zacharias
Anzeige
AW: Userform über Variable ansprechen (Set UF_Dialog = UF_PRIVATE_Dialog)
13.01.2020 23:45:44
Mullit
Hallo Zacharias,
ah alles klar, super...
Ja, mit UserForms.Add wird die Form der UserForms-Auflistung hinzugefügt und dabei automatisch geladen, somit wird auch das Initialize-Event gefeuert, als Alternative könnte man das Activate-Event nehmen.
Gruß, Mullit

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige