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

Celwaarde negatief weergeven

Status
Niet open voor verdere reacties.

Paul-RT

Giga Honourable Senior Member †
Lid geworden
6 dec 2003
Berichten
10.886
Ik heb een factuur document.
Een bapaalde cel is normaal gesproken nul (nul wordt niet weergegeven).
Opmaak van de cel is Financieel, 2 decimalen met een € teken.
Zodra ik iets in de cel invul, komt er in de cel ervoor te staan: "Aanbetaling voltooid: "

Kan het, als ik in de cel een getal intyp, dat deze na een enter negatief is?
Als het totaal wordt geteld, wordt deze waarde meteen afgetrokken.
En een negatief bedrag staat veel overzichtelijker op een factuur. En vriendelijker.;):D
 
Sja, dat is een oplossing, maar eigenlijk wil ik gewoon 10 (enter) kunnen typen, waarna de waarde automatisch wordt omgezet in -10 (negatief)

Ik heb ook een kortings regel.
Als ik daar 5 (enter) geef, dan staat er in die cel 5%. De cel ernaast rekent uit, hoeveel euro's dat zijn, en geeft die waarde negatief weer.
In het totaal gaan die er dus automatisch af.
Iets wat korting opleverd of wat van het totaal af gaat, staat op een factuur veel beter weergegeven als een negatief getal.
Dat zit "tussen de oren".
Net zoals € 29,98 beter staat dan € 30,-
 
Laatst bewerkt:
Beste Paul,

Je kunt het volgende doen:
Selecteer de cel, klik op Ctrl+1 (Opmaak > Celeigenschappen) en zet de opmaak op Getal. Klik dan op Aangepast en zet een - teken voor de 0,00.
Nu wordt de invoer met een min weergegeven. In de optelling onder de streep zul je zelf nog ervoor moeten zorgen dat het saldo klopt, want de invoer zelf blijft positief. Ik verander hiermee alleen de manier waarop het getal getoond wordt.
Als je werkelijk wilt dat de positieve invoer negatief wordt na op enter te hebben gedrukt, moet je VBA gaan gebruiken.

Richard

Richard
 
Ik snap echt niet waarom je VBA zou gaan gebruiken voor ocharme een minteken!

Als je nu duizenden keren een minteken moet zetten, akkoord. Maar dat is ook niet het geval.

Je zou nog in een hulpkolom de 10 kunnen zetten, en dan met

=A1*-1

voor het negatieve. A1 is hier het getal 10.

Wigi
 
Nog mooier! Zet de celopmaak op:
Code:
0,00_ ;0,00
Zo worden positieve èn negatieve getallen positief weergegeven, terwijl de invoer wel degelijk negatief is! :thumb: Is 'ie mooi of wel.

Richard
 
@ Wigi, ik heb niet echt ruimte voor een extra / verborgen kolom.
Ik wil ook niet bij het invullen van een factuur de mogelijkheid hebben deze optie te vergeten, en dus een foutieve factuur te maken.

@ Richard, het ingevoerde getal wordt positief ingevoerd als € 15,25 en moet worden weergegeven als € -15,25 en ook als negatief getal worden berekend. (niet perse noodzakelijk, kan ook in een formule)
Ik ga dus toch kiezen voor een VBA code. Er staan er al meer in dat document.
Alleen heb ik geen verstand van vba.... Niet hoe ik de code's ontwerp, zeg maar.

Ik heb wel al een code die kijkt of er een cel leeg is, zo ja, dan is de factuur nog leeg.
Als ie leeg is, plaatst ie de datum.
Eenmaal opgeslagen en heropend, is de cel niet leeg, en wordt er dus geen datum meer geplaatst.
Zoiets zou dus ook moeten met die berekening denk ik?
Alleen, bij foute invoer, kan ik em dan ook nog wijzigen?

En ja, ik hoop dat dit meermalen per dag gebruikt gaat worden (dan gaan de zeken goed :p)
 
Paul-RT, Via VBA? Dan zo...
Code:
Private Sub Worksheet_Change(ByVal Target As Range)

    Application.EnableEvents = False

    If Intersect(Target, Range("[COLOR="Blue"]H4:H10[/COLOR]")) And IsNumeric(Target) Then Target = Target * -1

    Application.EnableEvents = True

End Sub
Zet dit in de module van de betreffende worksheet! En zelf nog ff de range aanpassen waar jij je getallen intikt (zie blauw in code).

Groet, Leo
 
@ Ginger:

Thanx, maar het lijkt nog niet te werken.
De cel heeft bij het openen van een lege factuur de waarde 0.
Als ik iets invoer, en enter, blijft de waarde positief en wordt positief opgeteld.

In "This workbook" heb ik nu de volgende 2 code's staan.
De eerste code voor de datum werkt prima.

Code:
Private Sub Workbook_Open()
If Sheets("Factuur").Range("E19") = "" Then
    Sheets("Factuur").Range("E19") = Date
End If
End Sub


Private Sub Worksheet_Change(ByVal Target As Range)

    Application.EnableEvents = False

    If Intersect(Target, Range("R54")) And IsNumeric(Target) Then Target = Target * -1

    Application.EnableEvents = True

End Sub
 
Paul-RT,
Thanx, maar het lijkt nog niet te werken
....dat klopt als ik zie waar je de code geplaatst hebt... Namelijk in de ThisWorkbook module! :confused: Verplaats 'm naar de module zoals ik in mijn eerdere post had aangegeven...
Zet dit in de module van de betreffende worksheet!
...en dan doet 'ie 't ECHT wel! :thumb:

Ik zie ook dat je slechts in 1 cel een verandering (cel R54) van positief naar negatief wilt hebben??? Kan je dat dan niet gewoon handmatig doen???

Groet, Leo
 
Laatst bewerkt:
Nee, niet handmatig, want dan kan dat bij elke nieuwe factuur worden vergeten.
Resultaat is dan een foute factuur, en dat wil ik niet.
MAar als die code eenmaal draait, heb ik er geen omkijken meer naar. Blijft voor jaaaaaaaaaren werken.

Ik ga nogmaals kijken waar die code geplaatst moet worden.
Ik dacht juist dat de code voor datum enzo, precies goed staan.
Alleen geldig voor dit document, toch?
 
Inderdaad de code ingevoerd in het juiste tabblad.
Als ik iets invul in die cel, dan werkt de code.
Maar, als ik een andere cel invul, zoals het aantal manuren, dan krijg ik een foutmelding van cel R54.
Zie screenshots # 1 en 2.
Na afsluiten van de fout-opsporing werkt de code niet meer.

En dan heb ik nog een End if toegevoegd, werd ook om geklaagd :) Screenshot # 3.

In screenshot "Vba-fout 4" heb ik eerst de aanbetaling ingevuld ("Aanbetaling voldaan" verschijnt automatisch na invullen R54)
Daarna heb ik 5 manuren ingevuld.
Ik krijg dezelfde foutmelding. Er werd wel correct berekend. Dsu er wordt negatief weergegeven, en negatief berekend. :thumb:
 
Laatst bewerkt:
Paul-RT, Mijn welgemeende excuses...:o Het was duidelijk laat toen ik het codeblokje schreef...
De error komt van het 'intersect'. Als je namelijk buiten de intersect range zit, geeft intersect een 'nothing' als waarde. DAT moet natuurlijk wél afgevangen worden. Hierbij de gecorrigeerde code...
Code:
Private Sub Worksheet_Change(ByVal Target As Range)

    Application.EnableEvents = False
    
    If [COLOR="Blue"]Not[/COLOR] Intersect(Target, Range("R54")) [COLOR="blue"]Is Nothing[/COLOR] And IsNumeric(Target) Then Target = Target * -1
    [COLOR="Blue"]If Target = 0 Then Target = ""[/COLOR]
    Application.EnableEvents = True

End Sub

Gooi dus ff al je aanpassingen weg en plaats deze code in de WORKSHEET module van de betreffende sheet. Dan zou alles foutloos moeten draaien.

Groet, Leo

EDIT: Ik heb nog een regel toegevoegd aan de code (zie blauwe regel). Anders kon je de celinhoud niet deleten en kreeg je er altijd een nul. Nadeel nu is misschien wel dat je iedere cel in je worksheet leegmaakt waar je een nul intikt..
 
Laatst bewerkt:
Paul,

kijkend naar je VBA fout 2, merk ik een rare constructie. Je hebt workbook events en worksheet events in hetzelfde code venster staan. Workbook events horen echter in ThisWorkbook, en worksheet events achter de desbetreffende sheets. Niet samen, en je dient die workbook events niet in alle worksheets te herhalen.
 
...en nu ik wat beter naar je screenshots zit te kijken, vraag ik me af waarom je dit wilt oplossen met VBA??? (zoals andere helpers zich al eerder afvroegen).
Je kan het inderdaad beter (zoals eerder voorgesteld) afvangen met het cel-format en een aanpassing in je formule van cel R55. Ik bedoel...
Code:
=R52+R53-R54
...geeft óók het goede resultaat!!!

Het gaat perslot van rekening maar over één cel die een negatieve waarde moet aannemen. Dan is het gebruik van VBA behoorlijk 'overdone'! :rolleyes:

Groet, Leo
 
geeft óók het goede resultaat!!!
Nee, want dan staat de getypte waarde als positief getal.
Een korting die je krijgt in een factuur, staat erg vriendelijk als negatief getal weergegeven.
Overdone? Ja, en? Als het perfect werkt, ben ik daar blij mee.
Wat is er tegen het gebruik van vba?
 
Ginger, bedankt.Nu werkt het prima, na jou code toch nog even aan te passen en de foutmelding eruit te halen ;)
Ik kreeg namelijk weer de end zonder if melding.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)

    Application.EnableEvents = False
    
    If Not Intersect(Target, Range("R54")) Is Nothing And IsNumeric(Target) Then Target = Target * -1
    Application.EnableEvents = True

End Sub

Die laatste regel If Target = 0 Then Target = "" blijkt niet nodig. Wekt prima zonder.


@Finch, ok, ik heb de foutive verwijderd.


Heren, bedankt, het draait nu als een zonnetje.
Positief getal typpen, geeft negatief getal op papier, en keurige berekening. :thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan