Avatar billede h_s Forsker
28. juni 2011 - 15:44 Der er 4 kommentarer og
1 løsning

Fejl i makro

Jeg har problemer med en makro, der er lavet til Excel 2003, men afvikles i Excel 2007:

Function UgeNr(MyDate)
UgeNr = DatePart("ww", MyDate, vbMonday, vbFirstFourDays)
End Function

Jeg får følgende fejl: Type mismatch (Error 13)

Hvad er der galt?
Avatar billede supertekst Ekspert
28. juni 2011 - 15:56 #1
Har prøvet din funktion - ingen fejl - også 2007

Hvor optræder fejlen?
Vis evt variabler, der anvender funktionen.
Avatar billede h_s Forsker
28. juni 2011 - 16:10 #2
Er faktisk ikke helt med på hvad den gør :-)
Avatar billede claes57 Ekspert
28. juni 2011 - 16:13 #3
hvis MyDate ikke opfattes som en dato - så få den til det:

Function UgeNr(MyDate)
If IsDate(MyDate) Then
  UgeNr = DatePart("ww", MyDate, vbMonday, vbFirstFourDays)
Else
  UgeNr = DatePart("ww", CDate(MyDate), vbMonday, vbFirstFourDays)
End If
End Function
Avatar billede h_s Forsker
28. juni 2011 - 19:25 #4
Jeg har prøvet at ændre programmet uden held.

Her er hele makroen:

Sub Diagram()
'Importer udtræk som det er!
Application.ScreenUpdating = False

'Åbner FilDialogÅben til at vælge fil
Sheets("Kontobevægelser").Activate
With Application.FileDialog(msoFileDialogOpen)
        .AllowMultiSelect = False

If .Show = -1 Then    'der er trykket OK
            navn = .SelectedItems(1)
           
        'Opsætter filen til import
        With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & navn, Destination:=Range("A1"))
        .Name = "Bevaegelser"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 1252
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = True
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(4, 4, 2, 1, 1, 2)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With

           
'Indsætter overskrift på kolonne G og H
        Range("G1") = "Uge.nr."
        Range("H1") = "Måned"
'---MÅSKE ER PROBLEMET HER - START -------     
'Angiver ugenr. og månednr. ud for alle posteringer
        r = 2
        lastrow = Range("A65536").End(xlUp).Row

        For r = 2 To lastrow
        Cells(r, 7).NumberFormat = "@"
        Cells(r, 8).NumberFormat = "@"
        'Indsætter udover ugenr. også "-åå"
        Cells(r, 7).Value = UgeNr(Cells(r, 1).Value) & "-" & Right(Cells(r, 1), 2)
        Cells(r, 8).Value = Format((Cells(r, 1).Value), "mmm-yy")
        Next r
'---MÅSKE ER PROBLEMET HER - SLUT -------
'Sorter posteringer i stigende retning
        Cells.Select
            Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes, _
                OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
                DataOption1:=xlSortNormal
       
'Kopier alle saldi ultimo dagen
        Set tilarkDag = Sheets("Dag - Data")
        Set fraarkDag = Sheets("Kontobevægelser")
        lastrow = fraarkDag.Range("A65536").End(xlUp).Row

        rt = 2
        For r = 2 To lastrow
        If Not fraarkDag.Cells(r, 1).Value = fraarkDag.Cells(r + 1, 1).Value Then
        tilarkDag.Cells(rt, 1) = fraarkDag.Cells(r, 1)
        tilarkDag.Cells(rt, 1).NumberFormat = fraarkDag.Cells(r, 1).NumberFormat
        tilarkDag.Cells(rt, 2) = fraarkDag.Cells(r, 5)
        rt = rt + 1
        End If
        Next r
        Sheets("Dag - data").Range("A1") = "Dato"
        Sheets("Dag - data").Range("B1") = "Saldo"
       
'Kopier alle saldi ultimo ugen
        Set tilarkUge = Sheets("Uge - Data")
        Set fraarkUge = Sheets("Kontobevægelser")
        lastrow = fraarkUge.Range("A65536").End(xlUp).Row

        rt = 2
        For r = 2 To lastrow
        If Not fraarkUge.Cells(r, 7).Value = fraarkUge.Cells(r + 1, 7).Value Then
        tilarkUge.Cells(rt, 1) = fraarkUge.Cells(r, 7)
        tilarkUge.Cells(rt, 1).NumberFormat = fraarkUge.Cells(r, 7).NumberFormat
        tilarkUge.Cells(rt, 2) = fraarkUge.Cells(r, 5)
        rt = rt + 1
        End If
        Next r
        Sheets("Uge - data").Range("A1") = "Uge"
        Sheets("Uge - data").Range("B1") = "Saldo"

'Kopier alle saldi ultimo måneden
        Set tilarkMåned = Sheets("Måned - Data")
        Set fraarkMåned = Sheets("Kontobevægelser")
        lastrow = fraarkMåned.Range("A65536").End(xlUp).Row

        rt = 2
        For r = 2 To lastrow
        If Not fraarkMåned.Cells(r, 8).Value = fraarkMåned.Cells(r + 1, 8).Value Then
        tilarkMåned.Cells(rt, 1) = fraarkMåned.Cells(r, 8)
        tilarkMåned.Cells(rt, 1).NumberFormat = fraarkMåned.Cells(r, 8).NumberFormat
        tilarkMåned.Cells(rt, 2) = fraarkMåned.Cells(r, 5)
        rt = rt + 1
        End If
        Next r
        Sheets("Måned - data").Range("A1") = "Måned"
        Sheets("Måned - data").Range("B1") = "Saldo"
End If
        End With
   
Range("A1").Select
Sheets("forside").Select
Application.ScreenUpdating = True

Call IndlæsningAfsluttet
End Sub

'Bruges til at vælge ugenummer i Diagram-makro

Function UgeNr(MyDate) UgeNr = DatePart("ww", MyDate, vbMonday, vbFirstFourDays)
End Function

Sub IndlæsningAfsluttet()
    sLangTekst = "Kontobevægelser er indlæst!" & vbNewLine
    IngenOpdatering = MsgBox(sLangTekst, vbOKOnly + vbInformation, "Data indlæst")
     
End Sub
Avatar billede h_s Forsker
13. juli 2011 - 13:30 #5
Spørgsmål lukkes!
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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