Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Via VBA prüfen ob Handynummer dann in Variabel sch

Forumthread: Via VBA prüfen ob Handynummer dann in Variabel sch

Via VBA prüfen ob Handynummer dann in Variabel sch
18.08.2017 10:51:30
Sonja
Einen wunderschönen guten Morgen.
Mit meinen bescheidenen VBA Kenntnissen komme ich leider zu einem Ergebnis.
Für unsere Spenderliste und Unterstüzerliste beim DKR benötige ich eine Methode um schneller ans Ziel zu kommen.
Es gibt drei Zellen die Komunikation1, Komunikation2 und Komunikation3 heissen.
Dort stehen Festnetznummern, Mobilnummern oder E-Mail Adressen drinnen.
Die drei Felder sollen nun per VBA Makro überprüft werden.
Wenn eine Handynummer (im Format 0171 3333333 ) drinnen steht soll die Nummer in eine Variable geschrieben werden und in das Format +491713333333 umgewandelt werden.
Hat vor euch jemand eine Idee wie man das machen kann?
Ich dachte an eine Abfrage If Range(„Komunikation1“) = 0171 or Range(„Komunikation1“) = 0172 or ……
Aber mit meinen bescheidenen VBA Kenntnissen komme ich leider nicht weit 
Liebste Grüße
Sonja
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Via VBA prüfen ob Handynummer
18.08.2017 10:56:20
mumpel
Hallo!
Ich mach das in meinem Wähltool wie folgt. "strT" enthält den Zellinhalt.
If Left(strT, 4) = "0151" Or Left(strT, 4) = "0152" _
Or Left(strT, 4) = "0159" Or Left(strT, 4) = "0160" _
Or Left(strT, 4) = "0162" Or Left(strT, 4) = "0163" _
Or Left(strT, 4) = "0170" Or Left(strT, 4) = "0171" _
Or Left(strT, 4) = "0172" Or Left(strT, 4) = "0173" _
Or Left(strT, 4) = "0174" Or Left(strT, 4) = "0175" _
Or Left(strT, 4) = "0176" Or Left(strT, 4) = "0177" _
Or Left(strT, 4) = "0178" Or Left(strT, 4) = "0179" Then

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0

Gruß, René
Anzeige
AW: Via VBA prüfen ob Handynummer
18.08.2017 11:07:12
Oberschlumpf
Hi René
hierzu habe ich 2 Fragen
1) Könnte man deinen Code nicht auch wie folgt abkürzen?

If Left(strT, 3) = "015" Or Left(strT, 3) = "016" _
Or Left(strT, 3) = "017 Then

Mein Gedanke:
In deinem Code fragst du ja jede Handyvorwahl ab, die es zu geben scheint.
So viel ich weiß, gibt es im Handynummernkreis nur die 015, 016 + 017.
Daher meine obige Idee.
2) Was soll denn nach "Then" passieren? :-)
Zumindest ich kann in deiner Antwort nur bis Then "lesen".
Ciao
Thorsten
Anzeige
AW: Via VBA prüfen ob Handynummer
18.08.2017 11:30:49
mumpel
1. Ich würde das bei "0151" lassen. Es macht sich so m.E. auch besser.
2. Ist nur ein Beispielcode. Was danach passiert kann die Fragestellerin sicher selber. ;) Aber trotzdem mal ein vollständiger Code.
Sub ReplaceNationalPhoneNumber()

  Dim strStart         As String
  Dim strVorwahl       As String
  Dim strRufnummer     As String
  Dim strInternational As String
    
    
    strStart = ActiveCell.Value
    
    If Left(strStart, 4) = "0151" Or Left(strStart, 4) = "0152" _
       Or Left(strStart, 4) = "0159" Or Left(strStart, 4) = "0160" _
       Or Left(strStart, 4) = "0162" Or Left(strStart, 4) = "0163" _
       Or Left(strStart, 4) = "0170" Or Left(strStart, 4) = "0171" _
       Or Left(strStart, 4) = "0172" Or Left(strStart, 4) = "0173" _
       Or Left(strStart, 4) = "0174" Or Left(strStart, 4) = "0175" _
       Or Left(strStart, 4) = "0176" Or Left(strStart, 4) = "0177" _
       Or Left(strStart, 4) = "0178" Or Left(strStart, 4) = "0179" Then
    
          strVorwahl = Left(strStart, 4)
          strRufnummer = Mid(strStart, 5, Len(strStart))
          strInternational = Replace(strVorwahl, "0", "+49")
     
          If MsgBox("Wurde die Rufnummer korrekt formatiert?" & vbCrLf & _
                     strInternational & strRufnummer, _
                     vbYesNo + vbQuestion, "Rufnummer International") = vbYes Then
          
             With ActiveCell.Offset(0, 1)
                 .NumberFormat = "@"
                 .Value = strInternational & strRufnummer
             End With
         
          End If
    Else

          MsgBox "Keine Mobilfunkrufnummer gefunden", 64, "Hinweis"
 
    End If

End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


Anzeige
ok, von mir...
18.08.2017 11:34:40
mir...
Hi René
...ein Danke.
Mein 1) war nur eine Idee.
Jetzt warten wir mal neugierig auf Sonja's Antwort.
Ciao
Thorsten
AW: ok, von mir...
18.08.2017 11:36:35
mir...
Es kommt sicher auch darauf an wie man mit einzelnen Vorwahlen weiter verfahren will.
AW: Via VBA prüfen ob Handynummer
18.08.2017 15:42:37
Werner
Hallo,
bin hier auch am Mitlesen. Meint ihr nicht, dass eine Prüfung der ersten beiden Ziffern schon reicht?
Festnetznummern gibt es in Deutschland nur von 02 bis 09.
Auch in Bezug auf eine eventuelle Auslandsnummer wäre unproblematisch. Die würde dann entweder mit 00 oder mit +? beginnen.
Problematisch wäre nur, wenn der User die Telefonnummer ohne eine führende 0 eingeben würde. Da müsste dann ggf. noch eine entsprechende Prüfung rein.
Ich habs für mich mal so zusammengebastelt:
Public Sub Vorwahl()
Dim international As String
If Left(ActiveCell.Value, 2) = "01" Then
international = WorksheetFunction.Substitute(ActiveCell.Value _
, Left(ActiveCell.Value, 1), "+49")
international = WorksheetFunction.Substitute(international, " ", "")
End If
MsgBox international
End Sub
Gruß Werner
Anzeige
AW: Via VBA prüfen ob Handynummer
18.08.2017 19:38:20
mumpel
Es gibt auch Festnetznummern die mit "01" beginnen (Z.B. 0137. Sogenannte Mehrwertdienstnummern).
Eins zu null für dich. o.w.T.
18.08.2017 20:12:41
Werner
AW: Via VBA prüfen ob Handynummer dann in Variabel sch
21.08.2017 02:35:54
Werner
Hallo,
mir war im Nachtdienst langweilig.
Habe jetzt auch mal was zusammengebastelt. Dabei ist es egal, ob die Nummer mit oder ohne führende 0 eingegeben wurde. Ebenfalls egal, sollte die Nummer schon im internationalen Format vorliegen.
Als Eingabezellen werden die Zellen A2, B2, C2 überprüft.
Was dann weiter passieren soll?
Public Sub International()
Dim strVorwahl As String, strTelefon As String, strInternational As String
Dim raBereich As Range, raZelle As Range, boFund As Boolean
Set raBereich = Range("A2:C2")
For Each raZelle In raBereich
'gängige Trennzeichen und Leerzeichen raus
strTelefon = WorksheetFunction.Substitute(raZelle.Value, " ", "")
strTelefon = WorksheetFunction.Substitute(strTelefon, "-", "")
strTelefon = WorksheetFunction.Substitute(strTelefon, "/", "")
'Prüfung ob Nummer mit 0 beginnt
If Left(strTelefon, 1) = 0 Then
strVorwahl = Left(strTelefon, 4)
'Prüfung auf Deutsche Handyvorwahl (mit führender 0)
Select Case strVorwahl
Case "0151", "0152", "0159", "0160", "0162", "0163", "0170", "0171" _
, "0172", "0173", "0174", "0175", "0176", "0177", "0178", "0179"
strInternational = WorksheetFunction.Substitute(strTelefon _
, Left(strTelefon, 1), "+49")
boFund = True
MsgBox "Mobilfunknummer im internationalen Format:" _
& vbLf & vbLf & "                    " & strInternational _
& "   in Zelle " & raZelle.Address(0, 0)
Case Else
End Select
'Prüfung ob Nummer mit 1 beginnt
ElseIf Left(strTelefon, 1) = 1 Then
strVorwahl = Left(strTelefon, 3)
'Prüfung auf Deutsche Handyvorwahl (ohne führende 0)
Select Case strVorwahl
Case "151", "152", "159", "160", "162", "163", "170", "171" _
, "172", "173", "174", "175", "176", "177", "178", "179"
strInternational = "+49" & strTelefon
boFund = True
MsgBox "Mobilfunknummer im internationalen Format:" _
& vbLf & vbLf & "                    " & strInternational _
& "   in Zelle " & raZelle.Address(0, 0)
Case Else
End Select
'Prüfung ob Nummer bereits im internationalen Format vorliegt
ElseIf Left(strTelefon, 1) = "+" Then
strVorwahl = Left(strTelefon, 6)
'Prüfung auf Deutsche Handyvorwahl (mit führendem +49)
Select Case strVorwahl
Case "+49151", "+49152", "+49159", "+49160", "+49162", "+49163", "+49170" _
, "+49171", "+49172", "+49173", "+49174", "+49175", "+49176", "+49177" _
, "+49178", "+49179"
strInternational = strTelefon
MsgBox "Nummer liegt schon im internationalen Format vor." _
& vbLf & vbLf & "                    " & strInternational _
& "   in Zelle " & raZelle.Address(0, 0)
boFund = True
Case Else
End Select
End If
Next raZelle
If Not boFund Then MsgBox "Keine Mobilfunknummer vorhanden."
End Sub
Gruß Werner
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Handynummern in Excel mit VBA prüfen und formatieren


Schritt-für-Schritt-Anleitung

Um Handynummern in Excel zu prüfen und in das internationale Format zu konvertieren, kannst du ein VBA-Makro verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke auf Einfügen > Modul.

  3. Kopiere den folgenden Code in das Modul:

    Sub ReplaceNationalPhoneNumber()
        Dim strStart As String
        Dim strVorwahl As String, strRufnummer As String, strInternational As String
    
        strStart = ActiveCell.Value
    
        If Left(strStart, 4) = "0151" Or Left(strStart, 4) = "0152" Or _
           Left(strStart, 4) = "0159" Or Left(strStart, 4) = "0160" Or _
           Left(strStart, 4) = "0162" Or Left(strStart, 4) = "0163" Or _
           Left(strStart, 4) = "0170" Or Left(strStart, 4) = "0171" Or _
           Left(strStart, 4) = "0172" Or Left(strStart, 4) = "0173" Or _
           Left(strStart, 4) = "0174" Or Left(strStart, 4) = "0175" Or _
           Left(strStart, 4) = "0176" Or Left(strStart, 4) = "0177" Or _
           Left(strStart, 4) = "0178" Or Left(strStart, 4) = "0179" Then
    
            strVorwahl = Left(strStart, 4)
            strRufnummer = Mid(strStart, 5, Len(strStart))
            strInternational = Replace(strVorwahl, "0", "+49")
    
            ActiveCell.Offset(0, 1).Value = strInternational & strRufnummer
            MsgBox "Nummer im internationalen Format: " & strInternational & strRufnummer
        Else
            MsgBox "Keine Mobilfunknummer gefunden."
        End If
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Markiere die Zelle mit der Handynummer und führe das Makro aus: Entwicklertools > Makros > Wähle ReplaceNationalPhoneNumber und klicke auf Ausführen.


Häufige Fehler und Lösungen

  • Fehler: "Keine Mobilfunknummer gefunden."

    • Lösung: Überprüfe, ob die eingegebene Handynummer das richtige Format hat (z.B. 0171 3333333) und keine zusätzlichen Leerzeichen enthält.
  • Fehler bei der Formatierung der Nummer

    • Lösung: Stelle sicher, dass die Zelle mit der Handynummer als Text formatiert ist, bevor du das Makro ausführst. Du kannst auch die Funktion Trim verwenden, um Leerzeichen zu entfernen.

Alternative Methoden

Wenn du keine VBA-Programmierung verwenden möchtest, kannst du auch die Excel-Funktionen WENN, LINKS, RECHTS und VERKETTEN nutzen, um die Handynummer zu prüfen und zu formatieren. Hier ein Beispiel:

=WENN(LINKS(A1; 4)="0171"; "+49" & RECHTS(A1; LEN(A1)-1); "Keine gültige Handynummer")

Diese Formel prüft, ob die Handynummer mit "0171" beginnt und gibt das internationale Format zurück.


Praktische Beispiele

  1. Beispiel für das Makro:

    • Wenn die Zelle A1 die Handynummer 0171 1234567 enthält, gibt das Makro +491711234567 in der Zelle B1 aus.
  2. Formelbeispiel:

    • Bei der Eingabe von 0152 7654321 in A1 könnte die Formel in B1 wie folgt aussehen:
    =WENN(LINKS(A1; 4)="0152"; "+49" & RECHTS(A1; LEN(A1)-1); "Keine gültige Handynummer")

Tipps für Profis

  • Nutze Reguläre Ausdrücke in VBA, um flexiblere Prüfungen durchzuführen, falls du komplexere Formate unterstützen möchtest.
  • Verwende das Excel-Sonderformat für Telefonnummern, um sicherzustellen, dass eingegebene Nummern korrekt angezeigt werden.
  • Teste dein Makro mit verschiedenen Handynummern, um sicherzustellen, dass es robust ist und alle gängigen Vorwahlen wie 0151, 0172 oder +49163 korrekt verarbeitet.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Zellen gleichzeitig prüfen? Du kannst das VBA-Makro anpassen, um eine Schleife über einen Bereich von Zellen zu erstellen, anstatt nur die aktive Zelle zu verwenden.

2. Was, wenn die Handynummer bereits im internationalen Format vorliegt? Das Makro kann erweitert werden, um zu prüfen, ob die Nummer bereits mit +49 beginnt, und diese nicht erneut zu formatieren.

3. Wie gehe ich mit Vorwahlen wie 0152 und 0159 um? Du kannst die Vorwahlen in der If-Bedingung des Makros hinzufügen, um diese ebenfalls zu berücksichtigen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige