• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

telefoon nummer formaat dmv pulldown wijzigen met juist landcode.

Status
Niet open voor verdere reacties.

mause01

Gebruiker
Lid geworden
19 okt 2012
Berichten
75
Ik heb een code gescheven wanneer ik een telefoon nummer ingeef, automatisch het format omzet naar landcode.

nu is het zo dat wanneer je 06xxxxxxx nummer gebuikt, dit ook voor de USA mogelijk is.

wat wil ik doen.
er mogen allerlei soorten nummers ingegeven worden in (Blad1 range A2:A5000). voorbeeld: 0612345678
daarna moet een pulldown keuze gemaakt worden met een country. (Blad2 range A2:A5000)
deze verwijst naar een landcode. kolom rechst er naast. (Blad2 range B2:B5000)

De code welke in nu gebruik en wil aanpassen met een pulldown keuze.

Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Dim rng As Range        'Main
    Dim aCell As Range      'Main

For Each aCell In Me.Range("A2:A5000").Cells
    If aCell <> "" Then
        If Left(aCell, 4) = "00[COLOR="#FF0000"]31[/COLOR]" Then
            aCell = Replace(aCell, "00[COLOR="#FF0000"]31[/COLOR]", "+[COLOR="#FF0000"]31[/COLOR]")
        ElseIf Left(aCell, 1) = 0 Then
            aCell = "+[COLOR="#FF0000"]31[/COLOR]" & Right(aCell, Len(aCell) - 1)
        End If
       
        If Len(aCell) <> 12 Then
            MsgBox "The length of the phone number [" & aCell.Value & "] in cell [" & aCell.Address & "] is incorrect"
            aCell.ClearContents
        End If
   End If
Next aCell


'Letscontinue
Letscontinue:
    Application.EnableEvents = True
    Exit Sub
Set rng = Nothing
Whoa:
    MsgBox Err.Description
    Resume Letscontinue
End Sub


Voorbeeld:
ik geef het nummber in Blad1 A2.
0612345678

wanneer ik de pulldown een keuze maak bijvoorbeeld "Spanish" (A12)
dan moet de code kijken naar de value welke een cell er naast staat. (B12)
Het resultaat moet dan als volgt zijn.

+34612345678



Bekijk bijlage Phone.xlsm

ik hoop dat het o duidelijk is.
 

Bijlagen

  • Phone.xlsm
    23,8 KB · Weergaven: 32
Laatst bewerkt:
Zet in kolom A de telefoonnummers (0612345678).
Gebruik de combobox voor omzetting (resultaat in kolom B.
 

Bijlagen

  • Phone.xlsb
    26 KB · Weergaven: 30
Zet in kolom A de telefoonnummers (0612345678).
Gebruik de combobox voor omzetting (resultaat in kolom B.

Super dat is mooi.
Is het ook mogelijk om de bestaand cel kolom 1 te veranderen naar het resultaat na keuze van country.

Wel mooi gedaan met weining code.
 
Geen idee wat er in je vraagstelling staat.
 
Geen idee wat er in je vraagstelling staat.

Beste HSV,

Laat maar ik heb het al uitgevonden.
Helemaal bij met het resultaat.
Bedankt! voor de mooie oplossing.

ik heb de offset naar 0 gezet dan veranderd het invul kolom.
 
Dan werkt het maar voor een keer. :p
 
Code:
Private Sub ComboBox1_Change()
If ComboBox1.ListIndex > -1 Then
  Cells(1).CurrentRegion.Columns(1).Name = "bereik"
  Range("bereik")= Evaluate("if(len(bereik)=[COLOR=#ff0000]12[/COLOR],""+" & ComboBox1.Column(1) & """& mid(bereik,[COLOR=#ff0000]4[/COLOR],len(bereik)),"""")")
  Application.Names("bereik").Delete
End If
End Sub

Edit: Werkt niet feilloos, sommige landcodes hebben maar een cijfer.
 
Laatst bewerkt:
Ik vraag me af waarom je dit zou willen? Laat de gebruiker het complete internationale telefoonnummer zelf invullen. Om dan safe te zijn, zou je er nog een inputbox overheen kunnen laten komen waar ze nogmaals hun nummer in moeten voeren. Die 2 kan je dan vergelijken. Of probeer per land te achterhalen wat de lengte is van het nummer. Niet overal worden 10 cijfers gebruikt namelijk.
Maar dit is mijn mening.... ;)
 
DIt gaat niet helemaal goed denk ik.
Wanneer ik deze nieuwe code plaats dan verwijderd deze alles.

Bekijk bijlage Phone.xlsb

verder kan je mij aangeven hoe ik de sheets wijzig in de gene van mij.
jij gebruikt sheets(1) & sheets(2)
ik zou dit willen wijzigen naar sheet1 "User" & Blad1 "Values".
 
Onderstaande is niet erg duidelijk wel?
citaat:
ik zou dit willen wijzigen naar sheet1 "User" & Blad1 "Values".

Als er een foutmelding komt moet je User en Values even verwisselen.
Code:
Private Sub Workbook_Open()
 Sheets("User").ComboBox1.List = Sheets("Values").Cells(1).CurrentRegion.SpecialCells(2).Offset(1).SpecialCells(2).Value
End Sub

Code:
Private Sub ComboBox1_Change()
If ComboBox1.ListIndex > -1 Then
  Cells(1).CurrentRegion.Columns(1).Name = "bereik"
  Range("bereik") = Evaluate("if(bereik[COLOR=#ff0000]>0[/COLOR],""+" & ComboBox1.Column(1) & """& mid(bereik,[COLOR=#ff0000]Len(bereik) - 8[/COLOR],len(bereik)),"""")")
  Application.Names("bereik").Delete
End If
End Sub
 
De code is nu goed.

Heel erg bedankt!!

ik ga hem nu proberen in mijn document te zetten.
 
Laatst bewerkt:
Lijkt me hoogst onwaarschijnlijk, als een cel leeg is stopt currentregion daar, en de cellen daar onder doen niet mee.

Edit. je hebt het alweer aangepast.
 
Beste Hsv,

Kijk even hiernaar
Bekijk bijlage Phone.xlsb

Wanneer ik 1 keer een keuze maak dan werkt het goed, als ik bijvoorbeeld van keuze verander dan krijg ik #WAARDE!
op lege cellen.

verder kom ik er niet achter waarom hij stopt met range op rij 11.

alvast bedankt.
 
In D10 en D11 staat al #WAARDE!, daar gaat de code echt geen telefoonnummer van maken.
 
In D10 en D11 staat al #WAARDE!, daar gaat de code echt geen telefoonnummer van maken.

Dat is natuurlijk waar.
Maar ik denk dat ik het misschien niet goed uitleg.
in de excel wanneer je een selectie maakt met de pulldown veranderen de waarde van cellen D1:D11.
de cellen waar ook een telefoon nummer in staat wijzigine niet.
waar in de code staat er dat deze tot rij 11 gaat.
of zit er iets fout in de code.
Bekijk bijlage Phone.xlsb
 
Je hebt iets aangepast.
Code:
Cells(1, 4).CurrentRegion.Name = "bereik"
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan