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

Waarde automatisch aanpassen

Status
Niet open voor verdere reacties.

Dtox

Gebruiker
Lid geworden
23 apr 2019
Berichten
14
Hallo,

Ik ben bezig om mijn uitgaven van mijn rekening overzichtelijk te maken, maar nu loop ik tegen een probleempje aan (waarschijnlijk is het heel makkelijk, maar ik zie het even niet).
Ik kan een uitdraai maken van mij rekening en dan krijg ik een aantal gegevens zoals die ik anders wil om het beter te verwerken.

De datum wordt bijvoorbeeld geven als "20200901" en wil hier gewoon 01-sept van maken. Nu is dit wel gelukt met de formule =DATUM(LINKS(D3;4);DEEL(D3;5;2);RECHTS(D3;2))
Maar het probleem is dat dit dan in een andere cel komt te staan. Kan ik deze formule ook in dezelfde cel verwerken en dat Excel hem dus automatisch aanpast? Ik wil namelijk zo min mogelijk cellen gebruiken.
Dit zelfde probleem heb ik met het aanpassen van de bedragen. Bij de uitdraai staat alleen "Bij" of "Af" en niet dat het getal dan positief of negatief is. Dit heb ik aangepast met de formule: =ALS(F3="Af";G3*-1;G3)
Maar wederom komt dit in een andere cel te staan.

In de bijlage moeten dus als ik de gegevens in "D3" invul, automatisch aangepast worden zoals de uitkomst in "I3".
Zelfde geldt voor "G3" automatisch naar de gegevens van "J3".
 

Bijlagen

  • uitgaven voorbeeld.xlsx
    8,7 KB · Weergaven: 38
Probeer deze eens achter je werkblad



Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Columns(4)) Is Nothing Then
Application.EnableEvents = False
    Target = Format(Right(Target, 2) & "-" & Mid(Target, 5, 2), "d-mmm")
        Select Case Target.Offset(, 2)
            Case "Af"
                Target.Offset(, 3).Value = Abs(Target.Offset(, 3).Value) * -1
            Case "Bij"
                Target.Offset(, 3).Value = Abs(Target.Offset(, 3).Value)
        End Select
Application.EnableEvents = True
End If
End Sub
 
Laatst bewerkt:
Dank u voor uw reactie!
Ik heb helaas alleen geen kennis van vba. Er is zeker geen 'simpelere' manier?

(Misschien toch maar eens verdiepen in vba)
 
Met Alt F11 open je VBA.
Klik op je blad waar de gegevens staan en plak die code daar in.

In dit geval is VBA de enige oplossing
 
Laatst bewerkt:
Volgens mij kan dat alleen met een hulpkolom. In dit geval dus twee hulpkolommen waarin je jouw formule zet naast kolom D en G en dan verberg je de andere twee.
 
@Senso,
Kan met hulpkolommen maar:

Maar het probleem is dat dit dan in een andere cel komt te staan. Kan ik deze formule ook in dezelfde cel verwerken en dat Excel hem dus automatisch aanpast? Ik wil namelijk zo min mogelijk cellen gebruiken.
 
Kan ik deze formule ook in dezelfde cel verwerken en dat Excel hem dus automatisch aanpast?
Volgens mij is het antwoord dan > Nee.

Ik wil namelijk zo min mogelijk cellen gebruiken.
Je kunt iets wel willen maar niet alles is mogelijk, verbergen van kolommen wel.

Post 4 is dan de oplossing en plak de code daar en opslaan als Excel-werkmap met macro's (.xlsm) als ik het goed heb.
 
Deze werkt wat beter. Onafhankelijk de datum of Bij/Afschrijvingen aanpassen triggert in beide gevallen de macro

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Not Intersect(Target, Columns(6)) Is Nothing Then
        Select Case Target
            Case "Af"
                Target.Offset(, 1).Value = Abs(Target.Offset(, 1).Value) * -1
            Case "Bij"
                Target.Offset(, 1).Value = Abs(Target.Offset(, 1).Value)
        End Select
      Else
    If Not Intersect(Target, Columns(4)) Is Nothing Then
            Target.Value = Format(Right(Target, 2) & "-" & Mid(Target, 5, 1), "d-mmm")
    End If
End If
Application.EnableEvents = True
End Sub
 
Laatst bewerkt:
Een keer het gebruik van 'intersect' met union.
Maak gebruik LCase bij handmatig invoer of er moet al een validatie zijn in kolom F.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Not Intersect(Target, Union(Columns(4), Columns(6))) Is Nothing Then
If Target.Column = 6 Then
        Select Case LCase(Target)
            Case "af"
                Target.Offset(, 1).Value = Abs(Target.Offset(, 1).Value) * -1
            Case "ij"
                Target.Offset(, 1).Value = Abs(Target.Offset(, 1).Value)
        End Select
      Else
            Target.Value = Format(Right(Target, 2) & "-" & Mid(Target, 5, 1), "d-mmm")
    End If
End If
Application.EnableEvents = True
End Sub

Of:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Not Intersect(Target, Union(Columns(4), Columns(6))) Is Nothing Then
If Target.Column = 6 Then
                Target.Offset(, 1).Value = Abs(Target.Offset(, 1).Value) * (IIf(LCase(Target) = "af", -1, 1))
            Else
               Target.Value = Format(Right(Target, 2) & "-" & Mid(Target, 5, 1), "d-mmm")
    End If
End If
Application.EnableEvents = True
End Sub
 
@HSV, naar die Union methode was ik al op zoek, niet gevonden helaas:thumb:
 
Bedankt allemaal voor de reacties! Het is inmiddels gelukt om de code in vba te zetten en hij werkt ook! Daarvoor dank!
Alleen werkt hij nog niet helemaal naar mijn zin.
Het is de bedoeling dat ik de gegevens kopieer van de door mijn bank uitgedraaide gegevens naar mijn eigen bestand. Als ik nu, met deze code, 1 cel kopieer en plak werkt hij perfect en past hij de datum en getallen aan, maar als ik meerdere cellen selecteer, kopieer en plak dan krijg ik de foutmelding:
Fout 13 tijdens uitvoering: Typen komen niet over een met elkaar.
Is hier nog iets aan te doen?


Maak gebruik LCase bij handmatig invoer of er moet al een validatie zijn in kolom F.

De bedoeling is dat er (bijna) nooit handmatig wordt ingevoerd, het is eigenlijk knip en plak werk, dus er zal altijd in kolom F "Bij" of "Af" staan.


Edit:
En als ik extra kolommen wil toevoegen waarin ik deze gegevens ook automatisch wil laten veranderen hoe doe ik dat? Dus bv in kolom "I" weer de datum en in "K" en "L" weer Af/Bij en het bedrag?
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan