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

Opgelost VBA - Range vullen met Cell, uitzondering als er een subtotaal staat.

Dit topic is als opgelost gemarkeerd
Status
Niet open voor verdere reacties.

gjanus

Gebruiker
Lid geworden
21 nov 2008
Berichten
106
Hallo,

Ik heb hier een stukje code die de geselecteerde cellen vult met een formule. Dit doet wat hij moet doen.

Ik zou echter graag zien dat als hij een cel met subtotaal tegenkomt deze skipt.

Code:
Sub Range_vul_formule()
    Dim cell As Range
    

    For Each cell In Selection
             cell.FormulaR1C1 = "=Formule"
      
    Next cell


End Sub


Kan iemand mij helpen?
 
Code:
if cell.value = "subtotaal" then next cell
else "jou code"
 
Dankje Marco, Alleen de ene keer is de range van het subtotaal anders dan de andere keer, nooit exact dezelfde formule. Kan de if cell.value ook iets zijn als if cell contains of zoiets?
 
Misschien lukt het met een voorbeeldbestandje wel???
 
Maar natuurlijk. Zie voorbeeldbestand. Heb voor de formule nu even 1+1 gepakt.
Als ik nu de range selecteer waar ik de formule wil hebben (B4:C19) en de macro uitvoer dan staat overal de formule 1+1.

Ik zou echter graag zien dat de subtotalen (dikgedrukte cellen) intact blijven. Als het negeren op dik gedrukte cellen makkelijker is dan op subtotalen mag dat ook.

Mooie extra zou nog zijn dat na het uitvoeren van de formule hij ze als waarde plakt/wegschrijft

Groet Jan
 

Bijlagen

Of dit?
Code:
Sub Range_vul_formule()
    Dim cl As Range

    For Each cl In Selection
        If Left(cl.FormulaR1C1, 9) <> "=SUBTOTAL" Then
           cl.FormulaR1C1 = "=1+1"
        End If
    Next cl
End Sub

Tip:
Gebruik geen correct Engelse woorden als naam voor een variabele.
In je voorbeeld document is dat: cell
 
Laatst bewerkt:
Of deze.

Code:
Sub Range_vul_formule()

    Dim cl As Range
    
    For Each cl In Range("A4", Range("A" & Rows.Count).End(xlUp)).Offset(, 1).Resize(, 2)
        If cl.HasFormula = True Then
        Else
            cl.FormulaR1C1 = "=1+1"
        End If
    Next

End Sub

Waarbij je zelf geen range moet selecteren maar deze bepaald wordt door het aantal ingevulde cellen in
kolom A.
 
Als er geen bijkomende vragen zijn vergeet dan niet uw vraag, in uw eerste post, als opgelost te markeren.
 
Bedankt Emields, edmoor, en warm bakkertje voor jullie oplossingen! Hiermee gaat het lukken.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan