• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

VBA code cashflow

Status
Niet open voor verdere reacties.

Marky76

Gebruiker
Lid geworden
26 okt 2002
Berichten
424
Beste,

Hieronder de code die verbeterd is geweest dankzij Wigi voor het wissen van de cashflow en om een nieuwwerkblad aan te maken.

Nu zo ik een bijkomend stukje code willen dat ervoor zorgt, dat indien we een maandag
zijn (van eender welke maand), dat dan de waarde in cel E8 300.000 EUR is alsook in Cel E15. Op andere dagen moet de waarde in cel E8 110.000 EUR zijn en in Cel E15 130.000.

Code:
Sub Wissenbanken()
' Wissenbanken Macro
' De macro is opgenomen op 11-7-2006 door Mark.
' Sneltoets: CTRL+b
    Dim rng As Range
    If MsgBox("Weet u zeker dat u door wilt gaan?", vbYesNo + vbQuestion + vbDefaultButton2) = vbYes Then
        
       Application.StatusBar = "Ik ben bezig - even geduld."
       
        Set rng = Range("C4,C8,C12,C15,C18,C21,C25,C28,C31,C35,C38,C41")
        Set rng = Application.Union(rng, rng.Offset(, 1), rng.Offset(, 3))
        Set rng = Application.Union(rng, Range("C44:D44,C47:D47,C50:D50,C54:D54,C57:D57,C60:D60,C65:D65,C67:D67,C70:D70,C73:D73,C76:D76,F44,I:J"))
        rng.ClearContents
        Range("D3:D90").ClearComments
       'werkt ook zonder de application te zetten voor Union, maar programmeurs zien het liever staan
       Application.StatusBar = "U mag invoeren"
    Application.StatusBar = False
        
    End If
'De eerste twee Set zijn een manier om te wissen en de derde is een andere manier manier.
End Sub
Sub Nieuwwerkblad()
' Nieuwwerkblad Macro
' De macro is opgenomen op 6/06/2007 door Georges Cloosterin.

    Dim ws As Worksheet
    ActiveSheet.Copy before:=Sheets(1)
    Set ws = Sheets(1)
    With ws
        .Name = Format(Date, "dd-mm-yy")
        .Activate
    End With
    Wissenbanken
End Sub

Groeten, Mark
 

Bijlagen

Mark

Al wat je nodig hebt is een If - Then - Else structuur en de Weekday functie.

Zo'n IF structuur in VBA vind je met massa's op het forum hier (en op het internet). Als je een Excel formule in VBA gebruikt, begin je met te typen:

worksheetfunction

Dan typ je een punt. VBA geeft je dan de hele lijst van functies die je kan gebruiken. Typ een w en een e en je bent er al bijna. Dan nog de juiste argumenten en die functie en het is klaar.

Wigi
 
Marky,

Houdt er wel rekening mee dat een maand meerder maandagen bevat! Tenzij dit niks uitmaakt voor je. :).

Succes.
 
Dementer,

Ja dit is wel van belang, de waarden 300000 moeten enkel in de opgenoemde cellen komen op een maandag, maakt niet uit welke maandag.

Ben al een uur aan het sukkel maar, maak ni veel progressie.

Mark
 
Beste,

Ik heb de volgende code geschreven.

Denk je dat dit op maandag het geweste resultaat zal geven?

Code:
Sub MijnMaandagWaarde()
Dim Daydate As Date

If Daydate = vbMonday Then

 Range("E8").Value = 300000
 Range("E15").Value = 300000
 
 Else
 
 Range("E8").Value = 110000
 Range("E15").Value = 130000
 
 End If
End Sub

Graag uw mening.

Groeten, Mark
 
Waarom denk je dat ik schreef over Weekday? Dat is niet voor niets hoor. Anyway.

Code:
Sub MijnMaandagWaarde()
    If Weekday(Date, vbMonday) = 1 Then
        Range("E8").Value = 300000
        Range("E15").Value = 300000
    Else
        Range("E8").Value = 110000
        Range("E15").Value = 130000
    End If
End Sub

Wigi
 
Nog korter:

Code:
Sub MijnMaandagWaarde4()
    Range("E8").Value = IIf(Weekday(Date, vbMonday) = 1, 300000, 110000)
    Range("E15").Value = IIf(Weekday(Date, vbMonday) = 1, 300000, 130000)
End Sub

Wigi
 
Kan ook ietsjes anders:
Code:
If Format(Date, "dddd") = "Monday" Or Format(Date, "dddd") = "maandag" Then
    Range("E8").Value = 300000
    Range("E15").Value = 300000
Else
    Range("E8").Value = 110000
    Range("E15").Value = 130000
End If

Met Wigi zijn methode vang je (volgens mij) gelijk de taal barriere af.
Je kijkt naar het dagnummer en niet naar de naam. Let wel op dat de week in vba op maandag begint (deze kan je aanpassen, maar is nu nergens voor nodig).

Tevens wil ik je toch nog op de 1e post van Wigi wijzen waarin hij het antwoord al redelijk voor heeft gegeven (redelijk vol op de slof te nemen :))
Als je zelf hiermee verder had gestoeid was je er zeker zelf uit gekomen (in combinatie met de excelente VBA-hulp IN Excel) :)
 
Wigi,
Netjes je tweede code post.
Vergeet zo vaak de Iif functie. ziet er ook een stuk draaglijker uit :)

Bedankt.
 
Wigi,

Ik had eerst met worksheetfunction.Weekday(..... geprobeerd, maar dat lukte niet en nu zie ik waarom, want ik had enkel VBmonday tussen haakjes gezet en niet Date, en daarom was ik iets anders aan het proberen.

Maar die functie ga ik straks als ik thuis ben zeker lezen en zeker die kortere code versie.

Dementer ook bedankt voor de andere schrijfwijze.

Bedankt, Mark
 
Wigi,

Ik heb nog een vraagje. In de code staat

Code:
If Weekday(Date, vbmonday) = 1 Then

Als ik dan ben gaan opzoeken hoe Weekday werkt zie ik dat maandag de waarde 2 heeft en toch doet de code het met het cijfer 1.

Dus je moet altijd achter het = teken een cijfer opgeven, want ik heb het eens getest zonder de 1 en dan geeft de code 300.000, maar dit blijft ook al verander ik de dag in VBtuesday. Hoe kom het dat je na de haakjes toch nog een cijfer moet opgeven?
Dat versta ik ni goe.

Groeten, Mark
 
Mark

zet je cursor ergens in het woord Weekday en druk op F1.

Weekday, functie

Geeft als resultaat een Variant (Integer) die een geheel getal bevat waarmee de dag van de week wordt aangegeven.

Syntaxis

Weekday(datum, [firstdayofweek])

Het argument firstdayofweek heeft de volgende instellingen:

Constante Waarde Beschrijving
vbUseSystem 0 Gebruikt de NLS API-instelling.
vbSunday 1 zondag (standaardinstelling)
vbMonday 2 maandag
vbTuesday 3 dinsdag
vbWednesday 4 woensdag
vbThursday 5 donderdag
vbFriday 6 vrijdag
vbSaturday 7 zaterdag

Resultaatwaarden

De functie Weekday kan de volgende waarden als resultaat geven:

Constante Waarde Beschrijving
vbSunday 1 zondag
vbMonday 2 maandag
vbTuesday 3 dinsdag
vbWednesday 4 woensdag
vbThursday 5 donderdag
vbFriday 6 vrijdag
vbSaturday 7 zaterdag

Het geeft dus als resultaat een 2 voor maandag, maar dat is als zondag de standaardwaarde is. Hier is dat Maandag, dus moet je er 1 van afhalen.

Wigi
 
Wigi,

De help had ik gevonden en begreep dat wat de standaardinstellingen zijn, maar uit
onderstaande was voor mij niet duidelijk dat je achter de haakjes =1 moest plaatsen om zo maandag als standaard in te stellen, want die bleek niet uit de help.
Ik bedoel dat ik niet door had dat je achter de haakjes =1 moet zetten.

Dit stond in de help:

Weekday(datum, [firstdayofweek])

MAAR er stond niet Weekday(datum, [firstdayofweek]) = X en dat je op de plaats van
de X dan een cijfer moest plaatsen.

Op die manier had de help voor iemand dat er niet veel van kent duidelijker geweest.

Voor jullie is dat peace of cake, maar niet voor mensen dat er de bote verstand van hebben.

Maar nu is het duidelijk.

groeten, Mark
 
Zonder jullie bijstand, zouden er weinig mensen met alleen de help, ook al lijkt hij soms duidelijk, verder geraken.

Groeten, Mark
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan