• 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.

Macro

Status
Niet open voor verdere reacties.

tvanlaere

Gebruiker
Lid geworden
21 nov 2012
Berichten
16
Dag allemaal,

Ik probeer angstvallig om mijn eerste macro te maken.
Omdat er input van de gebruiker nodig is, kan ik die niet gewoon opnemen en moet er dus wat geprogrammeerd worden.
Omdat het mijn eerste macro is, loopt het daar dus fout.

Wat moet er gebeuren:
Op basis van de input van de gebruiker (Vervalmaand en indexcijfer) moeten bepaalde huurprijzen opnieuw berekend worden.

Dus als een getal (1 tot 12) in een bepaalde kolom gelijk is aan de vervalmaand die de gebruiker in gaf, dan moet het cijfer in de range met de indexcijfer aangepast worden met het cijfers dat door de gebruiker ingegeven werd.

Voor het gemak steek ik de bewuste XLS in bijlage.
Je ziet dat ik al wat heb zitten proberen, maar mijn VBA kennis is veel te beperkt. Zal dringend eens een cursus moeten volgen.

Bedankt !!
Toon
Bekijk bijlage Verhuringen_macro.xlsm
 
T van Laere

Je kunt geen reeks als range("X:X") nemen en verwachten dat de code begrijpt dat je iedere cel
in deze range af wil gaan om iedere keer te testen of een maand binnen de grensen valt.
Dit werkt helaas niet, gebruik hiervoor de For Each .. In Range("X:X") functie.

Een voorbeeldje van de code stuur ik je hierbij mee.

Code:
Private Sub CommandButton1_Click()

'Range bepalen

Dim rCel As Range

Sheets("Lijst NIEUW").Activate

For Each rCel In Range("X2:X100")
    If rCel.Value = Val(Vervalmaand.Value) Then
        Range(rCel.Address).Offset(0, -2) = Indexcijfer.Value 'twee kolommen voor de X kolom ligt de V kolom
    End If
Next rCel

End Sub

Veel Succes.
 
Nog eentje om te testen.

Code:
Private Sub CommandButton1_Click()
    With Sheets("Lijst NIEUW")
        sn = .Range("V2:X" & .Cells(Rows.Count, 22).End(xlUp).Row)
        For i = 1 To UBound(sn)
            sn(i, 1) = IIf(sn(i, 3) = Val(Vervalmaand.Text), CDbl(Indexcijfer.Text), sn(i, 1))
        Next
        .Range("V2").Resize(UBound(sn), 3) = sn
    End With
End Sub
 
Bedankt heren!
Dit had ik nooit zelf gevonden!
Zoals gezegd schrijf ik mij in voor een VBA cursus.

Groeten
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan