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
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")
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
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