Gå til innhold

Sjekke for duplikat i VBA Excel 2007


Arcus

Anbefalte innlegg

Skrevet

Hei !

 

Har en kollega som har kjørt seg litt fast.

 

Han holder på å lage en form for telefonliste i Excel 2007 og vba.

 

Utfordringen er som følger.

 

Han har en userform med en tekstboks, det han ønsker er at når det skrives et nummer i textboksen skal det utføres en duplikatsjekk på nummeret som brukeren har skrevet inn, sjekkes mot rangen A2:A400

 

Aller helst skal denne sjekken skje umiddelbart etter brukerne har trykket enter eller tab og gått videre til neste felt i skjemaet, sekundert at sjekken skal utføres når brukeren trykker OK knappen før innlastet info lagres til arbeidsboken.

 

Noen gode forslag på hvordan vi kan prøve å løse dette ?

Videoannonse
Annonse
Skrevet

Her er et eksempel. Hvis du feltet du skriver i heter TextBox1 og du også har en etikett i skjemaet som heter Label1, da kan du til en hver tid vise hvor mange ganger teksten i TextBox1 finnes blant A2:A200 ved å skrive dette:

 

Private Sub TextBox1_Change()
Me.Label1.Caption = WorksheetFunction.CountIf(Range("a1:a200"), Me.TextBox1.Value)
End Sub

Skrevet

Det som kompliserer dette forferdelig er alle måter å skrive et telefonnummer. Noen vil Excel oppfatte som tall, mange som tekst, og noen varianter blir avvist. Det er ikke enkelt å finne duplikatene her:

 

987 65 432

0047 987 65 432

+47 987 65 432

98765432

9876 5432

98 76 54 32

+47 98 76 54 32

004798765432

 

Beste hilsen Harald

Skrevet

Det er sant, det blir litt kaotisk hvis listen består av ulike formater. Hvis det alltids er norske nummer, da kan man jo lage en hjelpekolonne og heller sjekke etter duplikater i denne.

 

=HØYRE(BYTT.UT(A2;" ";"");8)

 

Da får man de åtte siste sifrene uten mellomrom.

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...