macro uitvoeren afhankelijk van maand

Status
Niet open voor verdere reacties.

sacredfour

Gebruiker
Lid geworden
23 jan 2021
Berichten
32
Code:
Sub bedragnaarledenadmin()


Sheets("ledenadmin").Unprotect Password:="nintendo"

 
 Dim prijscode As String
 
 prijscode = Sheets("kostenrekening").Range("D3").Value
 
 
 regel = 2
 
 Do
        regel = regel + 1
      If Sheets("ledenadmin").Range("A" + CStr(regel)).Value = prijscode Then Exit Do
      If Sheets("ledenadmin").Range("A" + CStr(regel)).Value = "" Then

     
         Exit Sub
         End If
           
    Loop
   
    Sheets("ledenadmin").Select
   Sheets("ledenadmin").Range("A" + CStr(regel)).EntireRow.Select
 
 
 bovenplaatsen = Sheets("kostenrekening").Range("H3").Value
 
 

ActiveCell.Offset(0).Range("F1") = bovenplaatsen
 
 ''deze actie van de laatste regel moet alleen gebeuren als het bv april is)
 '' hoe doe ik dat?

End Sub

Ik moet per maand het bedrag in een andere kolom plaatsen bv mei in kolom G, juni in colom H
 
Met
Code:
Month(Date())
krijg je de juiste maandnummer.
Deze kan je dan weer gebruiken in je Offset methode. Maar ik vermoed dat je zelf nog niet goed weet wat alles doet, anders zou je ActiveCell niet gebruiken.
Een stukje uit de macrorecorder misschien???
 
Ja, hoe kan ik het zonder activecell doen?
De macro zal beter lopen als ik ook niet hoeft te doen met "sheet.select"
 
Laatst bewerkt:
En dat + teken niet, CStr(regel) niet, Offset(0) niet, .Select niet, de op die manier gebruikte inspringpunten niet...
 
Laatst bewerkt:
Een voorbeeldbestandje wil ook wel eens helpen.
 
kan iemand me een eenvoudig voorbeelde geven hoe zo'n loop er dan moet uitzien
 
Heb je #5 gelezen?
 
Om op je vraag van Select en Active cel te antwoorden eventjes een voorbeeld (Eerste code is opgenomen met de recorder)

Code:
Sub Macro2()
'
' Macro2 Macro
'

'
    Sheets("Blad3").Select
    Range("C7").Select
    ActiveCell.FormulaR1C1 = "Hier vul ik iets in"
    Range("C8").Select
End Sub

Als je nu alle overbodige zaken weglaat dan krijg je een heel korte code... en bovendien makkelijker te lezen.
Eventjes vertaald: ik wil in cel C7 van Blad3 een tekst zetten "Hier vul ik iets in"
Laat alle selecten weg, evenals ActiveCell (die wordt immers niet meer geactiveerd.)

Code:
Sheets("Blad3").Range("C7").FormulaR1C1 = "Hier vul ik iets in"

En persoonlijk zou ik ook 'FormulaR1C1' weglaten, maar vervangen door Value. Je gaat immers het opnemen van formules niet in een macro gieten.

Code:
Sheets("Blad3").Range("C7").Value = "Hier vul ik iets in"

Ik vermoed zelfs dat jij dit ook makkelijker zal vinden om te lezen achteraf.

ps ik merk zelfs dat er in je code ook een dergelijk stukje zit. Waarom dan niet overal gebruiken?
 
Laatst bewerkt:
Ik kom er nog niet uit!
Ik heb nu dit:

Code:
sheets("ledenadmin").Unprotect Password:="nintendo"

 
 Dim prijscode As String
 
 prijscode = Sheets("kostenrekening").Range("D3").Value
 
 
 regel = 2
 
 Do
        regel = regel + 1
      If Sheets("ledenadmin").Range("A").Value = prijscode Then Exit Do
      If Sheets("ledenadmin").Range("A").Value = "" Then

      
      ''If Sheets("ledenadmin").Range("A" + CStr(regel)).Value = prijscode Then Exit Do
      ''If Sheets("ledenadmin").Range("A" + CStr(regel)).Value = "" Then

     
         Exit Sub
         End If
           
    Loop
   
   '' Sheets("ledenadmin").Select
   ''Sheets("ledenadmin").Range("A").Select
 
 
 bovenplaatsen = Sheets("kostenrekening").Range("H3").Value
 
 

ActiveCell.Offset(0).Range("F1") = bovenplaatsen
 


End Sub

De laatste regels heb ik nog niet aangepast, ik zou niet weten hoe dit moet zonder "select"
 
Laatst bewerkt:
Heb je #7 gelezen?
En in #9 is niets van de voorgaande adviezen terug te zien.
 
Laatst bewerkt:
Je kan eigenlijk ook geen goed antwoord verwachten, gezien niemand weet wat je wil bereiken.

Neem nu volgend stukje code:

Code:
Do
        regel = regel + 1
      If Sheets("ledenadmin").Range("A").Value = prijscode Then Exit Do
      If Sheets("ledenadmin").Range("A").Value = "" Then

      
      ''If Sheets("ledenadmin").Range("A" + CStr(regel)).Value = prijscode Then Exit Do
      ''If Sheets("ledenadmin").Range("A" + CStr(regel)).Value = "" Then

     
         Exit Sub
         End If
           
    Loop

Range("A") bestaat gewoonweg niet. En zelfs indien die zou bestaan, dan krijg je een oneindige code want dan zou je telkens controleren of er in een cel prijscode staat. En of je daar nu 10 keer of 1 miljoen keer naar gaat kijken... het antwoord blijft hetzelfde.

Verder wordt er in je code gekeken naar de Actieve cel. Maar nergens wordt er een cel geactiveerd. Je zou dus net zo goed kunnen vragen aan iemand via de gsm waar je de dichtsbijzijnde bakker vindt... maar er niet bij vermelden dat je in Parijs bent op dat moment.

Probeer dus toch aub de code die je gegeven wordt te begrijpen... net zoals de opgenomen code. Je mag hier echt wel vragen hoe een code werkt, ook al is het probleem intussen opgelost.
 
Laatst bewerkt:
Als de beveiliging er maar vast op zit is altijd een goed begin.
 
Vermits je eigenlijk geen antwoord krijgt op je vraag, maar enkel aanbevelingen wat je zou moeten wijzigen zonder een oplossing, hier een oplossing voor je vraag (met het negeren van je code, waar ik kop nog staart aan krijg).

Volgende code zet een tekst in de kolom met de nummer van je maand.

In die richting zal je dus moeten kijken, maar dan moet je wel begrijpen wat alles doet (zoals dus eerder al gezegd)

Code:
Sub test2()
    
    Cells(1, CInt(Month(Date))).Value = "Hier staat de kolom met de huidige maand"
End Sub
 
klant nummer klant naam jan. febr. maart april mei juni juli aug. sept. oct. nov. dec.
1001 € 50,00 € 50,00 € 50,00
1002 € 50,00 € 50,00 € 50,00
1005 € 60,00 € 60,00 € 60,00
1006 € 120,00
1008 € 50,00 € 50,00 € 50,00
1009 € 50,00 € 50,00 € 50,00
1011 € 50,00 € 50,00 € 50,00
1012 € 35,00 € 35,00 € 35,00

Ik kom er helaas niet uit. De macro moet gaan zoeken naar het klantnummer en er dan een bedrag bijplaatsen. Dat gebeurt vanuit een ander tabblad.
 
Ben je nu echt zo eigenwijs? Plaats een Excel voorbeeldbestand.
 
Al eens gewoon geprobeerd met VERT.ZOEKEN?
Stukje eenvoudiger om te begrijpen ook.
 
Geen touw aan vast te knopen. Je plaatst alleen het resultaat.
Sheets("kostenrekening")??
Sheets("ledenadmin")??
 
Laatst bewerkt:
jammer, maar dit bestand helpt ons dus geen millimeter verder :(.
Je geeft gewoon een tabel met lidgelden in. Nergens een aanwijzing waar die lidgelden dan wel vandaan moeten komen.
 
Sorry het werd mij ineens een beetje teveel.
Ik ga het morgen wel verder proberen.
Bedankt voor julie hulp!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan