Avatar billede msoela Nybegynder
09. maj 2012 - 10:35 Der er 13 kommentarer og
1 løsning

Simpel HVIS-makro i Excel

Jeg har et simpelt bogføringsskema, hvor jeg ønsker at gøre indtastningen væsentligt lettere.

På nuværende tidspunkt bruger jeg nedenstående makro:

////////////////
Sub Modposter()
'
' Genvejstast:Ctrl+b
'
    ActiveCell.FormulaR1C1 = "=RC4*-1"
End Sub
////////////////

Makroen ganger pt blot kolonne D (som er min bankkolonne) ud med -1 (omvendt fortegn af hensyn til debet/kredit).

Jeg ønsker nu at makroen tager hensyn til nedenstående kriterier:

- Måling på række 3 i den kolonne man står i med markøren. Hvis cellen indeholder teksten "moms", skal makroen tage tallet i kolonne D i rækken man står i og gange med 0,8*-1 (som er beløbet eksl. moms). Hvis ikke cellen i række 3 indeholder teksten moms, skal makroen blot gange tallet i kolonne D med -1.

- Måling på indholdet i kolonne D, hvis tallet er negativt skal makroen tage indholdet af kolonne D, gange det med 0,2*-1 og postere tallet i kolonne G i samme række. Hvis tallet er positivt skal det samme ske, men posteringen skal ske i kolonne F.


Eksempel:
I celle D25 har jeg en negativ postering på min bank på kr. -1.000.

Står jeg med markøren i celle L25 og trykker ctrl+b, vil makroen søge i L3, her finder den teksten "moms". Makroen måler nu på cellen for beløbet som er hævet på min bank som er D25, i celle L25 posteres D25*0,8*-1 og i G25 posteres D25*0,2*-1.

Spørg endelig hvis ovenstående ikke giver mening!
09. maj 2012 - 10:49 #1
Kan du smide mig et lille eksempelark?
Avatar billede msoela Nybegynder
09. maj 2012 - 11:01 #2
https://www.dropbox.com/s/2w452l8kqhkzh8g/Bogf%C3%B8ring%20eksempel1.xlsm

Prøv dette link :)

Jeg har i eksemplet "bogføt" et par posteringer sådan som makroen burde gøre det.
09. maj 2012 - 11:21 #3
Denne skulle kunne bringe dig lidt videre

Sub Formel()
    Dim c As Range
    Set c = ActiveCell
    Dim momstekst As String
    momstekst = Cells(3, c.Column).Value
    If InStr(1, LCase(momstekst), "moms") > 0 Then ' moms
        c.Formula = "=-" & Cells(c.Row, 4).Address & "*0.8"
    Else
        c.Formula = "=-" & Cells(c.Row, 4).Address
    End If
    If Cells(c.Row, 4).Value < 0 Then
        Cells(c.Row, 7).Formula = "=-0.2*" & Cells(c.Row, 4).Address
    Else
        Cells(c.Row, 6).Formula = "=0.2*" & Cells(c.Row, 4).Address
    End If
   
End Sub
Avatar billede msoela Nybegynder
09. maj 2012 - 11:45 #4
Det er perfekt, virker præcis som ønsket! Tusinde tak!

Smid et svar
09. maj 2012 - 11:46 #5
Dejligt at høre
Avatar billede msoela Nybegynder
09. maj 2012 - 12:16 #6
Jeg var måske lidt for hurtig på aftrækkeren :)

Jeg kan se at såfremt teksten "moms" ikke fremgår af række 3 i den kolonne markøren er placeret, så ganger den rigtigt nok beløbet ud med -1 istedet for -0,8, men samtidig beregner den stadig -0,2 i hhv. kolonne F eller G. Kan vi ligeledes gøre disse celler afhængige af teksten "moms"?
09. maj 2012 - 12:41 #7
Øh - så må du arbejde lidt videre ud fra denne

Sub Formel()
    Dim c As Range
    Set c = ActiveCell
    Dim momstekst As String
    momstekst = Cells(3, c.Column).Value
    If InStr(1, LCase(momstekst), "moms") > 0 Then ' moms
        c.Formula = "=-" & Cells(c.Row, 4).Address & "*0.8"
        If Cells(c.Row, 4).Value < 0 Then
            Cells(c.Row, 7).Formula = "=-0.2*" & Cells(c.Row, 4).Address
        Else
            Cells(c.Row, 6).Formula = "=0.2*" & Cells(c.Row, 4).Address
        End If
    Else
        c.Formula = "=-" & Cells(c.Row, 4).Address
        If Cells(c.Row, 4).Value < 0 Then
            Cells(c.Row, 7).Formula = "=-" & Cells(c.Row, 4).Address
        Else
            Cells(c.Row, 6).Formula = "=" & Cells(c.Row, 4).Address
        End If
    End If
End Sub
Avatar billede msoela Nybegynder
09. maj 2012 - 12:50 #8
Ved brug af ovenstående fører den 500 ind i både G-kolonnen samt den kolonne man står i, hvis "moms" ikke fremgår af række 3. Her skulle den alene føre 500 i den markerede celle og ingen ting i F eller G.
09. maj 2012 - 12:58 #9
Sub Formel()
    Dim c As Range
    Set c = ActiveCell
    Dim momstekst As String
    momstekst = Cells(3, c.Column).Value
    If InStr(1, LCase(momstekst), "moms") > 0 Then ' moms
        c.Formula = "=-" & Cells(c.Row, 4).Address & "*0.8"
        If Cells(c.Row, 4).Value < 0 Then
            Cells(c.Row, 7).Formula = "=-0.2*" & Cells(c.Row, 4).Address
        Else
            Cells(c.Row, 6).Formula = "=0.2*" & Cells(c.Row, 4).Address
        End If
    Else
        c.Formula = "=-" & Cells(c.Row, 4).Address
'        If Cells(c.Row, 4).Value < 0 Then
'            Cells(c.Row, 7).Formula = "=-" & Cells(c.Row, 4).Address
'        Else
'            Cells(c.Row, 6).Formula = "=" & Cells(c.Row, 4).Address
'        End If
    End If
End Sub
Avatar billede msoela Nybegynder
09. maj 2012 - 13:00 #10
Det er som jeg ser det, nedenstående kode, som ud over at måle på om værdien er > eller < end 0, samtidig skal måle på om der i række 3 fremgår ordet "moms".

If Cells(c.Row, 4).Value < 0
Then
Cells(c.Row, 7).Formula = "=-0.2*" & Cells(c.Row, 4).Address
Else
Cells(c.Row, 6).Formula = "=-0.2*" & Cells(c.Row, 4).Address
End If

Jeg ved ikke om der findes en "If...And..."-funktion som tager højde for 2 forskellige kriterier?
09. maj 2012 - 13:01 #11
har du testet #9
09. maj 2012 - 13:04 #12
Kan også se sådan her ud

Sub Formel()
    Dim c As Range
    Set c = ActiveCell
    Dim momstekst As String
    momstekst = Cells(3, c.Column).Value
    If InStr(1, LCase(momstekst), "moms") > 0 Then ' moms
        c.Formula = "=-" & Cells(c.Row, 4).Address & "*0.8"
        If Cells(c.Row, 4).Value < 0 Then
            Cells(c.Row, 7).Formula = "=-0.2*" & Cells(c.Row, 4).Address
        Else
            Cells(c.Row, 6).Formula = "=0.2*" & Cells(c.Row, 4).Address
        End If
    Else
        c.Formula = "=-" & Cells(c.Row, 4).Address
    End If
End Sub
Avatar billede msoela Nybegynder
09. maj 2012 - 13:08 #13
Perfekt! Det var hvad der skulle til.

Endnu engang tusinde tak :)
09. maj 2012 - 13:10 #14
så lidt :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester