Avatar billede tvc Seniormester
23. oktober 2016 - 19:56 Der er 2 kommentarer og
1 løsning

VBA - Set konto der ikke findes i indlæst balance

Hej

Jeg har skrevet nedenstående VBA, men den virker ikke efter hensigten. Er der en, der kan se hvad der er galt?

'Undersøg om Mappingkontooversigt indeholder konti, der ikke eksisterer i den indlæste balance
           
    For m = 3 To Trk
       
'Undersøger om konto i Mapping findes i indlæst balance (slettes hvis den ikke gør)
        For mk = 3 To Trk
            If Sheets("Mapping").Cells(m, "A").Value <> Sheets("Indlæsning balance").Cells(mk, "A").Value Then
                Mkonto = False
            End If
        MsgBox Mkonto
        Next mk

        If Mkonto = False Then
            Sheets("Mapping").Rows(m).Delete
        End If
   
    Next m
Avatar billede kabbak Professor
23. oktober 2016 - 22:48 #1
Du skriver
For m = 3 To Trk

hvor får du TrK fra
If Sheets("Mapping").Cells(m, "A").Value <> Sheets("Indlæsning balance").Cells(mk, "A").Value Then

hvor får du  M fra , skulle det ikke være mk
Cells(m, "A")
Avatar billede tvc Seniormester
24. oktober 2016 - 00:49 #2
Hele min sub ser således ud - inkl. alle ikke aktive linjer:

Sub MappingKontoplan()

Application.ScreenUpdating = False


'Undersøg kontoplan i Mapping for nye konti ved indlæsning af balance

    Irk = Sheets("Indlæsning balance").Cells(65000, "A").End(xlUp).Row
    Mrk = Sheets("Mapping").Cells(65000, "A").End(xlUp).Row
   
    If Irk < Mrk Then
        Trk = Mrk
        Else
        Trk = Irk
    End If

    'Til brug for test (deaktiveres i drift)
    MsgBox "Irk = " & Irk & " Mrk = " & Mrk & " Trk = " & Trk

'Undersøg om Mapping indeholder kontoplan - hvis ingen kontoplan indlæst indsættes fra Indlæsning balance
    If Mrk = 2 Then
        For u = 3 To Trk
'          Indsæt nyt kontonummer og kontotekst fra Indlæsning balance til Mapping
            Ark05.Range("A" & u).Value = Sheets("Indlæsning balance").Cells(u, "A")
            Ark05.Range("B" & u).Value = Sheets("Indlæsning balance").Cells(u, "B")
         
'          Indsæt formler i Mappingark
            Ark05.Range("C" & u).FormulaR1C1 = "=SUMIF('Indlæsning balance'!C[-2],Mapping!RC[-2],'Indlæsning balance'!C)"
            Ark05.Range("D" & u).FormulaR1C1 = "=SUMIF(Efterpostering!R7C4:R500C4,Mapping!RC[-3],Efterpostering!R7C6:R500C6)-SUMIF(Efterpostering!R7C4:R500C4,Mapping!RC[-3],Efterpostering!R7C7:R500C7)"
            Ark05.Range("E" & u).FormulaR1C1 = "=SUMIF(Reklassifikation!R7C4:R500C4,Mapping!RC[-4],Reklassifikation!R7C6:R500C6)-SUMIF(Reklassifikation!R7C4:R500C4,Mapping!RC[-4],Reklassifikation!R7C7:R500C7)"
            Ark05.Range("F" & u).FormulaR1C1 = "=RC[-3]+RC[-2]+RC[-1]"
            Ark05.Range("G" & u).FormulaR1C1 = "=SUMIF('Indlæsning balance'!C[-6],Mapping!RC[-6],'Indlæsning balance'!C[-3])"
            Ark05.Range("J" & u).FormulaR1C1 = "=SUMIF('Indlæsning budget'!C[-9],Mapping!RC[-9],'Indlæsning budget'!C[-7])"
            Ark05.Range("K" & u).FormulaR1C1 = "=SUMIF('Indlæsning budget'!C[-10],Mapping!RC[-10],'Indlæsning budget'!C[-7])"
        Next
        MsgBox "Kontoplan indsat i tomt Mapping"
        Exit Sub
    End If


'Undersøg om Mappingkontooversigt indeholder konti, der ikke eksisterer i den indlæste balance
           
    For m = 3 To Trk
       
'Undersøger om konto i Mapping findes i indlæst balance (slettes hvis den ikke gør)
        For mk = 3 To Trk
            If Sheets("Mapping").Cells(m, "A").Value = Sheets("Indlæsning balance").Cells(mk, "A").Value Then
                Mkonto = True
            End If
        Next mk

        If Mkonto <> True Then
            Sheets("Mapping").Rows(m).Delete
        End If
        MsgBox "m=" & m & " | mk=" & mk & " | Mkonto=" & Mkonto & " | " & Sheets("Mapping").Cells(m, "A").Value & " | " & Sheets("Indlæsning balance").Cells(mk, "A").Value
    Next m
   









'    For u = 3 To Trk
'        If Sheets("Indlæsning balance").Cells(u, "A").Value <> Sheets("Mapping").Cells(u, "A").Value Then
'''

           
            'Indsæt række til ny post
'          Ark05.Rows(u).EntireRow.Insert
           
            'Indsæt nyt kontonummer og kontotekst fra Indlæsning balance til Mapping
'          Ark05.Range("A" & u).Value = Sheets("Indlæsning balance").Cells(u, "A")
  '          Ark05.Range("B" & u).Value = Sheets("Indlæsning balance").Cells(u, "B")
         
            'Indsæt formler i Mappingark
'          Ark05.Range("C" & u).FormulaR1C1 = "=SUMIF('Indlæsning balance'!C[-2],Mapping!RC[-2],'Indlæsning balance'!C)"
'          Ark05.Range("D" & u).FormulaR1C1 = "=SUMIF(Efterpostering!R7C4:R500C4,Mapping!RC[-3],Efterpostering!R7C6:R500C6)-SUMIF(Efterpostering!R7C4:R500C4,Mapping!RC[-3],Efterpostering!R7C7:R500C7)"
'          Ark05.Range("E" & u).FormulaR1C1 = "=SUMIF(Reklassifikation!R7C4:R500C4,Mapping!RC[-4],Reklassifikation!R7C6:R500C6)-SUMIF(Reklassifikation!R7C4:R500C4,Mapping!RC[-4],Reklassifikation!R7C7:R500C7)"
'          Ark05.Range("F" & u).FormulaR1C1 = "=RC[-3]+RC[-2]+RC[-1]"
'          Ark05.Range("G" & u).FormulaR1C1 = "=SUMIF('Indlæsning balance'!C[-6],Mapping!RC[-6],'Indlæsning balance'!C[-3])"
'          Ark05.Range("J" & u).FormulaR1C1 = "=SUMIF('Indlæsning budget'!C[-9],Mapping!RC[-9],'Indlæsning budget'!C[-7])"
'          Ark05.Range("K" & u).FormulaR1C1 = "=SUMIF('Indlæsning budget'!C[-10],Mapping!RC[-10],'Indlæsning budget'!C[-7])"
           
         
'          u = 2
'      End If
'  Next


 
Application.ScreenUpdating = True
 
MsgBox "Kontoplan er hentet/ajourført."
 
End Sub
Avatar billede kabbak Professor
24. oktober 2016 - 16:45 #3
Husk at dimme dine variabler

Sub MappingKontoplan()
    Dim Irk As Long, Mrk As Long, M As Long, MK As Long, Mkonto As Boolean


har rettet lidt i næste del, mest for at gøre den hurtigere, jeg kunne ikke lige se nogen fejl.


  'Undersøg om Mappingkontooversigt indeholder konti, der ikke eksisterer i den indlæste balance
    Mkonto = False
    For M = 3 To Trk

        'Undersøger om konto i Mapping findes i indlæst balance (slettes hvis den ikke gør)
        For MK = 3 To Trk
            If Sheets("Mapping").Cells(M, "A").Value = Sheets("Indlæsning balance").Cells(MK, "A").Value Then
                Mkonto = True
                Exit For    ' hvis den er fundet, behøver den ikke at kikke mere, stopper indre løkke
            End If
        Next MK

        If Not Mkonto Then
            Sheets("Mapping").Rows(M).Delete
            Exit For    ' stopper ydre løkke
        End If
        '  MsgBox "m=" & M & " | mk=" & MK & " | Mkonto=" & Mkonto & " | " & Sheets("Mapping").Cells(M, "A").Value & " | " & Sheets("Indlæsning balance").Cells(MK, "A").Value
    Next M
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

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