In Excel 2000/2003 gebe ich in einem neuen Tabellenblatt in einer Spalte
Telefonnummern ein, ohne spezielle Formatierung,also Format=Standard. Beispiel:
089/123456
0221/987654
Dann entferne ich "/", indem ich dieses Zeichen mit Bearbeiten/Ersetzen durch ""
(leer) ersetze. Ergebnis:
89123456
221987654
Die führende Null ist weg! Offenbar meint Excel, weil nun ausschließlich Ziffern
in der Stelle stehen, handele es sich um einen numerischen Wert.
Das Problem kann *nicht* gelöst werden durch Formatieren der Spalte als Text.
Das Problem kann gelöst bzw. umgangen werden, indem man
a) die Daten mit vorangestelltem ' (einfacher Apostroph) eingibt, oder
b) das Ersetzen in einer anderen Zelle durchführt mit =WECHSELN(A1, "/";"")
Lange Rede, kurze Frage: Gibt es eine Lösung, die ohne die Workarounds a) und b)
funktioniert?
Grüße
Rainer
Nein. Telefonnummern sind unterschiedlich lang; daher entfällt ein
Zahlenformat. Dir bleibt tatsächlich nur =WECHSELN und dessen
InhalteEinfügendes Überkopieren über A1. Immerhin geht das in einem Rutsch.
Du könntest auch weiterhin Deine Nummern mit 0 als Zahl eingeben, und
Worksheet_Change ändert sofort die Eingaben NUR in der Telefonnummernspalte
auf "0"&bisherigeEingabe (was einen String ergibt). Lies Dir dazu Beispiele
bei GoogleGroups durch.
--
Moin+Gruss Alexander - MVP for MS Excel - www.xxcl.de - mso2000sp3 --7-2
Vielen Dank für die prompte Antwort. Nur das mit den Beispielen bei GoogleGroups
versteh ich nicht.
Grüße
Rainer
Das sollte bedeuten: Dort Beispiele für Worksheet_Change (wegen der
Behandlung von Target und ggflls Intersect); gibts aber auch in der
Excel-Hilfe.
Tipp noch für die Eingabeersetzung:
- ohne Zeichen wird es eine Nummer mit Ortsvorwahl (0...): Aus 089/30404030
wird '08930404030, wahlweise '+498930404030
- mit vorangehendem , wird die lokale Ortsvorwahl vorgehängt (089... für
MUC): Aus ,30404030 wird '08930404030, wahlweise '+498930404030
- mit vorangehendem . (statt +, weil das nicht geht) werden (00...) oder
(+...) vorangestellt: Aus .33112345678 wird '+33112345678
Verstehe ich richtig, dass ich ein Makro namens Worksheet_Change programmieren
soll, welches diese Ersetzungen für mich durchführt? Super! Das geschilderte
Problem habe nicht ich selbst, sondern eine Bekannter, der makro-mäßig total
unbeleckt ist. Der kommt schon mit der Umsetzung der WECHSELN/Kopieren/Inhalte
Einfügen/Werte - Lösung nicht zurecht.
Trotzdem Danke
Rainer
Der Bekannte wird jedoch ein einleitendes ' setzen können :-), womit wir
wieder beim Anfang wären. Es muss ja keiner die angebotene Hilfe in Anspruch
nehmen.
Ins Klassenmodul der Tabelle (nicht: normales Modul!) einfügen:
Private Sub Worksheet_Change(ByVal Target As Range)
'Rückgabe der Tel-Nr immer als +498912345678
'Im Standardfall "Inland" egal, ob mit oder ohne 0 eingegeben
Application.EnableEvents = False
'sonst ruft es sich immer wieder auf, wegen Target-Änderung im Code
Land = "'+49"
LandVorwahl = "'+4989"
If Target.Column = 8 Then
'Bitte Spalte H auf gewünschte Spalte ändern
Select Case Left(Target.Value, 1)
Case "#"
'Eingabe ohne Land, ohne Vorwahl, z.B. #12345678 (lokale Nummer)
Target = LandVorwahl & Replace(Replace(Target.Value, "/", ""), "#",
"")
Case "."
'Eingabe mit Land, mit Vorwahl, z.B. .498912345678 (ausländische Nr)
Target = Replace(Replace(Target.Value, "/", ""), ".", "'+")
Case 1 To 9
'Eingabe ohne Land, mit Vorwahl, z.B. 8912345678 (inländische Nr)
Target = Land & Replace(Target.Value, "/", "")
Case Else
'Texte und anderes bleiben unverändert
End Select
End If
Application.EnableEvents = True
End Sub