Avatar billede cwc Nybegynder
22. november 2007 - 09:31 Der er 6 kommentarer og
1 løsning

Hvordan laves en VBA-kode der gennemser alle ark i et regneark ?

Hvordan skrives en VBA-kode er omdanner alle formler til værdier i alle de ark som regnearket indeholder ?

Antallet af ark er aldrig det samme og de hedder heller aldrig det samme.
Avatar billede supertekst Ekspert
22. november 2007 - 10:11 #1
Rem Koden indlægges i ThisWorkbook
Rem Udføres når filen åbnes
Rem ==============================
Private Sub workbook_activate()
    For Each sh In ActiveWorkbook.Sheets
        formelTilVærdi sh.Name
    Next sh
End Sub
Sub formelTilVærdi(ark)
    ActiveWorkbook.Sheets(ark).Activate
   
    ar = ActiveCell.Cells(xlLastCell).Row
    ak = ActiveCell.Cells(xlLastCell).Column
   
    Set r = Range(Cells(1, 1), Cells(ar, ak))
        For Each cc In r.Cells
            If cc.HasFormula = True Then
                værdi = cc.Value
                cc.Clear
                cc.Value = værdi
            End If
    Next
End Sub
Avatar billede cwc Nybegynder
22. november 2007 - 10:45 #2
Tak - kan må gøre således at koden kun køres når man f.eks. trykker Ctrl+M og således at det ikke kun ligge i et specifikt regneark - men at koden virker på alle regneark som man evt arbejder med ?
Avatar billede supertekst Ekspert
22. november 2007 - 11:15 #3
Det skulle nok være muligt - vender tilbage...
Avatar billede supertekst Ekspert
22. november 2007 - 11:45 #4
Rem Koden indlægges i ThisWorkbook i tomt regneark
rem Indsæt den ønskede genvej via:
rem Funktioner / Makro / Makroer / knappen Indstillinger / StartKonvertering
rem Gem filen som tilføjelsesprogram DitNavn.XLA

rem Åben en fil med formler - Funktioner /Tilføjelsesprogrammer/Marker DitNavn/OK
rem Indtast GenvejsKombinationen

Rem Udføres ved anvendelse af genvej
Rem ================================
Public Sub startKonvertering()
    For Each sh In ActiveWorkbook.Sheets
        formelTilVærdi sh.Name
    Next sh
End Sub
Sub formelTilVærdi(ark)
    ActiveWorkbook.Sheets(ark).Activate
   
    ar = ActiveCell.Cells(xlLastCell).Row
    ak = ActiveCell.Cells(xlLastCell).Column
   
    Set r = Range(Cells(1, 1), Cells(ar, ak))
        For Each cc In r.Cells
            If cc.HasFormula = True Then
                værdi = cc.Value
                cc.Clear
                cc.Value = værdi
            End If
    Next
End Sub
Avatar billede cwc Nybegynder
22. november 2007 - 12:35 #5
Perfekt - Det virker helt optimalt, TAK !!!
Avatar billede supertekst Ekspert
22. november 2007 - 13:00 #6
Selv tak - du får et svar...
Avatar billede mfynbo Juniormester
07. november 2012 - 10:08 #7
Hej Supertekst,
Er der mulighed for, at macroen kan lave alle filer i en given mappe om til values?

Mvh.
Mfynbo
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