Ausgangslage:
Ich habe in einer Mappe mehrere Tabellenblätter, die ich mehrsprachig führen möchte. Bis jetzt habe ich alles über Sverweis gelöst (wird mit der Zeit unübersichtlich und ist schwierig für Änderungen) , und den VBA-Teil über eine Sprachtabelle mit unten stehender Funktion.
Nun möchte ich diese Funktion auch in den Tabellenblättern verwenden, was eigentlich auch funktioniert.
Wenn ich aber nun die Sprache ändere (global für allle Blätter) muss ich ja gezwungenermassen das Tabellenblatt beim öffnen neu berechnen, da ich ja in den Zellen nichts direkt verändere.
Ich habe mit:
Sub Worksheet_Activate()
Calculate
End Sub
getestet, dann mit Application.Calculate, mit ActiveSheet.Calculate usw.
Jedes mal funktioniert es genau einmal, wenn ich den Code ändere. Danach werden die Zellen mit meiner Funktion nicht mehr neu berechnet. Excel merkt, dass sich etwas verändert hat und bringt unten links "Berechnen". Aber auch diese manuelle Auslösung ändert nichts an den Zellen mit meiner Funktion.
Nur Application.CalculateFull funktioniert richtig. Ich möchte aber aus zeitlichen Gründen _ nicht, dass jedes mal die ganze Application durchgerechnet wird.
Function getText(textKey As String) As String
Dim text As String
Dim strAddress As String
Dim rng As Range
On Error GoTo Meldung
Set rng = Worksheets("Sprachen").Cells.Find(textKey)
If Worksheets("Sprachen").Cells(1, 1).Value = "DE" Then
getText = Worksheets("Sprachen").Cells(rng.Row, 2)
Else
getText = Worksheets("Sprachen").Cells(rng.Row, 3)
End If
On Error GoTo 0
Exit Function
Meldung:
getText = "[textKey '" & textKey & "' nicht gefunden]"
End Function
Frage:
Was mache ich falsch oder liegt irgend ein Problem mit meiner Excelinstallation vor? Gemäss Handbüchern und Recherche im Internet sollte eigentlich Calculate auf ein Tabellenblatt funktionieren.
Vielen Dank für jeden Hinweis.
Gruss
Roland