Als er een formule in de Cell staat dan…..?

Status
Niet open voor verdere reacties.

hondel

Gebruiker
Lid geworden
29 okt 2008
Berichten
66
Ik ben op zoek naar een manier om met een macro in Excel te controleren of er een formule in een cel is, zo ja dan de formule weg halen en de waarde er in zetten.

Zo iets, maar dan werkend:
Code:
If Blad1.Cells(1,1) = [COLOR="Red"]som of formule[/COLOR] Then
    Blad1.Cells(1,1) = Blad1.Cells(1,1)
End If
Wie kan mij helpen?
 
Code:
on error resume next
for each cl in sheets(1).cells.specialcells(xlcelltypeformulas)
  cl.value=cl.value
next
 
Bvb. voor kolom A:

Code:
on error resume next
sheets(1).columns(1).value=sheets(1).columns(1).value

Wigi
 
Jullie hebben niet het antwoord gegeven wat ik zocht maar dankzij jullie suggesties ben ik wel tot het goede antwoord gekomen.
De macro van snd heb ik stap voor stap uitgevoerd en bij locale variabelen zag ik “HasFormula” staan.
Dit is wat ik nodig had.
Door de macro van Wigi kwam ik op het idee om er weer een For – Next loop uit te halen, wat de snelheid weer te goeden komt.

Dit is het geworden:
Code:
If Sluit = True And Blad3.Cells(5, Kolom).[COLOR="Red"]HasFormula[/COLOR] = False Then ' som neer zetten
      Blad3.Range(Cells(5, Kolom), Cells(254, Kolom)).FormulaR1C1 = "=IF(RC[5],RC[5],"""")"
      ‘ en hier nog wat bewerkingen
End If
If Sluit = False And Blad3.Cells(5, Kolom).[COLOR="red"]HasFormula[/COLOR] = True Then   ' som weghalen
      Blad3.Range(Cells(5, Kolom), Cells(254, Kolom)).Value = Blad3.Range(Cells(5, Kolom), Cells(254, Kolom)).Value
      ‘ en hier nog wat bewerkingen
End If

Bedankt weer voor de moeiten en de inspiratie!

Jeroen
 
Laatst bewerkt:
Dat kan beter:
Code:
  With Blad3.Cells(5, Kolom)
     If Sluit = True And .HasFormula = False Then ' som neer zetten
         .resize(249).FormulaR1C1 = "=IF(RC[5],RC[5],"""")"
      ‘ en hier nog wat bewerkingen
     ElseIf Sluit = False And .HasFormula = True Then   ' som weghalen
         .resize(249).Value = .resize(249).Value 
      ‘ en hier nog wat bewerkingen
     End If
  End With
 
Kijk, daarom staat er bij jou “Mega Senior” en bij mij “Junior Member”.
Bedank, ik neem het over in mijn macro en "resize" kan ik ergens anders in de macro ook goed gebruiken.

Bedank!

P.s. Ik heb 34 A4tjes vol met macro's dus als je je verveeld mag je wel even kijken of er nog meer te verbeteren is. ;-)
 
Als je dan toch minder lettertjes code prefereert:

Code:
  With Blad3.Cells(5, Kolom).Resize(249)
     If Sluit And Not .Cells(1).HasFormula Then ' som neer zetten
         .Formula = "=IF(RC[5],RC[5],"""")"
      ‘ en hier nog wat bewerkingen
     ElseIf Not Sluit And .Cells(1).HasFormula Then   ' som weghalen
         .Value = .Value 
      ‘ en hier nog wat bewerkingen
     End If
  End With

Wigi
 
Duidelijk het werk van een “Giga Honourable Senior Member”.
Het gaat mij echter niet om minder lettertjes maar om snelheid.
Is het niet zo dat als je “overbodige” dingen weg laten, Excel sneller wordt?
Hoe weet je eigenlijk of een macro op de ene manier sneller of langzamer is dan op een andere manier?
 
Is het niet zo dat als je “overbodige” dingen weg laten, Excel sneller wordt?

Ja.

Hoe weet je eigenlijk of een macro op de ene manier sneller of langzamer is dan op een andere manier?

Dat heeft te maken met ervaring, veel uitproberen, andere topics volgen, en op internet meer informatie opzoeken en bestuderen.

Wigi
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan