Avatar billede sorth Novice
21. september 2004 - 10:45 Der er 2 kommentarer og
1 løsning

ændring af makro

Jeg har denne makro som jeg har fået af kabbak. Jeg vil gerne have ændret lidt i den, så når man køre denne makro tager et bestemt ark"kontiark" og bruger hver gang den laver et nyt Ark"fane" + at arkene bliver sorteret hver gang makroen bliver kørt. Jeg har denne Formel i A1 kan det køre sammen =MIDT(CELLE("Filnavn";A1);FIND("]";CELLE("filnavn";A1))+1;999)+ et LOPSLAG i B1 Der tager tallet fra A1 problemet er at det først kan bruges
efter man har tastet F2 og derefter F9 er der nogen der kan hjælpe.


Sub MakeSheets()
Dim rg As Range
Dim sh As Worksheet
Dim temp, bfound As Boolean
Application.ScreenUpdating = False
Set rg = Sheets("ark1").Range("A1:A300")
'indsæt
For Each c In rg
    If Len(c) > 0 Then
        If Not SheetExist(c.Text) Then
            Set sh = Worksheets.Add(after:=Sheets(Worksheets.Count))
            sh.Name = c.Value
        End If
    End If
Next
'slet
temp = rg
'spring de første 3 ark over
For x = 4 To ActiveWorkbook.Worksheets.Count
    bfound = False
    For y = 1 To UBound(temp, 1)
        If temp(y, 1) <> "" Then
            If Worksheets(x).Name = CStr(temp(y, 1)) Then
                bfound = True
                Exit For
            End If
        End If
    Next
   
    If bfound = False Then
        Application.DisplayAlerts = False
        Worksheets(x).Delete
        Application.DisplayAlerts = True
    End If
Next
Sheets("Ark1").Select
Application.ScreenUpdating = True
End Sub
Avatar billede bak Forsker
21. september 2004 - 18:05 #1
uden sortering.
mht filnavn : sørg for at celle a1 ikke er tekst, men standard

Sub MakeSheets()
Dim rg As Range
Dim sh As Worksheet
Dim temp, bfound As Boolean
Application.ScreenUpdating = False
Set rg = Sheets("Ark1").Range("A1:A300")
'indsæt
For Each c In rg
    If Len(c) > 0 Then
        If Not SheetExist(c.Text) Then
            Worksheets("kontiark").Copy after:=Sheets(Worksheets.Count)
            Set sh = ActiveSheet
            sh.Name = c.Value
        End If
    End If
Next
'slet
temp = rg
'spring de første 3 ark over
On Error GoTo GetOut
For x = 4 To ActiveWorkbook.Worksheets.Count
    bfound = False
    For y = 1 To UBound(temp, 1)
        If temp(y, 1) <> "" Then
            If Worksheets(x).Name = CStr(temp(y, 1)) Then
                bfound = True
                Exit For
            End If
        End If
    Next
   
    If bfound = False Then
        Application.DisplayAlerts = False
        Worksheets(x).Delete
        Application.DisplayAlerts = True
    End If
Next
GetOut:
Sheets("Ark1").Select
Application.ScreenUpdating = True
End Sub

Function SheetExist(shname) As Boolean
Dim x As Object
    On Error Resume Next
    Set x = ActiveWorkbook.Sheets(shname)
    If Err = 0 Then SheetExist = True Else SheetExist = False
End Function
Avatar billede sorth Novice
22. september 2004 - 08:04 #2
Tak det virker send et svar så du kan få dine point
Avatar billede bak Forsker
22. september 2004 - 08:19 #3
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
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