In der angehängten Datei lese ich Texte in ein Dictionary ein. Anschließend schrebe ich es per For-each-Schleife in das Direktfenster und finde alles wieder.
Aber alle Versuche ein bestimmtes Item auszugeben schlagen fehl. Auch die Abfrage über . exists() sagt, dass der Key nicht vorhanden ist.
'Anlegen von Key und Item 'Variante 1 'dict.Add Key:="Orange", Item:=45 'dict.Add "Apple", 66 'dict.Add "12/12/2015", "John" 'wird versucht ein Key anzulegen der bereits vorhanden ist, gibt es eine Fehlermeldung 'dict.Add Key:="Orange", Item:=45 ' Key anlegen 'dict.Add Key:="Orange", Item:=75 ' diese Zeile erzeugt ein Fehler da Orange bereits Vorhanden ist
'Variante 2 ' Diese schreibweise hat zwei Verhalten 'dict("Orange") = 45 'gibt es noch keinen Key(Orange) wird Key angelegt und Item 45 zugewiesen 'dict("Orange") = 100 'ist Key bereits Vorhanden wird nur Item geändert = 100
'----------------------------------------------------------------------- 'Prüfen ob ein bestimmter Key vorhanden ist 'If dict.Exists("Orange") Then
'----------------------------------------------------------------------- 'Rückgabe der Werte hinter einem Key 'Dim k As Variant 'For Each k In dict.Keys ' Print key and value ' Debug.Print k, dict(k) 'Next
'------------------------------------------------------------------------ 'Es wird unterschieden ob der Key als Text oder Zahl vorliegt 'If DD.exists("2000") Then MsgBox "ja" 'If DD.exists(2000) Then MsgBox "ja"
Set dictTranslation = CreateObject("scripting.dictionary")
For intTransRow = 3 To .UsedRange.SpecialCells(xlCellTypeLastCell).Row dictTranslation.Add Cells(intTransRow, 1), Cells(intTransRow, intTransCol) Next intTransRow
Bei dieser Art der Füllung werden jedem Wert der Spalte A (sollte Schlüssel sein) zwei Werte zugeordnet (dt, engl). Damit sind die Schlüsseln nicht mehr eindeutig. Es gibt nur deswegen keinen Fehler, da die Zellen ohne (.Value) übergeben wurden.
mfg
(Code gelesen, aber nicht ausgeführt)
Folgende(r) 1 Nutzer sagt Danke an Fennek für diesen Beitrag:1 Nutzer sagt Danke an Fennek für diesen Beitrag 28 • Lutz Fricke
Mein Ziel ist, dass in meinem Makro alle Texte für Fehlermeldungen etc. in Deutsch, Englisch oder jeder anderen angelegten Sprache erscheinen. Dazu habe ich ein Blatt "Translation" angelegt, dieses lese ich je nach Spracheinstellung in ein Dictionary und gebe dann bei Bedarf den Text über z.B. MsgBox dictTranslation("txtMissPlant"), vbOKOnly wieder aus.
Im oberen Bereich habe ich einen Teil der Spracherkennung auskommentiert. Da kann für Versuchszwecke bei Bedarf die Sprache von 2057 auf 1031 umgestellt werden. Unten werden über vier Msgboxen die jeweils eingelesenen Texte ausgegeben.
Ziel ist es, dass mein Makro bei mir deutsche Texte ausgibt und bei einem englischen Kollegen englische Texte. Sollte das Makro an einen spanischen Kollegen weitergereicht werden, könnten durch ergänzen der spanischen Bezeichnungen dort die Meldungen mit spanischem Text erscheinen. Das sollte das Makro auch machen, allerdings weiß ich nicht, ob mein Weg gut ist oder ob es einen viel besseren Weg gibt, um Texte in verschiedenen Sprachen auszugeben.
es soll nicht übersetzt werden, sondern in verschiedenen Sprachen angezeigt werden.
Als andere Erklärung: In meinem Excel ist mein Speichern-Dialog in deutsch, deiner in niederländisch. Meine Menüleiste ist deutsch, deine niederländisch. Wie bekomme ich es hin, dass mein Makro bei mir deutsch spricht ("Bitte Text eingeben:") aber bei dir niederländisch ("Voer tekst in:")?
Ich habe eine Tabelle gemacht, die alle Texte in allen Sprachen enthält, lese davon eine Spalte je nach Spracheinstellung in ein dictionary ein (deutsch 2.Spalte, englisch 3.Spalte) (der Key ist immer die 1.Spalte). Wenn ich einen Text benötige, rufe ich im Code den Key auf und bekomme den entsprechenden Text aus dem dictionary.
Wenn Du in meine Beispieldatei laufen lässt, sind alle Msgboxen in englisch. Kommentierst Du am Beginn des Codes die Zeile lngLanguage = 2057 aus und entfernst das Hochkomma bei lngLanguage = 1031, sind alle MsgBoxen auf deutsch.