Een berekening geven als de cel gekleurd is

Status
Niet open voor verdere reacties.

Cindy1234

Gebruiker
Lid geworden
27 mei 2013
Berichten
16
Beste,

Voor een opdracht moet ik het volgende doen:

: Maak een macro met de naam Korting10 die
als de cursor in een rode cel in kolom F staat
in kolom E het bedrag met korting 10% berekent voor het brutobedrag in kolom B
en het bedrag een financiële opmaak geeft.
Hoe kan ik dit het beste doen?
Ik dacht zelf aan een als functie. Dat als de cel rood is dat die dan de berekening doet.

Ik weet enkel niet hoe de cel als kleur wordt herkend.

mvg,

Bekijk bijlage Les2_Taak2_Korting.xlsx
 
De link naar je document doet het niet.
 
Bij mij opent-ie gewoon. Dus niks mis met de link :) Overigens is het een huiswerkvraag, en daar mogen we maar beperkt ondersteuning op geven. Je moet in ieder geval aangeven wat je zelf al gedaan hebt.
 
Laatst bewerkt:
Ten tijde van mijn bericht waren er problemen met de server. Hij doet het nu inderdaad wel weer.
 
En nu wachten op wat Cindy zelf al heeft geprobeerd :). Overigens zit in het voorbeeldje nergens een rode cel.
 
Ik weet wel hoe je de berekening maakt met de macro. Ik heb het nu zo:

Sub Korting10()
'
' Korting10 Macro
'

'
ActiveCell.Offset(0, -1).Range("A1").Select
ActiveCell.FormulaR1C1 = "=IF(RC[1]=R[-4]C[1],RC[-3]*0.9,"""")"
Selection.NumberFormat = "_($* #,##0.00_);_($* (#,##0.00);_($* ""-""??_);_(@_)"
End Sub

Maar hij moet zoals ik het lees enkel de formule uitvoeren wanneer de cel in kolom F rood is.
Dus als de cel rood is dan moet hij bovenstaande formule uitvoeren.
Zit ik ongeveer goed?
 
Dag Cindy1234 !

Is het misschien niet beter om eerst eens een flowchart te maken met de verschillende processtappen?

Zo zou als eerste stap de vraag kunnen gesteld worden: "staat de actieve cell in kolom F?". Indien nee, niets meer te doen. Indien Ja, volgende vraag: "Is de actieve cel rood?". Indien nee, niets meer te doen. Indien Ja, volgende stap, ... enz.
Klinkt misschien belachelijk, maar in je code zoals die er nu staat, zit in feite geen structuur.

Grtz,
MDN111.
 
Hoi MDN111,

JA.. mooie naam hè haha..
pffff.. ik ben net een beginneling in VBA. Dus hoe maak je een flowchart?:shocked:
Heb ik dan daarna een macro?

Groetjes

Cindy
 
Een flowchart heeft niks met Excel te maken (in dit geval :). Een schoolbord met een krijtje is dus genoeg :D
Wat mdn bedoelt is dat je een procestekening maakt gebaseerd op takken: Als dit gebeurt, dan dit Anders dat. En elke antwoord kan weer nieuwe takken opleveren. Iets als:
Code:
           Vraag
             |
             |
      ---------------
      |             | 
      |             | 
  Dan dit        anders dit
En met zo'n schema kan je dan programmeren. En kom je bijvoorbeeld tot de conclusie dat je een IF .. THEN ... ELSE ... END IF nodig hebt, of misschien wel een SELECT CASE.
 
Beste,

Voor een opdracht moet ik het volgende doen:

: Maak een macro met de naam Korting10 die
als de cursor in een rode cel in kolom F staat
in kolom E het bedrag met korting 10% berekent voor het brutobedrag in kolom B
en het bedrag een financiële opmaak geeft.
Hoe kan ik dit het beste doen?
Ik dacht zelf aan een als functie. Dat als de cel rood is dat die dan de berekening doet.

Ik weet enkel niet hoe de cel als kleur wordt herkend.

mvg,

Bekijk bijlage 229417

Je kan door een macro opnemen kijken hoe Excel een kleur aangeeft in een cel. en deze formule dan opnemen in je als-functie.
 
Dus Octafish,

Als kolom F rood is dan kolom B *.90
Als kolom leeg is dan gebeurt er niks..
Is dit m'n Flow chart:d?

Ha JohannusBakfiets.. Ik heb gekeken hoe Excel de kleur aangeeft, maar ik weet niet hoe ik dit in VBA aanpas. Ik weet niet hoe ik de als functie in VBA zet.
 
Maak een cel in kolom F op de betreffende regel rood en doe dan onderstaande.

Code:
Sub Korting10()
'
' Korting10 Macro
'

'
    If Cells(ActiveCell.Row, 6).Interior.Color = 255 Then
        ActiveCell.Offset(0, -1).Range("A1").Select
        ActiveCell.FormulaR1C1 = "=IF(RC[1]=R[-4]C[1],RC[-3]*0.9,"""")"
        Selection.NumberFormat = "_($* #,##0.00_);_($* (#,##0.00);_($* ""-""??_);_(@_)"
    End If
End Sub

De berekening wordt nu uitgevoerd.
Maak de berekende cel leeg en de rode cel weer zonder kleur.
Bij het uitvoeren van de macro zal je dan zien dat de berekening niet wordt gedaan.
 
Laatst bewerkt:
Foei ed, je geeft een complete oplossing, en dat mag niet bij huiswerk vragen.
 
Hoi Ed,

Bedankt voor de oplossing!! Kan je me nog een paar dingen uitleggen. ik begrijp het denk ik bijna:)
De formule betekent dus: Als de actieve cel in kolom 6 (F) rood is, ga dan 1 kolom naar links toch?
Ik weet alleen niet precies wat hier staat: ActiveCell.FormulaR1C1 = "=IF(RC[1]=R[-4]C[1],RC[-3]*0.9,"""")"
R1C1 staat voor relatief? maar wat is RC[1]=R[-4]C[1]? RC[-3] is 3 kolommen naar links en dit vermenigvuldigen met 0.9?

Verder snap ik niet als ik VBA sluit en de cel dus rood is. Dan staat er in cel E =ALS(F8=F4;B8*0,9;""). Ik begrijp dan niet dat er als f8=F4 staat. Want F4 is leeg..

mvg,

Cindy
 
De R1C1 in ActiveCell.FormulaR1C1 staat voor een type notatie. Het betekend dat een cel aangesproken wordt via Rownumber en Collumnnumber in plaats van de standaard A1 notatie. Dit wordt de Reference Style genoemd. Wat leuk leesvoer erover waaruit o.a. blijkt dat het verschil tussen die twee al in 1982 ontstaan is:
https://excelmate.wordpress.com/2013/04/22/excel-r1c1-reference-style-vs-a1/

F8 is leeg en F4 ook. De vergelijking is dus True en daarom wordt het True gedeelte van de IF functie uitgevoerd, anders gebeurt er niets.

M.b.t. "de oplossing" heeft Octafish gelijk en was ik een beetje "out of line". Ik had even niet in de gaten dat het om huiswerk ging.
Omdat je nu in de goede richting bent gezet, bij deze een pagina waar de Excel kleuren en het gebruik in VBA ervan wordt uitgelegd:
http://dmcritchie.mvps.org/excel/colors.htm

Niet schrikken, want het is niet weinig ;)
En het gaat alleen nog maar om de 56 Color palette.
Daarnaast is er nog veel meer mogelijk.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan