Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1588to1592
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

Variabler Labelname Userform - Sprachenabhängig

Variabler Labelname Userform - Sprachenabhängig
08.11.2017 13:52:54
Annika
Hallo zusammen,
ist es möglich die Labels in einer Userform entsprechend variabel zu gestallten?
Also in meinem Tabellenblatt 2 habe ich eine Tabelle in der verschiedene Begriffe in verschiedenen Sprachen aufgelistet sind. Die Sprache kann ich durch ein Entwicklertool Kombinationsfeld (Drop-Down) auswählen und pro Sprache wird mir in Zelle "A1" eine Zahl pro Sprache gespeichert.
Also meine Tabellenüberschriften wechseln je nach Sprache mit und ich hätte dies auch gerne für meine Userform. Also ich könnte mir eine If Abfrage vorstellen, die prüft, welche Sprache eingestellt wurde und dementsprechend auf die Felder in der Sprachtabelle zugreift, nur weis ich nicht, wo ich eine Formel für die Labels angeben kann. Ist so etwas überhaupt möglich?
Ich hoffe ich habe mich verständlich ausgedrückt, ansonsten hier mal eine Beispieldatei(Die Spalten A und B sind in Tabelle 2 ausgeblendet): https://www.herber.de/bbs/user/117526.xlsm
Ich freue mich über eure Hilfe. Vielen Dank bereits im Voraus :-)

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Variabler Labelname Userform - Sprachenabhängig
08.11.2017 14:01:15
ChrisL
Hi Annika
Ansatz für Userform_Initialize Ereignis:
Dim i As Integer
For i = 1 To 10
With Worksheets("Language")
Controls("Label" & i).Caption = .Cells(i + 8, .Range("A1") + 3)
End With
Next i
Wenn die Reihenfolge Label mit der Reihenfolge der Übersetzungsliste übereinstimmen würde, dann würde es funktionieren :)
cu
Chris
AW: Variabler Labelname Userform - Sprachenabhängig
08.11.2017 14:26:26
Annika
Hey Chris,
vielen lieben Dank für deine schnelle Antwort, das funktioniert super :-)
...außer (einen Haken muss es ja immer geben) :-)
Wenn in meiner Zelle "Adressline 1" oder "Adressline 2" steht, dann übernimmt es in den Labelnamen nur "Adressline". Wenn in der Zelle "Navision ID" steht übernimmt es das richtig. Also es kann nicht an dem Leerzeichen liegen sondern wohl an der Zahl. Bekommt man das noch ohne großen Aufwand hin?
Vielen Dank!
LG Annika
Anzeige
AW: Variabler Labelname Userform - Sprachenabhängig
08.11.2017 14:28:09
ChrisL
Hi Annika
Kann es sein, dass das Label zu klein ist?
Der Zelleninhalt ist eigentlich egal.
cu
Chris
AW: Variabler Labelname Userform - Sprachenabhängig
08.11.2017 14:41:50
Annika
Oh man, manchmal kann man aber auch echt auf Kleinigkeiten reinfallen. Ja, das war tatsächlich der Fall. Vielen Dank für deine Hilfe!
Du scheinst dich wirklich gut mit Userformen auszukennen. Kannst du mir zufällig auch sagen, wie es funktioniert, wenn ich ein Listenfeld durch ".ListStyle = fmListStyleOption" mit Checkboxen erweitert habe und den Text der gesetzten Häkchen in einer Zelle speichern möchte (Mehrfachauswahl mit Komma getrennt)? Es liest meine entsprechenden Begriffe ein und ich kann Häkchen setzen, bekomme dies Auswahl aber leider nicht gespeichert. (siehe Screenshot - noch sehr unordentlich, ich rede von Listbox 2)
Oder soll ich hierzu eine neue Frage eröffnen?
Userbild
Anzeige
AW: Variabler Labelname Userform - Sprachenabhängig
08.11.2017 14:52:00
ChrisL
Hi Annika
z.B. so...

Dim i As Integer, iCounter As Integer
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) Then
If iCounter = 0 Then
ReDim ar(iCounter)
Else
ReDim Preserve ar(iCounter)
End If
ar(iCounter) = ListBox1.List(i)
iCounter = iCounter + 1
End If
Next i
Worksheets("Tabelle1").Range("B1") = Join(ar, ",")
cu
Chris
AW: Variabler Labelname Userform - Sprachenabhängig
09.11.2017 14:18:36
Annika
Hey Chris,
vielen vielen Dank für deine Hilfe! :-)
Wenn ich nun das Formularsteuerelement zum Öffnen der Userform auch noch variabel nach der Sprache einstellen möchte, muss ich den Code bei "Schaltfläche1_Klicken() UserForm1.Show" einfügen? Dachte das funktioniert dann so ähnlich wie mit den Labels, aber leider nicht. Oder muss ich das unter den Einstellungen "Steuerelement formatieren" einfügen?
Anzeige
AW: Variabler Labelname Userform - Sprachenabhängig
09.11.2017 17:21:35
ChrisL
Hi Annika
Dem Dropdown Steuerelement für die Sprachauswahl folgendes Makro zuweisen:
Sub sprache()
Dim ar: ar = Array("edit list", "Liste editieren", "bla", "bla")
Worksheets("baselist").Shapes("Schaltfläche 31").OLEFormat.Object.Caption = _
ar(Worksheets("Language").Range("A1") - 1)
End Sub
Die Begriffe werden direkt im Code/Array definiert.
cu
Chris
AW: Variabler Labelname Userform - Sprachenabhängig
09.11.2017 18:51:19
Annika
Hey Chris,
du Held, Danke!!
LG
Annika
AW: Variabler Labelname Userform - Sprachenabhängig
09.11.2017 19:04:31
Annika
Hey Chris,
hierzu noch eine kurze Frage:
Abspeichern funktioniert super. Da ich nach dem Speichern meine Liste aber auch über die Userform bearbeiten möchte, indem ich eine Listbox mit allen Lieferanten habe (wie beim Screenshot vorher zu sehen) und durch dortige Auswahl eines Lieferanten werden die entsprechenden Einträge in die Textfelder geladen. Das hätte ich natürlich auch gerne bei den gesetzten Häkchen. Und auch wenn ich dann neue Haken setze, dass die alten in meinem Feld nicht überschrieben, sondern ergänzt werden. Aber dies sollte ja dann kein Problem mehr sein, wenn die gesetzten Häkchen vorher geladen werden.
Und vielen Dank, du löst meine Probleme so perfekt, das macht mich total happy.
LG Annika
Anzeige
AW: Variabler Labelname Userform - Sprachenabhängig
09.11.2017 19:33:24
ChrisL
Hi Annika
Es freut mich, dass du happy bist, aber langsam wird es mir zu umfangreich ;-) Das Gegenstück von Join ist Split und ein Muster für die For-Next Schleife ist auch schon da.
Allerdings ist es mir ein Dorn im Auge, wenn du eine Mehrfachauswahl (Array) Komma-getrennt in eine einzige Zelle drückst. So etwas lässt sich ohne vorgängige Umstrukturierung kaum auswerten. Da du sowieso mittels graphischer Benutzeroberfläche resp. Userform arbeitest, dürft die Übersichtlichkeit der Tabelle weniger ausschlaggebend sein. Darum würde ich pro Auswahl (z.B. Lieferant A, Lieferant B...) eine eigene Spalte machen und mit WAHR/FALSCH kennzeichnen.
Noch besser wäre eine relationale Datenbank :)
https://de.wikipedia.org/wiki/Relationale_Datenbank
cu
Chris
Anzeige
AW: Variabler Labelname Userform - Sprachenabhängig
11.11.2017 02:06:40
Annika
Hey Chris,
kann ich natürlich voll verstehen, wenn es zu umfangreich wird. Ich dachte auch eigentlich es bleibt bei der einen Frage, aber nach und nach hat sich da doch noch mehr als unklar erwiesen. Aber es funktioniert nun genauso, wie ich es haben wollte :-) Vielen Dank für deine Hilfe!!
LG Annika
AW: Variabler Labelname Userform - Sprachenabhängig
10.11.2017 12:51:04
ChrisL
Hi
Nun bekommst du doch noch ein Schnipsel ;)
Dim i As Integer, ii As Integer
Dim ar As Variant
ar = Split(Worksheets("Tabelle1").Range("B1"), ",")
For i = 0 To ListBox1.ListCount - 1
For ii = LBound(ar) To UBound(ar)
If ListBox1.List(i) = ar(ii) Then
ListBox1.Selected(i) = True
Exit For
End If
Next ii
Next i
cu
Chris
Anzeige
AW: Variabler Labelname Userform - Sprachenabhängig
11.11.2017 02:07:38
Annika
Hey Chris,
vielen, vielen Dank, es funktioniert alles :-)
LG Annika
AW: Variabler Labelname Userform - Sprachenabhängig
08.11.2017 14:07:48
Nepumuk
Hallo Annika,
ich hab mir deine Tabelle jetzt nicht angeschaut. Die meisten Denken bei einem Problem wie deinem viel zu kompliziert.
Kopiere die Spalte mit der gewünschten Sprache in eine leere Spalte (Beispiel X ist deine Spalte in die du die gewünschte Sprache kopiert hast), dann kannst du die Überschriften einfach so übernehmen:
=Tabelle_Sprachen!X1
egal welche Sprache gewählt wurde.
Und für Labels einfach so:
Label1.Caption = Worksheets("Tabelle_Sprachen").Range("X66").Value
Wie du siehst, musst du nichts rechnen oder sonst irgendwas.
Gruß
Nepumuk
Anzeige
AW: Variabler Labelname Userform - Sprachenabhängig
08.11.2017 14:28:16
Annika
Hey Nepumuk,
vielen Dank auch für deine schnelle Antwort :-) Danke für die Hilfe.
Chris konnte mir zum Glück super weiterhelfen, es klappt.
LG Annika
AW: noch ne Variante - Codefrei
08.11.2017 16:14:40
Daniel
Hi
du könntest auch statt der Labels für die Überschriften Listboxen verwenden und die RowSource Listbox auf die entsprechende Zelle setzen.
dann wird der Zellinhalt der Zelle in der Listbox angezeigt und damit immer die richtige ausgewählte Sprache (sogar beim bearbeiten des Codes!)
Die Listbox kannst du auch so formatieren, dass sie wie ein Label aussieht und du kannst Enabled = False setzen, damit man sie nicht anklicken kann.
Die Anpassung der Sprache geht so vollautomatisch, ohne Code.
(das ganze würde auch mit einer TextBox und der Eigenschaft "ControlSource" funktionieren, aber da besteht die Gefahr, dass durch eine Eingabe in die TextBox die Formel in der Zelle überschrieben wird, bei der Listbox kann das nicht passieren)
Gruß Daniel
Anzeige
AW: noch ne Variante - Codefrei
08.11.2017 17:33:29
Nepumuk
Hallo Daniel,
sei mal ehrlich, das ist doch "Unsinn".
Einmal die "Sprachenspalte" in die entsprechende "Beschriftungsspalte" kopiert ist doch die einfachste Lösung.
Gruß
Nepumuk
AW: noch ne Variante - Codefrei
08.11.2017 17:42:14
Daniel
Ist ja egal.
du musst die Texte ja auch in die Userform bringen.
Es gibt ja schon Zellen, die den Text in der richtigen Sprache anzeigen.
also kann man auch das Userformelement mit der entsprechenden Zelle verknüpfen, dann wird in der Userform automatisch der richtige Text angezeigt ohne dass man dafür Code braucht.
mit Labels kann an so eine Verknüpfung mit einer Zelle nicht machen.
mit TextBoxen würde es gehen, aber hier hast du eine Schreib/Leseverknüpfung, dh es besteht die Gefahr, dass du dir die Formeln in den Zellen überschreibst.
Bei Listboxen hast du jedoch eine reine Leseverknüpfung und das Risiko besteht nicht.
Deswegen ist es meiner Ansicht nach am sinnvollsten, Listboxen zu verwenden wenn man per Formeln erzeugte Inhalte in einer Listbox anzeigen lassen will.
die gezeigte Schleifenlösung zu befüllung der Labels funktioniert ja nur wenn diese entsprechend der Spaltennummern benannt ist.
ich bevorzuge jedoch eine sprechende Benennung der Steuerelemente, da sind solche Schleifenlösungen nur schwer umsetzbar.
Gruß Daniel
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige