macro uitvoeren afhankelijk van maand

Status
Niet open voor verdere reacties.
Laat ik mijn vraag wat duidelijker formuleren:

De leden worden bijgevoegd in een ander tabblad.
In kolom A staan nummers van klanten. Er kunnen nummers bijkomen en afgaan. Er is dus geen vaste relatie tussen de rijnummers en de klantnummers
Nu moet ik voor een bepaalde klant in kolom B of c een bedrag bijschrijven met een macro. Met de “loop” zoek ik dus naar een bepaald klantnummer zodat ik twee of meer kolommen verder een bedrag kan wegschrijven. M.a.w. ik kan geen directe referenties gebruiken omdat de klantnummers niet altijd op de zelfde rij staan.
Met de “loop” zoek ik dus de juiste rij. Nu moet ik in die rij iets gaan veranderen.
Mijn vraag is kan ik dit doen zonder “select” en “active cell” , m.a.w. zonder dat de macro de regel in het tabblad actief maakt?
 
Het is mij ook nog steeds niet gelukt om een tijds beperking in te bouwen

Het moet zoiets worden;

if today maart is then
 
Kijk eens naar #2.
 
Begin eens met een realistisch bestand te plaatsen. In je macro heb je het over de sheets Ledenadmin en Kostenrekening, en die zitten beiden niet in je bestand. Dus wat verwacht je dat wij voor je doen? Ik heb mijn glazen bol nét uit het raam laten vallen...
 
Nog even over de tijd;

ik kom er nog niet uit is het zoiets?

Code:
Sub testtijd()


If Month(Date) = March Then

MsgBox yes!


End If
End Sub

Ik weet alleen niet wat ik moet invullen om de maand maart te krijgen.
 
Code:
Sub Geenidee()
  If Month(Date) = 3 Then MsgBox "Plaats een relevant voorbeeldbestand"
End Sub
 
Of als je de naam van de maand wilt weten:
Code:
Sub EenVoorbeeldDocumentIsBeter()
    MsgBox Format(Date, "mmmm")
End Sub
 
In kolom A staan nummers van klanten. Er kunnen nummers bijkomen en afgaan. Er is dus geen vaste relatie tussen de rijnummers en de klantnummers
Nu moet ik voor een bepaalde klant in kolom B of c een bedrag bijschrijven met een macro. Met de “loop” zoek ik dus naar een bepaald klantnummer zodat ik twee of meer kolommen verder een bedrag kan wegschrijven. M.a.w. ik kan geen directe referenties gebruiken omdat de klantnummers niet altijd op dezelfde rij staan.
Met de “loop” zoek ik dus de juiste rij. Nu moet ik in die rij iets gaan veranderen.
Mijn vraag is kan ik dit doen zonder “select” en “active cell” , m.a.w. zonder dat de macro de regel in het tabblad actief maakt?
Met deze macro worden ook andere gegevens weggeschreven in andere tabbladen.
Verder moeten de bedragen per maand in een andere kolom komen.
 

Bijlagen

  • AA test.xlsm
    17,7 KB · Weergaven: 19
En hoe weet je welke rij je moet hebben?
Dus, hoe zoek je op klantnummer?

Voorbeeld met rij 7 als regelnummer:
Code:
Application.Goto Cells(7, Month(Date) + 3)
 
Code:
Sub bedragnaarledenadmin()


 
 Dim prijscode As String ''(prijscode is het klantennummer)
 
 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          ''(bovenplaatsen is het bedrag dat moet worden weggeschreven per maand)
 
 
 

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

Bedankt voor je geduld met mij edmoor!
 
Je kan de regel gebruiken die ik liet zien waarin je dan die 7 wijzigt in de variabele met het correcte regelnummer.
 
Ik ben er toch nog niet helemaal uit maar had het draadje al afgesloten.

Code:
If Month(Date) = 1 Then
 ActiveCell.Offset(0).Range("C1") = bovenplaatsen
End If
Dit werk prima, alleen moet de macro verwijzen naar een datum in een cell.
Ik probeerde dit maar dat werkt niet:

Code:
If Sheets("kostenrekening").Range("B3").Value.Month(Date) = 1 Then
 ActiveCell.Offset(0).Range("C1") = bovenplaatsen
End If

Wat doe ik verkeerd?
 
Ik heb natuurlijk niet je ganse code bekeken... maar Month is géén eigenschap van Value :(.
Als je gaat programmeren, zal je deze keuze trouwens ook niet hebben nadat je het punt hebt getypt.

Wellicht is het dus zoiets:

Code:
If Month(Sheets("kostenrekening").Range("B3").Value) = 1 Then
 ActiveCell.Offset(0).Range("C1") = bovenplaatsen
End If

Ik ga van de veronderstelling uit dat de datum in Cel B3 staat.
Ik blijf me trouwens afvragen waarom je gebruik maakt van ActiveCell tenzij je de macro activeert via de rechtermuisknop en die snelmenu. Maar dat lijkt me sterk dat je al zo ver zou zitten.
 
Laatst bewerkt:
Hoe moet ik het dan doen als je naar de hele code kijkt . Ik kan geen directe verwijzing gebruiken.
 
Toch ook een rare code deze: (alhoewel die wel werkt... maar het kan niet zijn dat je die begrijpt als je die schrijft)

Code:
ActiveCell.Offset(0).Range("C1") = bovenplaatsen

Stel nu dat je cel B5 hebt geselecteerd... dan gaat je 0 rijen naar onder, en vervolgens 3 kolommen naar rechts... en je komt uit bij cel D5.
Was dat wel de bedoeling? En zo ja, dan is die Range ook overbodig, want dan kan het ook zo:

Code:
ActiveCell.Offset(0, 3).value = bovenplaatsen
 
Ik weet niet hoe je hier bij komt:
Code:
If Sheets("kostenrekening").Range("B3").Value.Month(Date) = 1 Then
Dat kan natuurlijk helemaal niet.
Die Offset (0) is ook totaal overbodig.
Ik zou zeggen, pak er eens een Excel VBA handleiding bij.
 
Code:
Sheets("ledenadmin").Cells(regel, 3).Value = bovenplaatsen

En dat vervangt ook die 'Select' regel, met entirerow enz.
 
Waarom plaats je geen representatief voorbeeldbestand? Waarschijnlijk kan het eenvoudig met een draaitabel. Dus weer een gokje erbij.
 
Het beste wat je kan doen is proberen de code's die je gegeven zijn te begrijpen.
Desnoods zoek je elk woordje op. Hetgeen ik nu zie is dat je stukken code van de ene oplossing gebruikt in een andere, en dat aanvult met code die de macrorecorder geeft of die je van nog anderen krijgt... zonder te begrijpen wat alles doet.
Mijn petje af als je het op die manier nog aan de praat krijgt, maar het is voor jezelf én voor anderen onbegonnen werk om alles nog te ontcijferen.

Hier een stukje code geschreven uit het hoofd. Het zal wel werken, maar vraag me niet waar je uit komt.
En dat is dan de manier waarop jouw code er uit ziet:

Code:
Range("AB8978").Offset(5).Range("A7").Offset(8,280).Offset(0).Select

In mensentaal:
Dat is de broer van mijn overgrootvader zijn vrouw haar zoon zijn nonkel zijn petekind zijn vriendje en die zijn vader.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan