Multilinguale Worksheets [Excel]

Hallöchen,

folgendes Problem ist aktuell hochgekommen:
es gibt ein relativ komplexes Worksheet, in dem verschiedene Daten tabellarisch eingetragen werden. Für die einzelnen Spalten gibt es jeweils den obligatorischen Bezeichner, sowie Instruktionen in einem Kommentarfeld.
Jetzt gibt es unterschiedliche Personen, welche zusammen[!] dieses Sheet bearbeiten möchten (d.h. nicht gleichzeitig, aber auf einer Datei): der eine kann kein Englisch, der andere kein Deutsch.

Wie kann ich es am gescheitesten anstellen, dass folgende 3 Punkte automatisch je nach Sprachwahl (zB über Auswahlliste) selbsttätig geändert werden:
a) Spaltenbezeichner [statisch, sollen nicht geändert werden]
b) Kommentare der Spaltenbezeichner
c) Dropdown-Listen in Zellen, sowie deren Inhalte

Also zum Beispiel:

DE
Frucht °--[etwas zum Essen] | Kalorien °--[Brennwert]
Apfel | 97
Birne | 253

–>

EN
Fruit °--[something to eat] | Calories °--[Nutrition Value]
Apple | 97
Pear | 253

Ich benötige keinen vollständigen Code, nur einen Ansatz, wie ich die Sprachdaten am Gescheitesten hinterlege und dann grob, wie ich das Mapping ändern kann.
Für die statischen Werte käme ich ja eigentlich mit =[Sprachsheet!A2] hin, wenn ich „Sprachsheet“ als den Feldbezeichner wähle, wo der User „DE“ oder „EN“ eingetragen hat.
Aber wie ist es mit Listen, Feldeinträgen und Kommentaren?
Feldeinträge - klar, kann ich mit „Range.Find“ drüber. Listen - Bezeichner umdefinieren?

Prinzipiell wäre es mir viel lieber, wenn ich jedoch keine einzelnen Tabellen für die einzelnen Bezeichner anlegen müßte: nur wie?

Danke,
Michael

Hi Michael,

Jetzt gibt es unterschiedliche Personen, welche zusammen[!]
dieses Sheet bearbeiten möchten (d.h. nicht gleichzeitig, aber
auf einer Datei): der eine kann kein Englisch, der andere kein
Deutsch.
Wie kann ich es am gescheitesten anstellen, dass folgende 3
Punkte automatisch je nach Sprachwahl (zB über Auswahlliste)
selbsttätig geändert werden:
a) Spaltenbezeichner [statisch, sollen nicht geändert werden]

? was soll denn nun an a) geändert werden?

c) Dropdown-Listen in Zellen, sowie deren Inhalte

C) sind Gültigkeitslisten oder was genau?

b) Kommentare der Spaltenbezeichner

Du brauchst 2 neue Tabellenblätter mit den Namen „EN“ und „DE“.
Dann lasse das Makro Auflisten laufen (In den Code stellen und F5 drücken.
Im „DE“ siehst du in Spalte A unterinander deine Kommentare in de Reihenfolge wie sie Excel für richtig hält, desgleichen in Spalte B von „EN“.
Jetzt muß du nur in Spalte A von „EN“ die englischen Übersetzungen eintragen von Spalte B.

Wenn du später mal Kommentare änderst, löschst, einfügst mußt du das Makro Auflisten jeweils nochmal laufen lassen oder manuell in DE bzw EN abändern, das birgt aber das Risiko das der falsche Kommentar in der Zelle angezeigt wird, weil Excel da ein Eigenleben führt welche Reihenfolge es benutzt *glaub, nicht getestet*.

EN und DE kannst du ja später ausblenden, zur Not so daß sie nur mittels Vba wieder sichtbar gemacht werden können.

Die Umschaltung zwischen Deutsch und Englisch geschieht vollautomatisch beim Öffnen der Datei. natürlich nur wenn mit aktivierten Makros gearbeitet wird, ansonsten bleibt die Ländereinstellung der letzten Sitzung gültig.

Gruß
Reinhard

**In "Diese Arbeitsmappe"**

Option Explicit
'
Private Sub Workbook\_Open()
Dim wks As Worksheet, Zelle As Range, Zei As Long
If Application.International(xlCountrySetting) = 49 Then
 Set wks = Worksheets("DE")
Else
 Set wks = Worksheets("EN")
End If
With wks
 For Each Zelle In Worksheets("Tabelle1").UsedRange.SpecialCells(xlCellTypeComments)
 Zei = Zei + 1
 Zelle.Comment.Text Text:=.Cells(Zei, 1).Value
 Next Zelle
End With
End Sub
'
'
**In Modul1:**

Sub Auflisten()
Dim Zelle As Range, Zei As Long
With Worksheets("DE")
 For Each Zelle In Worksheets("Tabelle1").UsedRange.SpecialCells(xlCellTypeComments)
 Zei = Zei + 1
 Worksheets("EN").Cells(Zei, 2) = Zelle.Comment.Text
 .Cells(Zei, 1) = Zelle.Comment.Text
 Next Zelle
End With
End Sub

Also zum Beispiel:

DE
Frucht °–[etwas zum Essen] | Kalorien °–[Brennwert]
Apfel | 97
Birne | 253

–>

EN
Fruit °–[something to eat] | Calories °–[Nutrition Value]
Apple | 97
Pear | 253

Ich benötige keinen vollständigen Code, nur einen Ansatz, wie
ich die Sprachdaten am Gescheitesten hinterlege und dann grob,
wie ich das Mapping ändern kann.
Für die statischen Werte käme ich ja eigentlich mit
=[Sprachsheet!A2] hin, wenn ich „Sprachsheet“ als den
Feldbezeichner wähle, wo der User „DE“ oder „EN“ eingetragen
hat.
Aber wie ist es mit Listen, Feldeinträgen und Kommentaren?
Feldeinträge - klar, kann ich mit „Range.Find“ drüber. Listen

  • Bezeichner umdefinieren?

Prinzipiell wäre es mir viel lieber, wenn ich jedoch keine
einzelnen Tabellen für die einzelnen Bezeichner anlegen müßte:
nur wie?

Danke,
Michael

Dangescheen erstmal.

? was soll denn nun an a) geändert werden?

Ja blöd formuliert. Was ich meine: die Spaltenbezeichner sind auch sprachabhängig, aber die Spalten (Bezeichner und Reihenfolge) selbst können und dürfen vom User nicht modifiziert werden.

c) Dropdown-Listen in Zellen, sowie deren Inhalte

C) sind Gültigkeitslisten oder was genau?

Ja. Inklusive ihrer Inhalte.

Du brauchst 2 neue Tabellenblätter mit den Namen „EN“ und „DE“.

Oki, dann habe ich also hier erstmal einigermaßen ordnungsgemäß gedacht.

EN und DE kannst du ja später ausblenden, zur Not so daß sie nur mittels Vba wieder sichtbar gemacht werden können.

Ui, wie geht denn das? :wink:

Die Umschaltung zwischen Deutsch und Englisch geschieht vollautomatisch beim Öffnen der Datei. natürlich nur wenn mit aktivierten Makros gearbeitet wird, ansonsten bleibt die Ländereinstellung der letzten Sitzung gültig.

Oki, das ist ja mal hilfreich. Danke für den Code auch :wink:

Mit dem „Übersetzen“ von selektierten Werten habe ich eine Lösung - glaube ich zumindest.

Danke,
Michael

Hi Michael,

? was soll denn nun an a) geändert werden?

Ja blöd formuliert. Was ich meine: die Spaltenbezeichner sind
auch sprachabhängig, aber die Spalten (Bezeichner und
Reihenfolge) selbst können und dürfen vom User nicht
modifiziert werden.

also hat das Blatt einen Blattschutz, mit Passwort oder ohne? und die Spaltenüberschriften sind gegen Eingabe gesperrt?

c) Dropdown-Listen in Zellen, sowie deren Inhalte

C) sind Gültigkeitslisten oder was genau?

Ja. Inklusive ihrer Inhalte.

okay.

EN und DE kannst du ja später ausblenden, zur Not so daß sie nur mittels Vba wieder sichtbar gemacht werden können.

Ui, wie geht denn das? :wink:


Sub Ausblenden()
Worksheets(„EN“).Visible = xlVeryHidden
End Sub

Sub Einblenden()
Worksheets(„EN“).Visible = True
End Sub

Mit dem „Übersetzen“ von selektierten Werten habe ich eine
Lösung - glaube ich zumindest.

Schön, dann brauche ich nicht zu raten was genau du damit meinst :smile:

Gruß
Reinhard

Schutz

also hat das Blatt einen Blattschutz, mit Passwort oder ohne? und die Spaltenüberschriften sind gegen Eingabe gesperrt?

Nein ich verwende eine etwas banalere Form des Schutzes:
Daten->Gültigkeit->Benutzerdefiniert „blubbablabba“
Dadurch wird (fast) jeder Versuch, die Zelle gegen meinen Willen zu ändern, im Keim erstickt.
Zumindest hinreichend gut, dass man nicht durch eine falsche Zellenwahl aus Versehen zentrale Bezeichner löscht.

Jetzt habe ich doch noch ein Problemchen:
Also, meine Zelle hat eine Gültigkeit.
Die kann ich jetzt von Blatt A auf Blatt B umschreiben.

Aber wie heißt der Befehl, mit dem ich auslesen kann, ob eine Zelle eine Gültigkeitsliste hat - und wenn ja, welche das ist?

Ich suche sowas wie
X = Cells.Validity.List.Name

Wenn ich sowas hätte, käme ich mit ActiveWorkbook.Names(X).RefersTo genau dahin wo ich hin muss.

also hat das Blatt einen Blattschutz, mit Passwort oder ohne? und die Spaltenüberschriften sind gegen Eingabe gesperrt?

Nein ich verwende eine etwas banalere Form des Schutzes:
Daten->Gültigkeit->Benutzerdefiniert „blubbablabba“

Jetzt habe ich doch noch ein Problemchen:
Also, meine Zelle hat eine Gültigkeit.
Die kann ich jetzt von Blatt A auf Blatt B umschreiben.
X = Cells.Validity.List.Name

nah dran :smile:

Sub Gueltig()
Dim zelle As Range
For Each zelle In ActiveSheet.UsedRange.SpecialCells(xlCellTypeAllValidation)
 MsgBox zelle.Address & " - " & zelle.Validation.Formula1
Next zelle
End Sub

Hilft dir das weiter?

Gruß
Reinhard

Zu früh gefreut… :confused:

Sub Gueltig()
Dim zelle As Range
For Each zelle In
ActiveSheet.UsedRange.SpecialCells(xlCellTypeAllValidation)
MsgBox zelle.Address & " - " & zelle.Validation.Formula1
Next zelle
End Sub

Hilft dir das weiter?

War noch bissi tückisch, jetzt sieht’s aber fesch aus. Wenn ich’s gepackt habe melde ich mich nochmal ^^
Danke,
Michael