Avatar billede TheresaD Juniormester
02. september 2016 - 10:15 Der er 4 kommentarer og
1 løsning

Makro formel virker ikke i nyt regneark.

Hej jeg har en makro kode som virker perfekt! men når jeg overføre denne gode til et andet regneark, så virker den ikke mere, kan ikke finde ud af hvad der går galt.

Her er koden, håber der er nogen som kan hjælpe :)

Dim produkt As Object

Const dataSamlerSti = "F:\Regnskab\Statusark\"              '<---- tilpasses
Const dataSamlerFilNavn = "Statusliste regnskabsgruppen 2016.xlsm"                                        '<---- - " -
Const dataSamlerArkNavn = "Budgetopfølgning"                                              '<---- - " -
Dim dataSamler As Object
Private Sub CommandButton1_Click()
Dim produktId, rækDs As Integer
    Set produkt = ActiveWorkbook
   
    produktId = Range("B5")
   
    Set dataSamler = CreateObject("Excel.Application")
    dataSamler.Workbooks.Open dataSamlerSti & dataSamlerFilNavn
   
    rækDs = findRækkeDataSamler(produktId)
    If rækDs > 0 Then
        kopierData rækDs
        dataSamler.ActiveWorkbook.Save
    Else
        MsgBox "ProduktId ikke fundet"
    End If
       
    dataSamler.Quit
    Set dataSamler = Nothing
End Sub
Private Function findRækkeDataSamler(produktId)
Dim antalRækker As Integer
    antalRækker = dataSamler.ActiveCell.SpecialCells(xlLastCell).Row
   
    With dataSamler.Sheets(dataSamlerArkNavn)
        dataSamler.Sheets(dataSamlerArkNavn).Activate
       
        For Each CC In .Range("B5:B" & antalRækker)
            If produktId = CC Then
                findRækkeDataSamler = CC.Row
                Exit Function
            End If
        Next CC
    End With
    findRækkeDataSamler = 0
End Function
Private Sub kopierData(rækDs)
    With dataSamler.Sheets(dataSamlerArkNavn)
        .Range("J" & rækDs) = produkt.Sheets(1).Range("Udsendt_budgopf2")
        .Range("K" & rækDs) = produkt.Sheets(1).Range("resultat_budgopf2")
        .Range("L" & rækDs) = produkt.Sheets(1).Range("SvarDato_budgopf2")
        .Range("M" & rækDs) = produkt.Sheets(1).Range("rykkerbrev1_budgopf2")
        .Range("N" & rækDs) = produkt.Sheets(1).Range("rykkerbrev2_budgopf2")
        .Range("O" & rækDs) = produkt.Sheets(1).Range("kodefelt_budgopf2")
        .Range("AB" & rækDs) = produkt.Sheets(1).Range("makker_budgopf2")
        .Range("AD" & rækDs) = produkt.Sheets(1).Range("D70")
       
        MsgBox "Data er overført"
       
    End With
End Sub

Mvh
TheresaD
Avatar billede lordnelson Seniormester
02. september 2016 - 13:56 #1
får du da' ingen fejl ?
Avatar billede TheresaD Juniormester
05. september 2016 - 09:55 #2
Jo den melder fejl i linie

.Range("J" & rækDs) = produkt.Sheets(1).Range("Udsendt_budgopf2")
Avatar billede lordnelson Seniormester
05. september 2016 - 16:41 #3
Når du siger
når jeg overføre denne gode til et andet regneark, 
er det så på samme pc ?
Avatar billede TheresaD Juniormester
06. september 2016 - 08:14 #4
Det er på den samme computer. Jeg har et andet ark hvor den er den samme kode 100% ens og den virker perfekt. Kun når jeg forsøger at bruge den i et nyt regneark at den ikke virke
Avatar billede Max_P_Larsen Seniormester
07. september 2016 - 12:20 #5
Range("Udsendt_budgopf2") refererer til et navngivet område i Excel-filen. Hvis filen, du kopierer til, ikke har dette samme navngivne område oprettet, vil makroen ikke kunne identificere området - og dermed fejle.

Der skal tilsvarende være en række andre navngivne områder, bl.a. Range("resultat_budgopf2") og Range("SvarDato_budgopf2") m.fl., som også fremgår af VBA-koden.

I Excel 2013 kan man se de oprettede navngivne områder via menufanen "Formler", gruppen "Definerede navne", knappen "Navnestyring".

Så hvis du kun har kopieret koden fra én Excel-fil til en anden, vil makroen ikke fungere, før de navngivne områder er oprettet i den nye fil.
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