Melding dubbele waarden

Status
Niet open voor verdere reacties.

Feijtert

Gebruiker
Lid geworden
9 jan 2008
Berichten
37
Hallo,

Ik heb een bestand gemaakt waarmee de voorraad geïnventariseerd wordt. Dit bestand bestaat uit 5 tabbladen. In het tabblad in de bijlage worden de artikelnummers per locatie ingescand. Nu heb ik geprobeerd om een melding weer te geven wanneer een artikelnummer voor de 2e keer gescand wordt. Dit mag namelijk niet gebeuren omdat de systeemvoorraad dan wordt verdubbeld. Ik weet dat het ook met voorwaardelijke opmaak kan, maar ik heb toch liever dat er een melding verschijnt. Ik heb op internet een aantal codes gevonden, echter ik heb vooralsnog te weinig kennis om de code werkend te krijgen. Zou iemand mij hierbij willen helpen?

Alvast bedankt!

De code die ik tot nu toe heb. De range waarin gezocht moet worden wordt met deze code geselecteerd, maar volgens mij is dat niet noodzakelijk.


Private Sub Worksheet_Change(ByVal Target As Range)

Dim rge As Excel.Range
Dim rgeFind As Excel.Range
Dim varValue As Variant


Worksheets("Scanlijst").UsedRange.Columns(2).Select
For Each rge In ActiveWindow.RangeSelection
For Each rgeFind In ActiveWindow.RangeSelection
If rgeFind.Address <> rge.Address Then
If rgeFind.Value = varValue Then
MsgBox "Dit artikel is reeds gescand: " _
& c.Address(RowAbsolute:=False, columnAbsolute:=False)
Range(c.Address).Activate
Else
............................??
End If
End If
Next
Next

End Sub
 

Bijlagen

Het gescande nummer in cel B4
De artikelnummers in kolom B

Code:
Sub test()
  If WorksheetFunction.CountIf([Scanlijst!B:B], [Scanlijst!B4]) > 1 Then MsgBox "jammer, helemaal voor niets gescand"
End Sub
 
Snb, bedankt voor je snelle reactie. De code werkt inderdaad goed wanneer het artikelnummer wordt ingescand in cel B4. Echter, tijdens het scannen laat ik de cursor steeds verspringen na ieder gescand product. Dit doe ik met de volgende code:

If Target.Count <> 1 Then Exit Sub
If Target.Column = 2 Then Target.Offset(0, 4).Select
If Target.Column = 6 Then Target.Offset(1, -4).Select


Het is dus de bedoeling dat de code voor ieder record in kolom B zoekt of er dubbele records in dezelfde kolom zijn weergegeven. Is dit mogelijk?
 
Het zou veel handiger zijn als je een userform gebruikte.
Dan hoeft er niet heen en weer gesprongen te worden in het werkblad. VBA-doet dat dan allemaal voor je.
Maar:

Code:
If Target.Count <> 1 Then Exit Sub
Select Case Target.Column
Case 2  
  If WorksheetFunction.CountIf([Scanlijst!B:B], target) > 1 Then 
     MsgBox "jammer, helemaal voor niets gescand"
  else
   Target.Offset(0, 4).Select
  end if
Case 6
  Target.Offset(1, -4).Select
End Select
 
Laatst bewerkt:
Bedankt! De code werkt perfect. Ik ga het nog met een userform proberen. Ik neem aan dat je bedoeld dat de code ingescand wordt en dan automatisch wordt weggeschreven naar de juiste cel.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan