2-jaars kalender aanpassen

Status
Niet open voor verdere reacties.
Die code kan niet lopen.
Waarom je de code niet gewoon kopieert is me een raadsel.
Je werkblad ziet er anders uit dan het voorbeeld dat je hier hebt geplaatst.

Begin liever eerst met een basisboek VBA voordat je hiermee verder gaat.
 
Laatst bewerkt:
Er moet duidelijk iets mis gaan in de communicatie of anders in de onderliggende werkmap.
Als het het huidige werkjaar verwijdert, 365 of 366 regels, dan krijg je toch netjes het volgende jaar met de reeds ingevulde zaken netjes naast elkaar bovenin de tabel te staan.
SNB en ik gebruiken dezelfde techniek, alleen iets andere methodiek om het bereik te bepalen.
Ofwel verander je zelf het jaar of doe je een ander niet controleerbare actie.
Ofwel is er iets met de tabel (bereik).
Teveel vraagtekens voor mij, met alleen de opmerking van je kant, dat het niet werkt.

Ofwel post je nog een keer je laatste versie en/of zeg je wat je precies deed voor het mis ging.
Anders steek ik er geen tijd meer in, zoiets simpels kan toch niet misgaan.
 
Laatst bewerkt:
Die code kan niet lopen.
Waarom je de code niet gewoon kopieert is me een raadsel.
Je werkblad ziet er anders uit dan het voorbeeld dat je hier hebt geplaatst.

Begin liever eerst met een basisboek VBA voordat je hiermee verder gaat.

Beste snb,

Ik ben met het basisboek gestart. Maar dat is toch wel heel wat anders dan het maken van een code zoals jullie gebruiken.

Beste cow18,

Ik waardeer het enorm dat je tijd steekt in het probleem van mij.
Ik ga er natuurlijk weer mee aan de slag, maar begrijp de code niet.
Ik testte het om in het tweede jaar op 2-1-2021 iets in een cel te plaatsen en ging er van uit dat die gegevens naar boven zouden schuiven.
Dat gebeurt niet.

Misschien ligt het aan de formule in cel B2.
Ik heb bijgaand een exacte kopie van het originele bestand gedaan.
Mag ik jullie nog een laatste keer vragen om hulp?

mvg,
hdrenth
 

Bijlagen

  • kalender-test.xlsx
    82,7 KB · Weergaven: 39
Denk na: met een formule in B2, kan daar nooit een ander jaar komen dan het jaar van de huidige datum.
Dit heeft niets met VBA te maken, maar met gezond redeneren.
En het klopt dus, dat het door jou eerder geplaatste bestand afweek van het bestand waarvoor je het wil gebruiken.
Is niet erg chique ten opzichte van helpers.
 
Laatst bewerkt:
Beste snb,

Dat het bestand mogelijk afwijkt van een eerdere versie heeft te maken met de ontwikkeling in Excel om het werken met het bestand zo efficiënt mogelijk te maken. Maar daarbij zijn geen formules (met uitzondering van die in cel B2) gewijzigd.
Ik ben er nog niet helemaal klaar mee en dus worden de Excel werkbladen nog steeds aangepast.

De term "is niet zo chique" herken ik niet in mezelf. Onkunde op het gebied van VBA wel.

mvg,
 
Laatst bewerkt door een moderator:
Beste HSV, Cow18 en snb,

De VBA code is correct.
Ik was steeds in de veronderstelling dat de cel B2 de jaarwaarde moest hebben.
Dat heb ik over het hoofd gezien.
Mijn welgemeende excuses en dank voor jullie bijdragen.

Ik meld het probleem als opgelost.

mvg,
 
Laatst bewerkt door een moderator:
Nieuw boekjaar aanmaken

Beste HSV, Cow18 en snb,

Ik kom er toch niet uit. Ben inmiddels dagenlang bezig met het testen en veranderen.
Mijn kennis van VBA is echt nog onvoldoende.

Ik heb een exacte kopie gemaakt van de werkbladen waarop het betrekking heeft.
Ook heb ik de samengestelde macro ingesloten.
Ik begrijp dat het niet prettig is, maar mag ik jullie nog een keer vragen om mij te helpen?

Mijn wensen zijn:
A) het 1e jaar van de 2 jaars-kalender verwijderen waardoor het 2e jaar naar boven schuift en een nieuw 2e jaar aanmaken (blad8)
B) De boekingen verwijderen muv het dagboek VERKOOP (blad5)
De knop van de macro zit in Blad 5.

mvg,


Code:
Dim ps As String
Dim fs As Object
Dim ws As Worksheet
Sub BestandOpslaan()
''Bestand opslaan onder een nieuw boekjaar
'Eerst kijken of de map aanwezig is
Set fs = CreateObject("Scripting.FileSystemObject")
If Not fs.folderexists(Range("J2") & "\" & Range("J4")) Then

'Maak een map
MkDir Range("J2") & "\" & Range("J4")
End If
ActiveWorkbook.SaveAs Range("J2") & "\" & Range("J4") & "\" & Range("J3") & "-" & Range("J4")
End Sub
'Rijen verwijderen muv dagboek VERKOOP
Sub hsv()
Blad5.Select
Application.DisplayAlerts = False
With Cells(1).CurrentRegion
  .AutoFilter 7, Array("ABNA Bank", "Kas", "Memoriaal"), 7
  .Offset(1).Delete
  .AutoFilter
End With
End Sub

'Kalender verplaatsen en aanpassen voor nieuwe jaar
Sub KalenderAanpassen()
Blad8.Select
ActiveSheet.Unprotect ps
sn = Range("A2:B4")
Blad8.ListObjects(1).ListRows(1).Range.Resize(DateSerial(Year(sn(3, 1)), 12, 31) - sn(3, 1) + 1).Delete
Blad8.Cells(4, 1).Resize(DateSerial(sn(1, 2) + 1, 12, 31) - DateSerial(sn(1, 2), 1, 0)) = [index(text(date(B2,1,row(1:731)),"yyyy-mm-dd"),)]
ActiveWorkbook.Save
End Sub
 

Bijlagen

  • Nieuw boekjaar.xlsb
    325,7 KB · Weergaven: 42
Laatst bewerkt door een moderator:
Beste leden,

Ik besef dat het, mede door mijn klungelige aanpak, best wel moeilijk is om mij te helpen.
Maar de codes werken niet. Ook niet in mijn toegevoegde bestand.
Mag ik nog één poging doen om mij te helpen?

[CODESub BestandOpslaan()
'Huidig bestand opslaan
ps = InputBox("Het huidige bestand wordt beveiligd. Voer een wachtwoord in.", vbOKCancel)
For Each ws In ActiveWorkbook.Worksheets
ws.Protect Password:=ps
Next ws
ActiveWorkbook.Save

'Bestand opslaan onder een nieuw boekjaar
'Eerst kijken of de map aanwezig is
Set fs = CreateObject("Scripting.FileSystemObject")
If Not fs.folderexists(Range("J2") & "" & Range("J4")) Then

'Maak een map
MkDir Range("J2") & "" & Range("J4")
End If
ActiveWorkbook.SaveAs Range("J2") & "" & Range("J4") & "" & Range("J3") & "-" & Range("J4")
ActiveWorkbook.Unprotect ps
End Sub

'Tabel Boekingen filteren en rijen verwijderen
Sub BoekingenOpschonen()
Blad5.Select
Application.ScreenUpdating = False
For i = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
If Range("G" & i) = "ABNA bank" Then
Rows(i).Delete
End If
If Range("G" & i) = "Kas" Then
Rows(i).Delete
End If
If Range("G" & i) = "Memoriaal" Then
Rows(i).Delete
End If
Application.ScreenUpdating = True
Next
End Sub

'Kalender verplaatsen en aanpassen voor nieuwe jaar
Sub KalenderAanpassen()
Blad8.Select
ActiveSheet.Unprotect ps
sn = Range("A2:B4")
Blad8.ListObjects(1).ListRows(1).Range.Resize(DateSerial(Year(sn(3, 1)), 12, 31) - sn(3, 1) + 1).Delete
Blad8.Cells(4, 1).Resize(DateSerial(sn(1, 2) + 1, 12, 31) - DateSerial(sn(1, 2), 1, 0)) = [index(text(date(B2,1,row(1:731)),"yyyy-mm-dd"),)]
ActiveWorkbook.Save
End Sub][/CODE]

Zie ook de bijlage.
Heeft het wellicht met de beveiliging van de werkbladen te maken?

mvg,
 

Bijlagen

  • Nieuw boekjaar.xlsb
    335,2 KB · Weergaven: 42
Laatst bewerkt door een moderator:
Beste forumleden,

Ik wil graag hulp bij een macro.
Het betreft een 2-jaars kalender. Ik heb daar al een aantal keren contact over gehad, maar ik kom er zelf niet uit.

Het 1e jaar wil ik verwijderen met uitzondering van de eerste regel ivm een formule.
En daarna aan het eind weer een jaar invoegen.
Het werkblad heet Blad8.
Hierna een macro van een lid die bijna perfect werkt.
Daarbij twee bijlagen van de kalender.
Kalender 1 is de kalender vóórdat de macro is uitgevoerd.
Kalender 2 is de kalender die ná de macro is uitgevoerd.

Code:
Blad8.Select
sn = Range("A2:B4")
Blad8.ListObjects(1).ListRows(1).Range.Resize(DateSerial(Year(sn(3, 1)), 12, 31) - sn(3, 1) + 1).Delete
Blad8.Cells(4, 1).Resize(DateSerial(sn(1, 2) + 1, 12, 31) - DateSerial(sn(1, 2), 1, 0)) = [index(text(date(B2,1,row(2:731)),"dd-mm-yyyy"),)]
ActiveWorkbook.Save
End Sub
 

Bijlagen

  • kalender 1.xlsx
    90 KB · Weergaven: 40
  • kalender 2.xlsx
    89,7 KB · Weergaven: 40
Je maak er eem rommeltje van:
1. In kalender1.xlsx zit geen Blad8, maar wel Sheet1 (met naam Blad1)
2. In kalender2.xlsx ditto
3. Beide bestanden hebben de extensie .xlsx Daar kun je geen macro's in opslaan. In .xlsm en .xlsb wel
4. Waarom werk je met een 2-jaars kalender. En waarom al die moeite om dan 1 jaar weg te gooien. Ik zou zeggen: Doe de boekingen gewoon in het jaar waar ze thuis horen.
5. Als je helemaal geen kennis hebt van VBA, is het bijna onmogelijk om een VBA code goed werkend te krijgen, laat staan om hem werkend te houden. Je zult afhankelijk blijven van de helper/maker. En Murphy leert ons dat de code fout gaat, precies op het moment dat de helper op vakantie is.
6. Mijn advies is: Bezint eer ge begint. En leer wat basisregels van VBA.
 
Laatst bewerkt door een moderator:
Beste Piet Bom,

Dank voor je reactie.

Ik heb zelf al aangegeven dat ik een beetje klungelig te werk ben gegaan.
Ook deze keer.
Toch wil ik nog even op de inhoud reageren.

ad 1 en 2) Bij het kopiëren van de werkbladen uit het grotere bestand ben ik vergeten om de werkbladen de juiste naam te geven.
Ook in kalender 2 moeten de werkbladen Blad 5 resp. Blad 8 heten. Maar dat zijn toch details? Van Blad 1 maak ik Blad 5, enz.

ad 3) Dat beide gekopieerde werkbladen nog een extensie van xlsx hebben is niet vreemd. er is nog geen macro aan gekoppeld.

ad 4) Ik werk met een 2-jaarskalender omdat periodieke werkzaamheden in het eerste jaar weer ingepland worden in het tweede jaar.
Om te voorkomen dat ik die opnieuw moet overnemen bij het aanmaken van een nieuw jaar, heb ik dus een 2-jaarskalender gemaakt.

ad 5 en 6) In Excel red ik me uitstekend, maar ik heb (nog) hulp nodig voor het werken met VBA. Enige tijd terug wel het boek "Excel VBA voor professionals" bij Van Duuren aangeschaft, maar ik ben nog niet zo ver om dit soort VBA code's te maken.

Maar ik ben me er van bewust dat dit probleem niet eenvoudig is op te lossen.

Met vriendelijke groet,
hdrenth
 
Beste Piet Bom,

Na je kritische reactie verwacht ik ook een advies. Het afdoen met "koop een boek" kan iedereen verzinnen. Daar is dit forum niet voor en daar kom ik niet verder mee.

De bijgesloten macro is uitgewerkt door een ander forumlid maar werkt ten dele. De eerste regel in "Kalender 2" is nog niet correct.

Mvg,
 
Laatst bewerkt door een moderator:
Je kunt alleen maar in een forum worden geholpen als je de hulp ook begrijpt.
Zolang dat niet het geval is, is een boek het beste advies; ook daarvoor is een forum.
 
Beste SNB,

Ik had wel enige problemen met de plaatsing van mijn probleem omdat ik nieuw ben in dit forum en het systeem nog niet onder de knie had. (Had me in 2018 al aangemeld, maar tot nu toe niet om hulp gevraagd).
Maar deze hulp was, hoe goed bedoelt ook, niet volledig, waardoor het probleem dus nog niet is opgelost.

Mvg,
 
Laatst bewerkt door een moderator:
Het echte probleem zit niet in de code, dus je vervalt in zinloze herhaling.
 
Snb,

Het ligt wel aan de code! De bovenste regel geeft een foutmelding. Zie kalender 2 als voorbeeld.

Maar ik stop maar met het beantwoorden van jouw zinloze, ongefundeerde opmerkingen.
 
Beste SNB,

Weer zo'n makkelijk antwoord uit jouw koker als je de oplossing van het probleem niet weet.
Zo ken ik er nog legio.

mvg,
 
Laatst bewerkt door een moderator:
ik ben halverweg dit verhaal er uit gestapt. een ogenschijnlijk doodeenvoudig probleempje dat blijkbaar niet op te lossen is.
Eigenlijk moet je een excelleke maken met een macro en dan heel de boel zo goed mogelijk dichttimmeren om het idiotproof te maken maar toch nog net werkbaar.
De combinatie van een eigenzinnige/onhandige/"klungelige(eigen woorden)" gebruiker en meerdere goeie macros, variaties op eenzelfde thema, lijkt niet te werken.
Helemaal in het begin had ik bovendien, niet gecheckt maar volgens mijn geheugen, ongevraagd wat verbeteringen aangebracht ivm. feestdagen en formules, niet opgemerkt/meegenomen.

Hulp van de forumleden is in deze eindig, maar begin dan vooral niet uit te dagen of helpers opzij te zetten, bij mij stond je al op mijn zwarte lijst.
Iedere helper heeft zo een beetje zijn eigen invalshoek en zijn "nerdige" kenmerkende eigen manier van oplossen, voor jullie hulpvragers misschien wat moeilijker te begrijpen, maar wij doen dit ook wel onbaatzuchtig en vragen achteraf enkel een eerlijke bedankt ipv. een ezelsstap.

Excel heeft +1.000.000 rijen, think out of the box, waarom dan bv. niet op het einde van het jaar 365 rijen verbergen ipv. deleten, problem solved.
Aanpassen van het jaartal in die ene cel wordt dan, macro-gestuurd, filteren op dat jaartal en jaartal+1 + eventueel extra rijen toevoegen.

Werkt het dan nog niet naar behoren, spit dan nog eens van draadje 1 tot hier alles uit, elimineer gebruikersfouten (blijf met je klauwen van het jaartal en dergelijke af) en kom terug met je conclusies en je resterende problemen.

Ik kan het niet voldoende benadrukken, het probleem zit eerder tussen de bureaustoel en het scherm dan in de macro.
Voor mij was deze vraag, kwa moeilijkheidsgraad, eerder het niveau van "tussen de soep en de patatten".
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan