VBA code om een Excel cel automatisch te laten vullen

Status
Niet open voor verdere reacties.

Hans

Gebruiker
Lid geworden
19 dec 2016
Berichten
98
Goedemorgen

Als ik bijvoorbeeld in cel A1 de tekst "wit" zet, zou ik graag in cel D1 de tekst "zwart" willen laten verschijnen. De bedoeling is om dat uit te breiden, als ik in cel A1 "wit" zet dan wil ik graag in cel D1 "zwart", in cel G1 "rood", in cel K1 "groen".
Tegelijk wil ik graag dat als ik in A1 "maandag" zet, de cel in D1 de tekst "dinsdag" krijgt.

Uiteraard zijn de woorden tussen "" als voorbeeld bedoeld, ik kan met het hele piepkleine beetje wat ik van VBA weet dat zelf wel aanpassen zodat het in mijn sheet bruikbaar wordt.

Ik denk wel dat het belangrijk is om te melden dat er al een en ander aan code in het bestand zit, onder andere op Blad1:

# Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Select Case Target.Column
Case 7 To 11, 13, 14
Cells(Target.Row, 22).Value = Cells(Target.Row, 22).Value + 1
Cells(Target.Row, 12) = Date
End Select
Application.EnableEvents = True
End Sub #

Mocht ik niet duidelijk zijn dan lees ik graag je vragen of commentaar, ik kan het hebben

Vast heel erg bedankt, groeten Hans
 
Laatst bewerkt:
Hans,

Plaats aub een voorbeeldbestand en zet de code tussen codetags (#)
 
in D1;

PHP:
=If(A1="wit";"zwart";"")
 
in D1;

PHP:
=If(A1="wit";"zwart";"")

Dit is niet wat ik bedoel, op deze manier moet ik alle cellen in een kolom een formule geven, ik probeer het juist met VBA om het bestand schoon en snel te houden.
 
Dan zet je er een case bij in de code.
 
SVP niet quoten/citeren !

Ook met VBA wordt een bestand gevuld (in jouw termen 'vervuild')
 
Laatst bewerkt:
Ik heb een bestand wat gaandeweg het jaar groeit, hij bestaat sowieso uit 16 kolommen maar groeit gestaag door en zal uiteindelijk ook nog naar 15.000 rijen gaan. Op iedere rij wil ik 8 (en later meer) cellen automatisch gevuld krijgen bij bepaalde handelingen of teksten.
Volgens mij, maar corrigeer me als ik het verkeerd heb, is er een verschil tussen VBA of formules als we het hebben over 120 duizend cellen die "aangestuurd" moeten worden.

Los daarvan, ik zou nog steeds graag willen leren hoe ik met VBA zoiets kan maken. Als ik dat eenmaal weet en uit kan breiden (zoals in mijn oorspronkelijke vraag uitgelegd) kan ik straks ook een goed vergelijk maken tussen VBA en formules.

Ik hoop dat iemand mij op weg kan helpen.
 
Plaats het bestand eens en laat zien wat de bedoeling is. VBA is vaak maatwerk en kreten als ik wel ergens iets en dat er dan wat gebeurt is niet erg concreet. Als je zelf aangeeft dat als je op weg geholpen wordt je het zelf wel kan aanpassen dan geloof ik het niet want de code in jouw OP is voldoende om je op weg te helpen.

Je hebt het change event al, je weet hoe je een waarde met een offset kan veranderen, je gebruikt al een select case. Dus wat is concreet de vraag?
 
Mogguh VenA

Dank je wel voor je inhoudelijke reactie. In de bijlage het bestand.

In de cellen in kolom K worden een aantal mogelijke teksten getypt, zoals "te duur', "te oud" of "Lead naar vertegenwoordiger / vestiging manager gestuurd". Ik zou graag het volgende willen automatiseren.

Verschillende teksten zouden verschillende acties uit moeten voeren, zoals;
Voorbeeld 1: Als in kolom K de tekst "te duur" wordt getypt verschijnt in kolom H de tekst "ja" en in kolom I het woord "vervallen". Tegelijk worden kolom O, P en S voorzien van de tekst "v" en kolom T wordt voorzien van het actuele weeknummer.
Hetzelfde zou moeten gebeuren bij de tekst "betaaltermijn" of "niet opgevolgd".

Voorbeeld 2: Als in kolom K de tekst "Lead naar vertegenwoordiger / vestiging manager gestuurd" wordt getypt verschijnt in kolom M het woord "lead". Tegelijk worden kolom O, P en S voorzien van de tekst "v" en kolom T wordt voorzien van het actuele weeknummer. En als in kolom K de tekst "Afspraak op dit moment niet nodig of cp belt zelf wel" verschijnt in kolom M het woord "nee" en ook weer worden kolom O, P en S voorzien van de tekst "v" en kolom T wordt voorzien van het actuele weeknummer.

Ik wil hiermee bereiken (na het verder uit te breiden) dat alle formules die nu in de cellen staan verdwijnen.

Ik hoop dat dit duidelijker is, en niet té veel gedetailleerde info. Bij vragen hoor ik het graag.

Vast bedankt, groet Hans

Bekijk bijlage Test 11nov17.xlsm
 
Laatst bewerkt:
Zoiets als dit misschien?
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = True
  If Target.Column <> 11 Then Exit Sub
    With Target
      If .Value = "te duur" Or .Value = "betaaltermijn" Or .Value = "niet opgevolgd" Then
         Cells(.Row, 8).Value = "Ja"
         Cells(.Row, 9).Value = "Vervallen"
         Cells(.Row, 12).Value = CDate(Now)
         Cells(.Row, 15).Value = "v"
         Cells(.Row, 16).Value = "v"
         Cells(.Row, 19).Value = "v"
         Cells(.Row, 20).Value = Format(Date, "ww")
       End If
     End With
Application.EnableEvents = True
End Sub
 
Het lijken me allemaal overbodige/dubbele gegevens in het werkblad.
Automatiseren is niet bedacht om dezelfde gegevens vele malen opnieuw in andere vorm te herhalen.
 
Zoiets als dit misschien?
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = True
  If Target.Column <> 11 Then Exit Sub
    With Target
      If .Value = "te duur" Or .Value = "betaaltermijn" Or .Value = "niet opgevolgd" Then
         Cells(.Row, 8).Value = "Ja"
         Cells(.Row, 9).Value = "Vervallen"
         Cells(.Row, 12).Value = CDate(Now)
         Cells(.Row, 15).Value = "v"
         Cells(.Row, 16).Value = "v"
         Cells(.Row, 19).Value = "v"
         Cells(.Row, 20).Value = Format(Date, "ww")
       End If
     End With
Application.EnableEvents = True
End Sub

Beste

Ik heb de code geplakt in de worksheet en het werkt. Geweldig, dank je wel!

Alleen ben ik nu mijn tellertje kwijt, er stond een code voor maar die is komen te vervallen.
De code was:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
  Select Case Target.Column
        Case 7 To 11, 13, 14
    Cells(Target.Row, 22).Value = Cells(Target.Row, 22).Value + 1
    Cells(Target.Row, 12) = Date
   End Select
Application.EnableEvents = True
End Sub

En een aanvullende vraag op jouw code, hoe kan ik die uitbreiden met andere "opdrachten"?
Ik zou bijvoorbeeld graag willen dat als in kolom K de tekst "Afspraak op dit moment niet nodig of cp belt zelf wel" wordt getypt in kolom M het woord "nee" verschijnt en ook weer kolom O, P en S voorzien van de tekst "v" en kolom T wordt voorzien van het actuele weeknummer.

Ik hoop dat je mij weer zo top kan en wil helpen, groet Hans
 
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'Application.EnableEvents = False
  If Target.Column <> 11 Then Exit Sub
    With Target
      If .Value = "te duur" Or .Value = "betaaltermijn" Or .Value = "niet opgevolgd" Then
           Cells(.Row, 8).Value = "Ja"
           Cells(.Row, 9).Value = "Vervallen"
           Cells(.Row, 12).Value = CDate(Now)
           Cells(.Row, 15).Value = "v"
           Cells(.Row, 16).Value = "v"
           Cells(.Row, 19).Value = "v"
           Cells(.Row, 20).Value = Format(Date, "ww")
           Cells(.Row, 22).Value = Cells(.Row, 22).Value + 1 'tellertje
           
      ElseIf .Value = "cp belt zelf wel" Or .Value = "Afspraak op dit moment niet nodig" 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
Application.EnableEvents = True
End Sub
 
Kijk, stapje voor stapje begin ik het te snappen. Dank je wel Jack, je helpt mij hier doorheen. Ik heb de code toegevoegd en wat aangepast. Kijk maar onderaan.

Ik zit nog met een foutmelding: Fout 13 tijdens uitvoering. Typen komen niet met elkaar overeen.
Dat gebeurt wanneer ik op één rij de cellen die we nu aan het programmeren zijn samen selecteer en de inhoud wil wissen. Ook krijg ik die melding als ik een in een kolom een aantal cellen onder elkaar selecteer en de inhoud wil verwijderen. Kan jij bedenken waar dat door zou komen?

Ik zit ook nog met een vraag. Hoe gaat de code er uit zien als er nóg een kolom bijkomt als Target kolom? Ik zou namelijk ook graag kolom 9 willen gebruiken als Target kolom om vervolgens in kolom 8 resultaten te krijgen.

Ik hoop dat je mij weer een stapje verder kan/wil helpen, alvast bedankt!

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = True
  If Target.Column <> 11 Then Exit Sub [B][U](ik zou graag kolom 9 als Target aan de code toe willen voegen om in kolom 8 de resultaten te krijgen)[/U][/B]
    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" Or .Value 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
Application.EnableEvents = True
End Sub
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan