Hallo,
hm, mir gefällt der Code auch immer besser :-).
Vielleicht ist das eine Lösung:
Option Explicit
Private Sub TextBox1_Change()
Cells(1, 1).Value = TextBox1.Value
End Sub
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 And Shift = 0 Then 'Enter ohne (Shift | STRG | Alt | ...)
If ersetze_Abkuerzungen() Then
KeyCode = 0
End If
End If
End Sub
Function ersetze_Abkuerzungen()
'Returns True if abbreviation is replaced
Static Dic As Object
'Alle Abkurzungen und Langtexte in ein Dictionary
If Dic Is Nothing Then
Set Dic = CreateObject("Scripting.Dictionary")
Dic.Add "A123", "Kunde anschreiben"
Dic.Add "A124", "blabla4"
Dic.Add "A125", "blabla5"
'Dic.Add ..., ...
End If
ersetze_Abkuerzungen = False
'wenn A### am Ende des Textes im Dictionary, dann ersetzen:
With TextBox1
If Right(.Text, 4) Like "A###" Then
If Dic.Exists(Right(.Text, 4)) Then
.Text = Mid(.Text, 1, Len(.Text) - 4) & Dic(Right(.Text, 4))
ersetze_Abkuerzungen = True
End If
End If
End With
End Function
(Option Explicit darf nicht zwei Mal im Modul auftauchen, und muss die erste ausführbare Codezeile sein)
Grüße, Ulrich
|