Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: VBA opdreacht werkt niet in mijn Excel blad  (gelezen 75 keer)

0 leden en 1 gast bekijken dit topic.

Offline Edmondo

  • Nieuw lid
  • Berichten: 2
  • Geslacht: Man
  • Hey, ik ben nieuw hier !
VBA opdreacht werkt niet in mijn Excel blad
« Gepost op: Gisteren om 19:59:04 »
Ik ben aan het oefenen met VBA in excel en heb middels de vb editor een opdracht If Else geschreven!
Naar ik weet heb ik dit goed gedaan, want als ik het script test middels F8 wordt de opdrachtregel goed uitgevoerd.
Maar, nadat alles is opgeslagen, Excel project gesloten en weer geopend, werkt de opdracht niet automatisch, m.a.w. hij doet helemaal niets.
Wat is/ga er fout!!

Suggesties graag?

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.393
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: VBA opdreacht werkt niet in mijn Excel blad
« Reactie #1 Gepost op: Gisteren om 20:34:01 »
Hallo Edmondo,

Welkom met je eerste post op ons forum.

Je code is prima geschreven. Ze kan iets korter, maar dat maakt nu niets uit.

Waarom er niets gebeurt als je het bestand met de code opslaat en opnieuw opent is omdat je macro niet wordt gestart enkel omdat je het Excel bestand opent. Om een macro automatisch te laten staren bij het openen van het bestand dien je jou code in "This_Workbook" in de VBEditor te plaatsen onder de macronaam: Sub Workbook_Open()

Dus:

Private Sub Workbook_Open()

 ' Plaats hier de code van je macro

End Sub

Vraag gerust mocht er iets niet duidelijk zijn.

:) SoftAid :)             
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline Edmondo

  • Nieuw lid
  • Berichten: 2
  • Geslacht: Man
  • Hey, ik ben nieuw hier !
Re: VBA opdreacht werkt niet in mijn Excel blad
« Reactie #2 Gepost op: Vandaag om 12:15:10 »
Dankjewel Softaid, ik heb idd gezien dat het niet goed is geplaatst.
Dus bij deze opnieuw aangemaakt in ThisWorkbook, helaas géén resultaat.
Ik stuur je hierbij het gehele excel programma, als je daar eens naar wil kijken en laten weten waarom het niet goed gaat, dat stel ik zeer op prijs.

Ik hoor graag van je.

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.393
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: VBA opdreacht werkt niet in mijn Excel blad
« Reactie #3 Gepost op: Vandaag om 14:07:20 »
Hallo Edmondo,

dit voorbeeldbestand schept veel duidelijkheid.

Een eerste fout waardoor de macro niets deed is dat je heel werk op het Tabblad "Eneco" staat, en in je macro verwijs je naar Blad1.

Een tabblad heeft 2 mogelijke namen:
1- Blad1, Blad2, Blad3 enzovoorts. Deze namen kan je niet wijzigen, ze worden toegekend bij het aanmaken van een werkblad. In een macro verwijs je er naar met Blad1!.Range.... (dus het blad+nr+uitroepteken, punt, en geen haakjes)
2- Je geeft een werkblad een eigen naam, zoals Eneco. Deze namen kan je wijzigen, maar je moet ze ook in je macro aanpassen en/of wijzigen als werkblad-naam. In een macro verwijs je er naar met Sheets("Eneco").Range... (dus de opdracht Sheets,  haakje open, dubbel aanhalingsteken, naam van het werkblad, dubbel aanhalingsteken, haakje dicht, punt, en de rest van de code,bvb Range....

Wat heb jij gedaan (om het moeilijker te maken  ;D), je hebt Blad1 benoemd als Eneco, Blad2 benoemd als Blad1, Blad2 benoemd als blad3 enz ....  Dat maakt het natuurlijk verwarrend als je macro's gaat schrijven.
Blad1 in jou werkboek is in feite Blad2!

Als je hier in je code verwijst naar Blad1! is er nog geen probleem, omdat Blad Eneco de naam is van Blad1!

Waarom werkt die code dan niet. Wel, je macro wordt getriggerd op het moment dat je het werkboek opent. Als je daarna een wijziging aanbrengt aan cel B13 gebeurt er niets meer met die code. Sla je daarna het werkboek op,  en open je het opnieuw, dan zal de code uitgevoerd worden en zie je dat de aanpalende cellen gekleurd zijn.

Het kan eenvoudiger. Plaats je code terug in je (Eneco)-Blad1 in de Editor en hernoem de macro naar:

Private Sub Worksheet_Change(ByVal Target As Range)
                   ' Controleer of de veranderde cel binnen een specifiek bereik ligt
If Not Intersect(Target, Me.Range("B13")) Is Nothing Then
                 
 ' Voeg hier de actie toe die je wilt uitvoeren

End If
End Sub


De code:

If Sheets("Eneco").Range("B13") = "nvt" Then
        Sheets("Eneco").Range("C13:N13").Interior.ColorIndex = 15
        Sheets("Eneco").Range("C14:N14").Interior.ColorIndex = 15
        Sheets("Eneco").Range("C15:N15").Interior.ColorIndex = 15
    Else
        'Nu cellen wit kleuren
        Sheets("Eneco").Range("C13:N13").Interior.ColorIndex = 2
        Sheets("Eneco").Range("C14:N14").Interior.ColorIndex = 2
        Sheets("Eneco").Range("C15:N15").Interior.ColorIndex = 2
       
    End If

kan je korter maken door de bereiken op 1 rij op te vangen door:

If Sheets("Eneco").Range("B13") = "nvt" Then
        Sheets("Eneco").Range("C13:N15").Interior.ColorIndex = 15
            Else
        Sheets("Eneco").Range("C13:N15").Interior.ColorIndex = 2
End If

In bijlage, jou werkboek met de aangepaste code.

Laat maar horen als iets niet duidelijk is, we helpen je graag.

:) SoftAid :)             


« Laatst bewerkt op: Vandaag om 14:31:46 door SoftAid »
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

 


www.combell.com