Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: Formule Excel  (gelezen 2546 keer)

0 leden en 1 gast bekijken dit topic.

Offline Molly

  • Lid
  • *
  • Berichten: 24
  • Oplossing.be
Formule Excel
« Gepost op: 30 augustus 2007, 00:13:31 »
Hi,
Mijn bedoeling is om in een cel een waarde te typen en dat deze waarde met een formule bewerkt wordt die in dezelfde cel is staat.
bv. Als ik in cel A1, 25 type en A2 bevat reeds een formule dan wil ik eigenlijk het resultaat van 25*A2 in de cel A1 zien ???
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.280
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Formule Excel
« Reactie #1 Gepost op: 30 augustus 2007, 08:22:20 »
Molly, dat kan alleen als je gebruik maakt van VBA! Waarom doe je het niet gewoon met een extra kolom? Dan blijf je tenminste ook nog de eerst ingetikte waarde zien...

Maar goed, als je 't echt wilt, moet je maar een voorbeeldbestandje plaatsen of meer info geven: om hoeveel cellen e.d. het gaat...

Groet, Leo
______________________________

Groet, Leo

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.280
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Formule Excel
« Reactie #2 Gepost op: 30 augustus 2007, 15:55:21 »
Hierbij alvast een code-voorbeeldje....Private Sub Worksheet_Change(ByVal Target As Range)
'Let op! Zonder de 'binbusy' toevoeging zal de procedure zichzelf in een
'oneindige loop blijven aanroepen (engels: recursion)

Static blnbusy As Boolean
   
    If blnbusy Then Exit Sub
    blnbusy = True
    If Not Intersect(Target, Range("A1")) Is Nothing And Target.Offset(0, 1).HasFormula Then
        Target.Value = Target.Value * Target.Offset(0, 1).Value
    End If
    blnbusy = False
   
End Sub
Plaats dit in een worksheet module van je VBE. De code werkt als volgt: Indien er een formule in cel B1 staat, zal de - daarna - ingetikte waarde in cel A1 worden vermenigvuldigd met het resultaat van cel B1
Tevens gebruik van de functie 'binbusy' om recursion te voorkomen (zie code).

Let op! Er zit nog géén foutafhandeling in. Dus het intikken van een formule die een error geeft of 'tekst' als resultaat, zal de code laten vastlopen!

Groet, Leo

P.s. voor het gemak óók maar een voorbeeldworkbook als bijlage... ;)
______________________________

Groet, Leo

Offline Molly

  • Lid
  • *
  • Berichten: 24
  • Oplossing.be
Re: Formule Excel
« Reactie #3 Gepost op: 30 augustus 2007, 16:49:34 »
Hi,
als ik een waarde intik in A1 wordt deze niet vermenigvuldigd met de waarde in B1.
Doe ik iets verkeerd?
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.280
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Formule Excel
« Reactie #4 Gepost op: 30 augustus 2007, 16:56:41 »
Molly, wat heb je dan in cel B1 staan? Je MOET hier wel een formule plaatsen, anders werkt de code niet! Het is zo in elkaar gezet nav je 1e post...
Citaat
bv. Als ik in cel A1, 25 type en A2 bevat reeds een formule
Het werkt trouwens maar één kant uit. Dus het aanpassen van de formule in cel B1, zorgt er niet voor dat de waarde in cel A1 wordt aangepast.
Het kan ook zijn dat je security-level op hoog staat. Je moet wel je Macro's kunnen starten, anders werkt het ook niet.

Ik zie net op internet dat de recursion ook makkelijker opgelost kan worden.Sub()
Application.EnableEvents = False
Hier de code!
Application.EnableEvents = True
End sub...

Groet, Leo
______________________________

Groet, Leo

Offline Molly

  • Lid
  • *
  • Berichten: 24
  • Oplossing.be
Re: Formule Excel
« Reactie #5 Gepost op: 30 augustus 2007, 20:35:18 »
Ok, werkt.
Thanks! :)
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

 


www.combell.com