Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen

Dialogelemente per VBA ändern

Betrifft: Dialogelemente per VBA ändern von: TomS
Geschrieben am: 24.09.2020 19:41:18

Hallo Allerseits,
Leider muss ich etwas ausholen. Ich habe eine Exceldatei mit Makros + Dialogen. Das File ist mehrsprachig ausgeführt. In den Excelsheets direkt kann man dann die Übersetzung über eigene Funktion oder SVERWEIS implementieren. Die Dialoge sollen auch in der ausgewählten Sprache erscheinen. Dies wurde bis jetzt in jedem Dialog in einer Sub erledigt, die in der Initialize-Routine des Dialoges aufgerufen wurde. Da es nun immer mehr Dialoge werden, wollte ich dies in einem Modul zentralisieren. Der Namen des Dialoges sollte ans Modul übergeben werden und dort wird allen Captions der Label-Elemente der aktuellen String zugewiesen.
Hier habe ich ein Problem. Man kann von "außerhalb" des Dialoges nicht mehr an dessen Elemente (vorzugsweise Labels - Captions). Dies hatte ich probiert über ActiveWorkbook.VBProject.VBComponents(DialogName).Designer Controls(xx) zu bewerkstelligen. In der Initialisierungsphase ist ...Designer "Nothing".


Anderer Ansatz: bei einem Sprachwechsel pauschal alle Dialoge komplett durcharbeiten. Problem ist aber hier, daß das Projekt geschützt ist und im Normalbetrieb auch bleiben soll. Daher geht dies auch nicht. Auch wenn ich den Schutz (manuell) aufhebe, bleibt die Routine immer sporadisch hängen. Warum ist nicht nachvollziehbar. Auch diverse DoEvents haben nicht geholfen.

Hätte jemand noch eine Idee, wie man das anders bewerkstelligen könnte, oder sollte ich die Routine halt in jedem Dialog belassen?

VG
Tom

Betrifft: AW: Dialogelemente per VBA ändern
von: Yal
Geschrieben am: 24.09.2020 21:12:32

Hallo TomS,

Meine Ansatz wäre:
Die Dialogs initialisieren sich mit dem Inhalt von public Variablen, die vorher z.b. beim Excel-Öffnen auf die richtige Sprache initialisiert wurden.
Ich gehe hier davon aus, dass sich die Sprache während eine Session nicht ändert.

Versuche auch die Anzahl an Dialog zu beschränken. Nach Ähnlichkeit gruppieren und innerhalb einer Gruppe ein "kann alles"-Dialog gestalten, wovon beim Situation-abhängige Initialisierung einige Element ausgeblendet werden.

Verarbeitung, immer gleich. Parameter, immer anders.

Viel Erfolg
Yal

Beiträge aus dem Excel-Forum zum Thema "Dialogelemente per VBA ändern"