Avatar billede hawkpapa Juniormester
07. oktober 2012 - 12:09 Der er 15 kommentarer og
1 løsning

Har et regneark med makroer, hvor der skal laves flere ens ark på.

Hej
Jeg har et regneark med makroer, hvor jeg skal have lavet flere ark så de fungerer lige som ark 1,hvordan gør man det ??
Jeg har prøvet at kopierer det hele, men det virker ikke på andre ark end ark 1, ser ikke ud som om makroerne kommer med over i det nye ark.
På forhånd tak for hjælpen.
Frank
Avatar billede supertekst Ekspert
07. oktober 2012 - 12:59 #1
Prøv at vise makroen her..
Avatar billede hawkpapa Juniormester
07. oktober 2012 - 16:12 #2
Der er 2 makroer, en der sorterer på dato og en der fjerner linien når der sættes et X
Jeg har prøvet at kopierer nye ark ind, men så virker sorteringen på datoer ikke. Altså h klik på ark og flyt eller kopier.

Sub Makro2()
'
' Makro2 Makro
'

'
    Range("H4:H24").Select
    ActiveWorkbook.Worksheets("Ark1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Ark1").Sort.SortFields.Add Key:=Range("H4:H24"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:="01.01.12", _
        DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Ark1").Sort
        .SetRange Range("A4:K24")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub


Private Sub Worksheet_Change(ByVal Target As Range)

      If Not Intersect(Range("K3:K10000"), Target) Is Nothing Then
    For Each c In Range("K3:K10000").Cells
        If c.Value = "x" Then
            c.EntireRow.Hidden = True
        End If
    Next c
      End If

        If Not Intersect(Range("I3:I10000"), Target) Is Nothing Then

    For Each c In Range("K3:K10000").Cells
        If c.Value = "x" Then
            c.EntireRow.Hidden = False
        End If
    Next c

            ActiveWorkbook.Worksheets("Ark1").Sort.SortFields.Clear
            ActiveWorkbook.Worksheets("Ark1").Sort.SortFields.Add Key:=Range("I3:I10000"), _
                SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
            With ActiveWorkbook.Worksheets("Ark1").Sort
                .SetRange Range("A3:K10000")
                .Header = xlGuess
                .MatchCase = False
                .Orientation = xlTopToBottom
                .SortMethod = xlPinYin
                .Apply
            End With

    For Each c In Range("K3:K10000").Cells
        If c.Value = "x" Then
            c.EntireRow.Hidden = True
        End If
    Next c
        End If
End Sub
Avatar billede supertekst Ekspert
07. oktober 2012 - 17:17 #3
Ok - ser på det senere..
Avatar billede hawkpapa Juniormester
07. oktober 2012 - 17:54 #4
Tak for det, det skal laves sådan at de 12 ark kører hver for sig.
Avatar billede supertekst Ekspert
07. oktober 2012 - 18:12 #5
Var det muligt at få en kopi af filen eller model?

@-adresse under min profil.
Avatar billede supertekst Ekspert
07. oktober 2012 - 18:24 #6
OBS: Du er opmærksom på, at der arknavnet (Ark1) indgår i koden flere steder? Er det korrigeret på det næste ark?

Hvor igangsætter du den første markro?
Avatar billede hawkpapa Juniormester
07. oktober 2012 - 18:34 #7
Makroen starter når man har skrevet datoen og hopper videre til næste felt.
Jeg kan sende dig arket hvis det er nemmere for dig at hjælpe på den måde. Jeg er rimelig blank i Excel og makroer. ;-))
Avatar billede supertekst Ekspert
07. oktober 2012 - 23:05 #8
Du er som sagt velkommen til at sende filen.
Avatar billede supertekst Ekspert
07. oktober 2012 - 23:30 #9
Min idé går ud på kun at have VBA-koden et sted.
Avatar billede store-morten Ekspert
08. oktober 2012 - 00:05 #10
Prøv
I et Modul:
Sub Makro2()

    Range("H4:H24").Select
    ActiveWorkbook.Worksheets(ActiveSheet.Name).Sort.SortFields.Clear
    ActiveWorkbook.Worksheets(ActiveSheet.Name).Sort.SortFields.Add Key:=Range("H4:H24"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:="01.01.12", _
        DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets(ActiveSheet.Name).Sort
        .SetRange Range("A4:K24")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

På Arkene
Private Sub Worksheet_Change(ByVal Target As Range)

      If Not Intersect(Range("K3:K10000"), Target) Is Nothing Then
    For Each c In Range("K3:K10000").Cells
        If c.Value = "x" Then
            c.EntireRow.Hidden = True
        End If
    Next c
      End If

        If Not Intersect(Range("I3:I10000"), Target) Is Nothing Then

    For Each c In Range("K3:K10000").Cells
        If c.Value = "x" Then
            c.EntireRow.Hidden = False
        End If
    Next c

            ActiveWorkbook.Worksheets(ActiveSheet.Name).Sort.SortFields.Clear
            ActiveWorkbook.Worksheets(ActiveSheet.Name).Sort.SortFields.Add Key:=Range("I3:I10000"), _
                SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
            With ActiveWorkbook.Worksheets(ActiveSheet.Name).Sort
                .SetRange Range("A3:K10000")
                .Header = xlGuess
                .MatchCase = False
                .Orientation = xlTopToBottom
                .SortMethod = xlPinYin
                .Apply
            End With

    For Each c In Range("K3:K10000").Cells
        If c.Value = "x" Then
            c.EntireRow.Hidden = True
        End If
    Next c
        End If
End Sub
Avatar billede hawkpapa Juniormester
08. oktober 2012 - 06:44 #11
@store morten, hvad mener du med et modul ?
@supertekst, jeg prøver lige store-mortens ide, det er ham der har lavet arket til at begynde med.
Avatar billede hawkpapa Juniormester
08. oktober 2012 - 07:04 #12
Har fundet ud af det med modulet, hvordan skal det lægges ind ?
Skal det hele ind på det første ark eller hvad ?
Avatar billede supertekst Ekspert
08. oktober 2012 - 08:58 #13
Ok - har ændret nøjagtig det samme og lagt et sæt af koden i ThisWorkbook.
Avatar billede store-morten Ekspert
08. oktober 2012 - 09:25 #14
Makro2
I et Modul, og du kan køre denne Makro fra alle Ark.

Den sidste kode, kopiere du, og lægger den på alle Ark.
Fordi: Worksheet_Change
Gør at den køres ved ændring på selve arket. (Ark1, Ark2, Ark3..osv.)

Som supertekst gjorde opmærsom på, er var der anvendt arknavnet (Ark1) i koden flere steder?
("Ark1") er erstattet med ActiveSheet.Name så du skulle kunne kopiere den ind på alle ark.
Avatar billede hawkpapa Juniormester
08. oktober 2012 - 21:30 #15
Tak for hjælpen begge to, vil i smide et svar så i kan få jeres fortjente point.
Tak igen for hjælpen store-morten.
Avatar billede store-morten Ekspert
08. oktober 2012 - 21:50 #16
Velbekomme
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