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

change event in column 16

Status
Niet open voor verdere reacties.

kareltje555

Gebruiker
Lid geworden
22 sep 2011
Berichten
75
ben ik weer :)
ik krijg eea niet duidelijk voor mijzelf .
bij een event , wijziging in kolom 16 van "" naar een 1 bv is het mijn wens om de regel ("B:N") ervoor te kopieren naar een werkblad ("bestel")
Xlup natuurlijk

bij het zoeken kom ik wel change event van een cel tegen , en of het wordt me te ingewikkeld waardoor ik het niet meer snap.

met dank charles
 
En je voorbeeld document?
 
voorraaad

ga ik proberen edmoor

wens is om wanneer op sheet bestel aan een voorraad is ingevuld en wanneer die de grens van minimaal aanwezig onderdoor gaat dat dan die regel aan de bestel sheet wordt toegevoegd.

groet charle s
 

Bijlagen

Je mag nog een keer proberen het goed uit te leggen. Je hebt het alleen over een sheet met de naam bestel en in je document is die leeg.
Gebruik bij voorkeur ook hoofdletters en leestekens op de juiste posities.
 
change-event in Maaspoort
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Set c = Intersect(Target, Columns("P"))                          'alle gewijzigde cellen in de P-kolom
    If Not c Is Nothing Then                                         'zijn er daar gewijzigde cellen
        Application.EnableEvents = False                             'events uitschakelen
        For Each c1 In c.Cells                                       'alle gewijzigde P-cellen aflopen
            If c1.Value = 1 Then
                With Sheets("Bestel")
                    c1.EntireRow.Copy Destination:=.Range("A" & .Rows.Count).End(xlUp).Offset(1)
                End With
                c1.Value = ""
            End If
        Next
        Application.EnableEvents = True
    End If
End Sub
 
Elk blad in hetzelfde bestand heeft evenveel rijen.
De with en de punt voor 'rows.count' zijn niet nodig.
Code:
c1.EntireRow.Copy  Sheets("Bestel").Range("A" & Rows.Count).End(xlUp).Offset(1)
 
inderdaad, logisch
 
Vermijd samengevoegde cellen.
Zet in rij 1 zinvolle gegevens in plaats van wat in de tabnaam van het werkblad al staat.
Vermijd zinloze opmaak (t/m de laatste kolom in rij 1).

Bestudeer de ingebouwde methode AdvancedFilter.
Zet in cel Z1 de naam van de kolom waarop gefilterd moet worden
zet in cel Z2 het gegeven in de filterkolom waarop gefilterd moet worden

Dan is uiteindelijk deze regel voldoende:

Code:
Sub M_snb()
    Blad4.Cells(3, 1).CurrentRegion.AdvancedFilter 2, Blad4.Cells(3, 26).CurrentRegion, Blad5.Cells(1)
End Sub
 
tiens, kan je een advanced filter naar een ander tabblad doen ?
Dat moest toch altijd binnen een tabblad blijven. Sedert welke versie ?
 
Advancedfilter in VBA kan meer dan met de hand; voor zover ik weet 'altijd' (in Office 2000) al.
 
cow18 en snb
lukt me toch nog niet helemaal
wanneer ik in kolom p een 1 handmatig invoer dan werkt de private sub prima.
echter wanneer er een 1 ingevoerd wordt via een voorwaarde van kolom M en N =als(m5<N5;"1";"") dan vind er geen copie vd regel plaats

snb
ik ben op zoek naar uitleg over advancedfilter . ben op zoek hoor .
 
Laatst bewerkt:
changeevent reageert niet op gewijzigde waarden tgv. een formule, dus moet je teruggaan naar die cellen die de wijzigingen veroorzaken, dus M en N.
Verwijder dus best de formules in O en P
Nu zal de code zelf kijken naar de waarden in M en N en indien er nog niet besteld was (O is nog leeg), het besteltijdstip in O zetten en een aantal gegevens doorkopieren naar "Bestel"
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Set c = Intersect(Target, Columns("M:N"))                        'alle gewijzigde cellen in de kolommen van M tot N
    If Not c Is Nothing Then                                         'zijn er daar gewijzigde cellen
        Application.EnableEvents = False                             'events uitschakelen
        For Each c1 In c.Cells                                       'alle gewijzigde cellen aflopen
            Set c2 = c1.Offset(, Columns("M").Column - c1.Column)    'vastpinnen op de M-kolom
            If c2.Value > 0 And c2.Value < c2.Offset(, 1).Value And c2.Offset(, 2).Value = "" Then    'aanwezig kleiner dan gevraagd en nog niet besteld
                c2.Offset(, 2).Value = "Bestelling geplaatst op " & Format(Now, "dd-mm-yy hh:mm")    'bestelmoment vastleggen
                Sheets("bestel").Range("A" & Rows.Count).End(xlUp).Offset(1).Resize(, 9) = Array("Maaspoort", c2.Offset(, -9), c2.Offset(, -8), c2.Offset(, -6), c2.Offset(, -7), "x", "aantal", "x", Now)
            End If
        Next
        Application.EnableEvents = True
    End If
End Sub
best maak je ook ergens deze macro, voor het geval je eens hapert in bovenstaande macro en de events uitgeschakeld blijven. Zo kan je die handmatig weer inschakelen
Code:
Sub EventsOn()
    Application.EnableEvents = True
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan