Delen via

Hulp bij VBA code

Anoniem
2022-09-26T12:53:23+00:00

Goedemiddag iedereen,

Ik heb nog eens jullie hulp nodig.

Ik zoek een VBA code die automatisch gegevens invult in een bereik als er in een ander bereik iets geschreven staat.

Bedoeling is om mijn facturatie verder te automatiseren.

Als ik bv in range E12 een naam selecteer a.d.h.v. een drop down lijst.

Als dan bv de naam Andreas geselecteerd is in E12 zou er automatisch een tekst moeten verschijnen in range B26 Verhuur bestelwagen

Indien deze naam niet geselecteerd is, moet cel B26 leeg blijven zodat we daar zelf tekst kunnen ingeven.

Alvast bedankt!

Microsoft 365 en Office | Excel | Overige | Windows

Vergrendelde vraag. Deze vraag is gemigreerd vanuit de Microsoft Ondersteuning-community. U kunt met een stem aangeven of de inhoud nuttig is, maar u kunt geen opmerkingen of antwoorden toevoegen of de vraag volgen.

0 opmerkingen Geen opmerkingen

Antwoord geaccepteerd door vraagauteur

Anoniem
2022-09-27T11:45:01+00:00
  1. Rechtsklik in Excel links-onderaan op de naam van het blad waarin de bewuste cellen staan en kies in het verschijnende menu: "Programmacode weergeven".
  2. Plaats aan de rechterkant onderstaande code en klik daarna rechtboven in de blauwe balk op het kruisje, je bent dan terug in het werkblad.
  3. Sla het bestand op als .xlsm-bestand, maar dat doe je waarschijnlijk al.
  4. Test de macro door in E12 verschillende namen te kiezen.

Opm: Als je al een macro hebt die ook betrekking heeft op de gegevens waarbij het in deze macro om gaat, dan kun je die misschien best samenvoegen. Dat hangt af van wat de bestaande macro precies doet en of die automatisch of handmatig wordt uitgevoerd.

Private Sub Worksheet_Change(ByVal Target As Range) 

If Not Intersect(Range("E12"), Target) Is Nothing Then 

Range("B26:F26").ClearContents 

If Range("E12").Value = "Andreas" Then 

Range("B26").Value = "Verhuur bestelwagen" 

End If 

End If 

End Sub

Was dit antwoord nuttig?

1 persoon vond dit antwoord nuttig.
0 opmerkingen Geen opmerkingen

11 extra antwoorden

Sorteren op: Meest nuttig
  1. Anoniem
    2022-09-30T08:45:07+00:00

    Probleem is dat ik het werkblad niet kan beveiligen omdat ik dan een foutmelding krijg wanneer je de macro "Maak nieuwe factuur" wilt gebruiken. Dan zegt excel dat de macro niet kan uitgevoerd worden omdat deze beveiligd is.

    Dat die melding dan komt, dat is logisch, maar dat probleem is eenvoudig op te lossen door aan begin en einde van de macro resp. op te nemen (voorbeeld):

    Worksheets("Blad1").Unprotect Password:= "mijnpaswoord"
    
    Worksheets("Blad1").Protect Password:= "mijnpaswoord"
    

    Wat ik met mijn vorig bericht(en) bedoelde te zeggen is, dat als je de gegevens (van klanten neem ik aan) al in een tabel in een werkblad hebt staan, dat je daar dan in macro's gebruik van kunt maken, waardoor je die macro's aanmerkelijk kunt inkorten. Voorbeeld: stel dat je namen en bijbehorende gegevens in een tabel hebt staan in Blad2, zoals in onderstaande afbeelding, dan kun je je macro met de vele IF's inkorten tot deze paar regels:

    Private Sub Worksheet_Change(ByVal Target As Range) 
    
    If Not Intersect(Range("E12"), Target) Is Nothing Then 
    
    Range("B26").Value = WorksheetFunction.VLookup(Range("E12"), Sheets("Blad2").Range("A1:B6"), 2, 0) 
    
    End If 
    
    End Sub 
    

    Afbeelding

    In die tabel kun je ook alle adresgegevens opnemen en die kun je dan (als je dat wil) via de macro eenvoudig in de gewenste cellen plaatsen. Zowel kolom A als de gehele tabel kun je namen geven en die kun je dan bij validatie en in de macro gebruiken.

    Was dit antwoord nuttig?

    0 opmerkingen Geen opmerkingen
  2. Anoniem
    2022-09-30T06:47:59+00:00

    Bedankt voor de info.

    Het is inderdaad wel zo dat ik al verwijzingen gemaakt heb naar een apart werkblad waar alle klantgegevens instaan.

    Dus als je naam selecteert in E12, dan komt automatisch het juiste adres, postcode, gemeente en btwnr te voorschijn in de lijn E13, E14 en E16.

    Hiervoor heb ik deze code gebruikt die ik in E13 heb geplaatst: =ALS.NB(VERT.ZOEKEN(E12;'Klanten'!A:E;2;0);"")

    Probleem is dat ik het werkblad niet kan beveiligen omdat ik dan een foutmelding krijg wanneer je de macro "Maak nieuwe factuur" wilt gebruiken.

    Dan zegt excel dat de macro niet kan uitgevoerd worden omdat deze beveiligd is.

    Dus het probleem is dat ik er op hebben moeten aandringen dat er niks mag getypt worden op de plaatsen waar ik een code heb ingevoerd, want anders is deze code verdwenen en werkt het nadien niet meer.

    Was dit antwoord nuttig?

    0 opmerkingen Geen opmerkingen
  3. Anoniem
    2022-09-29T14:25:36+00:00

    Dit is dus te omslachtig??

    Nee, dat hoeft het niet te zijn; als jij daar tevreden mee bent dan is dat prima. Maar het is afhankelijk van wat je nog allemaal automatisch in cellen wil plaatsen. Ik denk (maar weet niet zeker, want ik weet niet hoe jouw blad eruit ziet) dat als je in E12 een naam kiest dat je dan wellicht naast (bv.) "Verhuur bestelwagen", ook straat, postcode , woonplaats, telefoonnr. en andere gegevens in de juiste cellen wil plaatsen. Als dat zo is, dan kun je best al die gegevens niet in de macro opnemen, maar in de macro ernaar verwijzen. Want adressen kunnen wijzigen, of je wil adressen toevoegen. Het is onhandig om dat zowel in het werkblad als in de macro te moeten doen. En als je 100 adressen hebt, dan is het veel eenvoudiger om daar via (bv.) Range("A1:A100") naar te verwijzen, dan om al die 100 adressen afzonderlijk in de macro op te nemen.

    Was dit antwoord nuttig?

    0 opmerkingen Geen opmerkingen