Replace beim verlassen einer Zelle



Excel-Version: 2000
nach unten

Betrifft: Replace beim verlassen einer Zelle
von: Ingrid
Geschrieben am: 10.04.2002 - 14:42:58

Hallo Leute,

ich habe eine Excel Tabelle mit Adressen und Problemen.
In dieser Tabelle gibt es Adressen für den deutschen Sprachraum mit umlauten und Adressen für den englischen Sprachraum ohne Umlaute.
Wie kann ich beim Verlassen der Zellen mit einer Adresse für den englischen Sprachraum die Umlaute ü, ä, ö gegen ue, ae und oe mit Replace in VBA tauschen.
Die Spalten mit den Adressen für den deutschen Sprachraum sind mit „English“ und für den deutschen Sprachraum mit „German“ als Spaltenüberschrift gekennzeichnet.
Ich hoffe irgendjemand kann mir bei diesem Problem weiterhelfen.

Gruß

Ingrid


nach oben   nach unten

Re: Replace beim verlassen einer Zelle
von: Martin Beck
Geschrieben am: 10.04.2002 - 15:24:21

Hallo Ingrid,

meinst Du bei JEDEM Verlassen einer Zelle oder beim verlasen einer Zelle, nachdem ein Eintrag vorgenommen wurde? Bei letzterem kannst Du das Worksheet_Change-Ereignis einsetzen. Wenn Du nicht klar kommst, poste mal den Tabellenaufbau, damit man sehen kann, was nach wo übernommen werden soll, insb. wieviele und welche Spalten die deutschen Adreßangaben enthalten.

Gruß
Martin Beck


nach oben   nach unten

Re: Replace beim verlassen einer Zelle
von: Kl@us-M.
Geschrieben am: 10.04.2002 - 15:25:39

Hallo Ingrid,
versuch´s mal so:


Private Sub Worksheet_Change(ByVal Target As Excel.Range)
          If Not Intersect(Target, Range("a:A")) Is Nothing Then
          Columns("A:A").Select
    Selection.Replace What:="ä", Replacement:="ae", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False
    Selection.Replace What:="ö", Replacement:="oe", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False
    Selection.Replace What:="ü", Replacement:="ue", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False
    ActiveCell.Select
End If
End Sub

Gruß
Klaus-Martin

nach oben   nach unten

Re: Replace beim verlassen einer Zelle
von: Harald Kapp
Geschrieben am: 10.04.2002 - 15:32:36

Hallo Ingrid,
im Codemodul des tabellenblattes (auf den Tab am unteren Rand gehen und per Kontextmenue öffnen) folgenden Code eingeben:


Option Explicit
Public flag As Boolean

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
   Dim As Integer
   Dim str1, str2, chr As String
   'Annahme: Deutsch = Spalte A (1), Englisch = Spalte B (2)
   str1 = Target.Value
   If Target.Column = 2 And Len(str1) > 0 And flag = False Then
      flag = True
      str2 = ""
      Do
         chr = Left(str1, 1)
         str1 = Right(str1, Len(str1) - 1)
         Select Case chr
            Case Is = "ä"
               str2 = str2 & "ae"
            Case Is = "ö"
               str2 = str2 & "oe"
            Case Is = "ü"
               str2 = str2 & "ue"
            Case Else
               str2 = str2 & chr
         End Select
      Loop Until Len(str1) <= 0
      If flag = True Then
         Target.Value = str2
      End If
   End If
   flag = False
End Sub

Großbuchstaben, ß etc. überlasse ich Deiner Übung. Sicher nicht die eleganteste Lösung, aber funktioniert.

Wichtig ist das Flag: Ohne dieses ruft sich die Prozedur nach ändern des Zellwertes rekursiv immer wieder auf, der rechner staht und stürzt evtl. sogar ab.

Gruß Harald

nach oben   nach unten

Re: Replace beim verlassen einer Zelle
von: Harald Kapp
Geschrieben am: 10.04.2002 - 15:32:40

Hallo Ingrid,
im Codemodul des tabellenblattes (auf den Tab am unteren Rand gehen und per Kontextmenue öffnen) folgenden Code eingeben:


Option Explicit
Public flag As Boolean

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
   Dim As Integer
   Dim str1, str2, chr As String
   'Annahme: Deutsch = Spalte A (1), Englisch = Spalte B (2)
   str1 = Target.Value
   If Target.Column = 2 And Len(str1) > 0 And flag = False Then
      flag = True
      str2 = ""
      Do
         chr = Left(str1, 1)
         str1 = Right(str1, Len(str1) - 1)
         Select Case chr
            Case Is = "ä"
               str2 = str2 & "ae"
            Case Is = "ö"
               str2 = str2 & "oe"
            Case Is = "ü"
               str2 = str2 & "ue"
            Case Else
               str2 = str2 & chr
         End Select
      Loop Until Len(str1) <= 0
      If flag = True Then
         Target.Value = str2
      End If
   End If
   flag = False
End Sub

Großbuchstaben, ß etc. überlasse ich Deiner Übung. Sicher nicht die eleganteste Lösung, aber funktioniert.

Wichtig ist das Flag: Ohne dieses ruft sich die Prozedur nach ändern des Zellwertes rekursiv immer wieder auf, der rechner staht und stürzt evtl. sogar ab.

Gruß Harald

nach oben   nach unten

Re: Replace beim verlassen einer Zelle
von: Ingrid
Geschrieben am: 10.04.2002 - 17:17:02

Hallo Leute,

ich habe beide Versionen eingebunden und getestet, und beide funktionieren auf anhieb.

Danke euch für eure Hilfe.

Gruß
Ingrid


 nach oben

Beiträge aus den Excel-Beispielen zum Thema "Replace beim verlassen einer Zelle"