VBA code om een Excel cel automatisch te laten vullen

Status
Niet open voor verdere reacties.
Je maakt het niet direkt duidelijk VenA, maar ik snap de les die te leren is ;-)

Het zit dus in werken met "case"?

Ik had dat al eerder begrepen, maar vind de code die er bij hoort zoveel ingewikkelder dan de code die ik nu heb gekozen. Dat werken met die code met "case" is niet onmogelijk voor mij, maar het is bewerkelijk en niet direct heel duidelijk. De door mij gebruikte code is niet mogelijk?

Welk advies kan je mij geven, doorgaan met de "case" code? Het wordt tijd dat ik verder kan met de code door te ontwikkelen.
 
Ik heb niet te veel aandacht aan de code gegeven maar ik denk je zo al een eind in de goede richting komt.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
  If Target.Column < 9 And Target.Column > 11 Then Exit Sub
  If Target.Column = 11 Then
    With Target 'offertes
      If .Value = "Betaaltermijn" Or .Value = "Geen opdracht" Or .Value = "Geen voorraad" Or .Value = "Concurrent" Or .Value = "Offerte klopte niet" Or .Value = "Te duur" Or .Value = "Te oud" Or .Value = "Alternatief niet ok" Or .Value = "niet opgevolgd" Or .Value = "betaaltermijn" Or .Value = "geen opdracht" Or .Value = "geen voorraad" Or .Value = "concurrent" Or .Value = "offerte klopte niet" Or .Value = "te duur" Or .Value = "te oud" Or .Value = "alternatief niet ok" Or .Value = "niet opgevolgd" Then
           Cells(.Row, 8).Value = "Ja"                      'kolom H
           Cells(.Row, 9).Value = "Vervallen"               'kolom I
           Cells(.Row, 12).Value = CDate(Now)               'kolom L
           Cells(.Row, 15).Value = "v"                      'kolom M
           Cells(.Row, 16).Value = "v"                      'kolom P
           Cells(.Row, 19).Value = "v"                      'kolom S
           Cells(.Row, 20).Value = Format(Date, "ww")       'kolom T
           Cells(.Row, 22).Value = Cells(.Row, 22).Value + 1 'tellertje
           'resultaat nee
      ElseIf .Value = "Afspraak op dit moment niet nodig of cp belt zelf wel" Or .Value = "Cp gaat stoppen, is gestopt, bouwt af, met pensioen" Or .Value = "Heeft geen behoefte aan contact/relatie met Wasco" Or .Value = "Leverstop / Atradius / contantklant" Or .Value = "Ondanks herhaald bellen/mail is contact niet gelukt" Or .Value = "Op advies van VT niet bellen / vt heeft al contact" Or .Value = "O.b.v. segmentatie weinig potentie, bezoek van vt niet nodig" Or .Value = "Rayon wijzigen???" Or .Value = "Uitgeschreven bij KvK" Or .Value = "Vt kan bellen als hij in de buurt is" Or .Value = "Zelf leverancier / groothandel / tussenhandel / internetshop" Then
           Cells(.Row, 12).Value = CDate(Now)               'kolom L
           Cells(.Row, 13).Value = "Nee"                    'kolom M
           Cells(.Row, 15).Value = "v"                      'kolom O
           Cells(.Row, 16).Value = "v"                      'kolom P
           Cells(.Row, 19).Value = "v"                      'kolom S
           Cells(.Row, 20).Value = Format(Date, "ww")       'kolom T
           Cells(.Row, 22).Value = Cells(.Row, 22).Value + 1 'tellertje
       End If
     End With
     End If
    If Target.Column = 9 Then
     With Target
      If .Value = "kansen" Or .Value = "order" Or .Value = "in behandeling" Then
           Cells(.Row, 8).Value = "Ja"                      'kolom H
           Cells(.Row, 12).Value = CDate(Now)               'kolom L
           Cells(.Row, 15).Value = "v"                      'kolom M
           Cells(.Row, 16).Value = "v"                      'kolom P
           Cells(.Row, 19).Value = "v"                      'kolom S
           Cells(.Row, 20).Value = Format(Date, "ww")       'kolom T
           Cells(.Row, 22).Value = Cells(.Row, 22).Value + 1 'tellertje
           'resultaat nee
      ElseIf .Value = "vervallen" Then
           Cells(.Row, 8).Value = "Ja"                      'kolom H
           Cells(.Row, 12).Value = CDate(Now)               'kolom L
           Cells(.Row, 13).Value = "Nee"                    'kolom M
           Cells(.Row, 15).Value = "v"                      'kolom O
           Cells(.Row, 16).Value = "v"                      'kolom P
           Cells(.Row, 19).Value = "v"                      'kolom S
           Cells(.Row, 20).Value = Format(Date, "ww")       'kolom T
           Cells(.Row, 22).Value = Cells(.Row, 22).Value + 1 'tellertje
       End If
     End With
     End If
    If Target.Column = 10 Then
     With Target 'offertes
      If .Value = "gg" Or .Value = "vm" Or .Value = "na" Then
           Cells(.Row, 8).Value = "Ja"                      'kolom H
           Cells(.Row, 12).Value = CDate(Now)               'kolom L
           Cells(.Row, 15).Value = "v"                      'kolom O
           Cells(.Row, 16).Value = "v"                      'kolom P
           Cells(.Row, 19).Value = "v"                      'kolom S
           Cells(.Row, 22).Value = Cells(.Row, 22).Value + 1 'tellertje
           ElseIf .Value = "vervallen" Then
           Cells(.Row, 8).Value = "Ja"                      'kolom H
       End If
     End With
     End If
Application.EnableEvents = True
End Sub
 
Je maakt het niet direkt duidelijk VenA, maar ik snap de les die te leren is ;-)

Dat betwijfel ik. Je blijft steeds in jouw eigen denkpatroon vastzitten ondanks alle diverse suggesties tot verbetering.

Ik zou gebruik maken van codes/afkortingen ipv een compleet beschrijvende tekst in kolom K. Daarnaast natuurlijk ook gegevensvalidatie. Misschien is het ook even goed om naar de opzet van het bestand te kijken. Kolom 9 krijgt al een waarde als je iets wijzigt in kolom 11. Maar goed.

Hier heb je blijkbaar ook nog niets meegedaan. Of in iedergeval niet op gereageerd.

Mijn advies: Begin met een heel eenvoudig document met maar twee kolommen en probeer dan alles uit. Dan zal je ook zien dat je de target.count weer vergeten bent.

Code:
Select Case
  Case voorwaarde1 
  Case voorwaarde2 
End Select

is iets leesbaarder dan allerlei If Then ElseIF etc constructies. Er is voldoende documentatie over te vinden als je er enige moeite voor doet.
 
Ik snap je opmerkingen en bedoelingen VenA, maar het document is voor mij bruikbaar geworden, waar ik behoefte aan heb wordt inmiddels in voorzien.
Ik ga zeker verder met de case-codes, ben ook bezig met een eenvoudiger document om inzicht te krijgen. Maar mijn bedoeling is geslaagd met de door jou en Jack aangereikte opmerkingen en oplossingen.

Inmiddels heb ik allerlei how-to fimpjes op JoepTtsjoep gevonden over VBA en formulieren, op het idee gebracht door de opmerking eenvoudig te beginnen. Door die filmpjes en de uitleg wordt ook steeds meer duidelijk.

Ik zal deze vraag op beantwoord zetten, draadje mag dicht. Dank jullie wel, en wellicht tot een volgende keer.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan