Print side | Luk vindue

Hjælp til at kigge i et range for dubletter

Udskrevet fra: Dansk Regneark Forum
Kategori: Hjælp til regneark.
Forum navn: Makro og VBA
Forum beskrivelse: Hjælp til Makroer og VBA-programmering
Web-adresse: https://forum.excel-regneark.dk/forum_posts.asp?TID=3935
Udskrevet den: 05.Maj.2024 kl. 21:50


Emne: Hjælp til at kigge i et range for dubletter
Besked fra: Ambs
Emne: Hjælp til at kigge i et range for dubletter
Posteringsdato: 14.Jun.2019 kl. 13:19
Hej 

Jeg har forsøgt at lave et dokument, hvor jeg har 3 kolonner med indtastninger. I disse 3 kolonner har jeg brug for at blive informeret, hvis jeg tidligere har indtastet en dublet. Jeg har haft forsøgt at få det til at virke ved at bruge data validation, det virker i én kolonne, men kan ikke få det til at virke i et range (A2:C50).
Jeg har også forsøgt med VBA, jeg er ikke en haj til vba, så fik hjælp til koden, men den virker ikke efter hensigten 

"Option Explicit
Dim myRange As Range, myCell As Range
Private Sub Worksheet_Change(ByVal Target As Range)
Set myRange = Range()
For Each myCell In myRange
If WorksheetFunction.CountIf(myRange, myCell.Value) > 1 Then
myCell.Interior.ColorIndex = 3
MsgBox "YOU HAVE ENTERED A DUPLICATE", vbInformation + vbOKOnly, "Test"
Exit Sub
End If
Next
End Sub"

Der skulle vel ikke være nogen der kan hjælpe mig dette?

Mvh,
André  



Svar:
Besked fra: AnneSven
Posteringsdato: 14.Jun.2019 kl. 15:17
Jeg plejer at bruge betinget formatering -> regler for fremhævning af celler -> Dubletværdier når jeg skal søge efter dubletter. Der kan du markere alle de celler der skal kontrolleres






Besked fra: SpillOperator
Posteringsdato: 14.Jun.2019 kl. 22:36
Set myRange = Me.Range("A2:C50")

Men AnneSvens metode med betinget formatering er en meget nemmere, da cellefarven automatisk forsinder når en dubletværdi slettes.

Du kan dog opnå det samme med VBA - fx ved at modificere din makro sådan her:

Private Sub Worksheet_Change(ByVal Target As Range)
'Skal placeres i det pågældende ark-modul
    Dim myRange As Range, myCell As Range
    Set myRange = Me.Range("A2:C50") 'din ønskede range
    For Each myCell In myRange
        If WorksheetFunction.CountIf(myRange, myCell.Value) > 1 Then
            myCell.Interior.ColorIndex = 3
        Else
            myCell.Interior.ColorIndex = 0 'fjerner eventuel gammel dubletfarve
        End If
    Next
End Sub

God fornøjelse :-)



Print side | Luk vindue