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

Formules plaatsen met macro

Status
Niet open voor verdere reacties.

bowlingman

Gebruiker
Lid geworden
17 okt 2007
Berichten
433
Hallo,
Ik heb bowlingfile met 30 speeldagen.
Door bepaalde omstandigheden moet ik voor de correcte puntentelling soms formules op die sheets wijzigen en moet elk seizoen alle 30 sheets dus nazien of er formules terug moeten gewijzigd worden.
Nu had ik gedacht om via een macro deze formules opnieuw in te voeren.
In bijlage vinden jullie een testfile met 5 sheets.
Op "Blad1" heb ik een knop geplaatst om deze formules in te voeren met de volgende code
Code:
Sub NieuwSeizoen()

    Range("K15").FormulaR1C1 = _
        "=IF(SUM(RC[-5])>(RC[3]),1,IF(SUM(RC[-5])<(RC[3]),0,IF(SUM(RC[-5])=(RC[3]),0.5)))"
    Range("L15").FormulaR1C1 = _
        "=IF(SUM(RC[-5])>(RC[3]),1,IF(SUM(RC[-5])<(RC[3]),0,IF(SUM(RC[-5])=(RC[3]),0.5)))"
    Range("M15").FormulaR1C1 = _
        "=IF(SUM(RC[-5])>(RC[3]),1,IF(SUM(RC[-5])<(RC[3]),0,IF(SUM(RC[-5])=(RC[3]),0.5)))"
    Range("A1").Select
    
End Sub
En dit lukt perfect op Blad1 zelf.
Nu is de bedoeling dat dit niet op Blad1 gebeurd, maar op de 4 sheets "Dag 1" tot "Dag 4". En in één maal klikken op de knop op Blad1
Iemand een idee.
En hopelijk word de code dan ook niet te lang, want dit moet op de 30 sheets van de bowlingfile telkens in 48 cellen komen te staan.

Grtjs.
Armand
 

Bijlagen

Zoiets:
Code:
Sub NieuwSeizoen()
    For i = 1 To [COLOR="#FF0000"]4[/COLOR]
        Blad = "Dag " & i
        With Sheets(Blad)
            .Range("K15:[COLOR="#FF0000"]M15[/COLOR]").FormulaR1C1 = "=IF(SUM(RC[-5])>(RC[3]),1,IF(SUM(RC[-5])<(RC[3]),0,IF(SUM(RC[-5])=(RC[3]),0.5)))"
        End With
    Next i
End Sub

De rode 4 kan je dan wijzigen in 30 en de rode M15 in BF15.
Dan is de code voor 30 bladen en 48 cellen dus nog een stukje korter dan je originele Sub ;)
 
Laatst bewerkt:
Hallo Edmoor,
Bedankt voor je reactie.
Ik had het intussen tijd ook opgelost gekregen met bijna dezelfde code die jij doorgeeft.
Alleen had ik de cellen per stuk ering gezet.
Ik heb wel mijn blad niet benoemd.
Dit is de code die ik dan nu heb
Code:
For j = 1 To 30
    Sheets("Speeldag " & j).Range("K13:N13,K29:N29,K45:N45").FormulaR1C1 = _
                                                                "=IF(SUM(RC[-5])>(RC[12]),1,IF(SUM(RC[-5])<(RC[12]),0,IF(SUM(RC[-5])=(RC[12]),0.5)))"
                           
Next j
For k = 1 To 30
    Sheets("Speeldag " & k).Range("AB13:AE13,AB29:AE29,AB45:AE45").FormulaR1C1 = _
                                                                "=IF(SUM(RC[-5])>(RC[-22]),1,IF(SUM(RC[-5])<(RC[-22]),0,IF(SUM(RC[-5])=(RC[-22]),0.5)))"
Next k

Grtjs.
Armand
 
Kan prima. Ik begrijp alleen nooit wat sommigen met inspringpunten doen.
Als je het zo schrijft is het al een stuk leesbaarder en loop je niet 2x door al die bladen heen:
Code:
For j = 1 To 30
    With Sheets("Speeldag " & j)
        .Range("K13:N13,K29:N29,K45:N45").FormulaR1C1 = _
        "=IF(SUM(RC[-5])>(RC[12]),1,IF(SUM(RC[-5])<(RC[12]),0,IF(SUM(RC[-5])=(RC[12]),0.5)))"

        .Range("AB13:AE13,AB29:AE29,AB45:AE45").FormulaR1C1 = _
        "=IF(SUM(RC[-5])>(RC[-22]),1,IF(SUM(RC[-5])<(RC[-22]),0,IF(SUM(RC[-5])=(RC[-22]),0.5)))"
    End With
Next j
 
Laatst bewerkt:
Ik begrijp het nut van de afbreekstreepjes niet. Of je moet nog een monitor hebben van een paar Inch;)

Code:
Sub VenA()
  For Each sh In Sheets
    If sh.Name <> "Blad1" Then
      sh.Range("K13:N13,K29:N29,K45:N45").FormulaR1C1 = "=IF(SUM(RC[-5])>(RC[12]),1,IF(SUM(RC[-5])<(RC[12]),0,IF(SUM(RC[-5])=(RC[12]),0.5)))"
      sh.Range("AB13:AE13,AB29:AE29,AB45:AE45").FormulaR1C1 = "=IF(SUM(RC[-5])>(RC[-22]),1,IF(SUM(RC[-5])<(RC[-22]),0,IF(SUM(RC[-5])=(RC[-22]),0.5)))"
    End If
  Next sh
End Sub
 
Dat is een kwestie van smaak qua schrijfstiijl :)
 
Het nut van een afbreekstreepje?
Ik gebruik het als ik moet schuiven om de code nog te kunnen lezen; te lui voor.
 
Er zijn meer lui die dat gebruiken :P
 
Mooi geformuleerd @edmoor. :d
 
Bedankt voor alle reacties
@Edmoor
Ik had het eerst ook geprobeert met "With - End With" en kreeg telkens een foutmelding. Daarom dat ik dan maar 2x "For - Next" had gebruikt
Tot ik heb gezien dat ik voor 1 Range geen punt had gezet.
Is nu dan ook opgelost.

@VenA
Ik vind het ook leesbaarder met een afbreekstreepje erin, zo heb ik de code in meer dan één lange regel staan

Maar jullie zijn wel allemaal toppie. In al die jaren veel geleerd hier

Grtjs.
Armand
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan