• 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.

Inhoud van cel E1 naar S1, volgende keer naar S2, dan S3 enz.

Status
Niet open voor verdere reacties.
Je code in #17 geeft namelijk twee keer het resultaat weer in kolom S.
 
In mijn vorige reactie had ik een verkeerde bijlage toegevoegd, dus zonder mijn aanpassing, sorry.

@HSV, ik probeer je werkwijze in #18 te begrijpen en na te bootsen, maar ik begrijp en krijg die dubbel in kolom S niet.
Ik tik een m in en krijg daardoor 3 resterende keuzes en kies voor "madrid" en krijg 1 "madrid" in S.
Als ik E1 met F2 open en op enter klik krijg ik hem natuurlijk dan een 2e keer, idem als ik mijn keuze herhaal in de dropdown.
Maar gewoon rechtstreeks zonder tussenkomst een stad een 2e keer in kolom S krijgen lukt me niet.

Die enableEvents zorgen soms voor kopzorgen als de code niet netjes doorlopen (door gebruiker of door error) wordt en op het einde niet meer op true gezet worden, dus gebruik ik ze zo weinig mogelijk.

Verder wordt er niet gecheckt op E1 leeg, want zolang er geen lege cel voorkomt in A1:A10 wordt er niet doorgekopieerd en moest dat wel het geval zijn (lege cel in A1:A10) wordt toch de keer erop netjes verder aangevuld in S.
 

Bijlagen

Laatst bewerkt:
@cow18,

Als ik een 'm' typ in jouw bestand en de cursor knippert nog en dan een keuze maak dan komt er twee keer de gekozen plaatsnaam in kolom S.
 
Ja, dus, op die manier ...
grappig en frustrerend tegelijkertijd, hoe dat event 2 keer zijn kop kan opsteken.
Even gegoogled en ik vond dit stukje tekst waar iemand met hetzelfde probleem en frustratie zat.
https://exceptionshub.com/excel-data-validation-and-worksheet-change-event.html

Aanpassing van de code, ipv zo'n boolean-variable te gebruiken, die in het gebruik wat problemen oplevert, zie jouw vroegere bijdrage, gebruik ik een double-variable met het tijdstip van je event (op seconde-basis).
Als het volgende (2e) event binnen een honderdste (!) van een seconde optreedt, dan wordt die genegeerd.
Eerste regel van de code was om op "blad2" te kunnen meevolgen wat er precies gebeurde, maar die mag straks weg. Daar zie je eigenlijk dat die events tegerlijktijd optreden (een miljoenste van een seconde, maar dat is natuurlijk onzin, meetonnauwkeurigheden)

Code:
Dim tijd       As Double

Private Sub Worksheet_Change(ByVal Target As Range)
   [COLOR="#0000CD"]Sheets("blad2").Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(, 4).Value = Array(Timer, tijd, Target.Address, Target.Cells(1).Value)[/COLOR]
   With Range("E1")                              'onze cel
      If Intersect(Target, .Cells(1)) Is Nothing Then Exit Sub   'heb je die veranderd ?
      If IsNumeric(Application.Match(.Value, Range("A1:A10"), 0)) Then 'komt ze voor in je lijstje
         If Abs(Timer - tijd) > 0.01 Then Cells(Rows.Count, 19).End(xlUp).Offset(1) = .Value 'vorige event langer dan een honderdste seconde geleden -> doorkopieren
         tijd = Timer
      End If
   End With
End Sub
 

Bijlagen

Laatst bewerkt:
Inderdaad frustrerend, had dit ook nog niet meegemaakt.

cow18, je schrijft de tijd nu weg naar blad2 (goed idee), maar zonder werkt het hier ook met onderstaande code
Tenminste op mijn Pc qua snelheid.

Code:
Dim tijd       As Single
Private Sub Worksheet_Change(ByVal Target As Range)
      If Not Intersect(Target, Range("e1")) Is Nothing Then
        If IsNumeric(Application.Match(Target, Columns(1), 0)) Then 'komt ze voor in je lijstje
         If Abs(Timer - tijd) > 0 Then Cells(Rows.Count, 19).End(xlUp).Offset(1) = Target 'vorige event langer dan een honderdste seconde geleden -> doorkopieren
      End If
    End If
 tijd = Timer
End Sub
 
Laatst bewerkt:
Die regel was voor demo-doeleinden
zie laatste regels van alinea 2 van mijn vorige reactie en (iets moeilijker zichtbaar) de blauwe kleur van die ene regel die weg kan.

Je gebruikt een single voor tijd en je kijkt naar een verschil van 0 sec ipv. een honderdste seconde.
Op het eerste zicht geen probleem, niemand is in staat om zo snel, iedere seconde, een nieuwe keuzes, maar ik had toch liever 0.1 gezien, maar de kans dat het misgaat is klein en ik ben een gevoelig zieltje.
 
Laatst bewerkt:
Juist, je doet er ook verder niets mee zie ik nu.

Maar waarom de code tweemaal loopt is me nog steeds een raadsel.
Mooi dat het zo dan weer kan.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan