Avatar billede chrira Nybegynder
04. december 2003 - 15:46 Der er 6 kommentarer

Loop gennem ark i en projektmappe

Jeg skal lave et loop gennem en række ark i en projektmappe. Mit problem består i følgende.

Der er 53 ark i filen. Jeg skal lave et loop i ark2 til ark52. Fanerne hedder ikke det samme og kan ændre sig over tid.

Er der en der har løsningen ?

Chris
Avatar billede bak Forsker
04. december 2003 - 15:50 #1
et hurtigt forslag

for x =2 to activework.sheets.count
  sheets(x).activate
next
Avatar billede bak Forsker
04. december 2003 - 15:50 #2
Lidt for hurtigt :-)
for x =2 to activeworkbook.sheets.count
  sheets(x).activate
next
Avatar billede chrira Nybegynder
04. december 2003 - 15:55 #3
En hurtig en der virkede ! næsten og det kan jeg nok leve med, men problemet er at fanerne ikke nødvendigvis ligger i rækkefølge.

Jeg ville gerne lave mit loop gennem de arkbetegelser der vises i træ strukturen i VBA editoren.

Kan man det

Jeg ved man kan aktivere dem med en simpel Ark5.activate, men jeg kan ikke få loopet til at virke.

Chris
Avatar billede slo Nybegynder
05. december 2003 - 12:04 #4
Rækkefølgen af fanerne ændres inde i VBA-editoren.
Du gør det ved at navngive arkene i alfabetisk / numerisk rækkefølge - det er ikke de samme navne som de har ude i fanerne i Excel. Du får vinduet op med mulighed for navngivning ved at trykke på F4 - herefter trykker du på hvert ark og sætter "(Name)" properti'en til det ønskede.
Avatar billede bak Forsker
05. december 2003 - 13:48 #5
chrira-> det er arkenes CodeName du er efter her.
Jeg synes ikke det er så enkelt at tage disse ud og sortere dem, men det kan da lade sig gøre, med en lidt større kode.
Der er sikkert nogle der har en enklere kode, men lige nu kan jeg ikke rigtig se andre udveje

Sub RaekkeFoelge()
Dim ar()
ReDim ar(1 To ActiveWorkbook.Sheets.Count)
Dim cn As New Collection

For i = 1 To ActiveWorkbook.Sheets.Count
    ar(i) = Sheets(i).CodeName
Next
BubbleSort ar()
For i = 1 To UBound(ar)
    For Each s In ActiveWorkbook.Sheets
        If ar(i) = s.CodeName Then
        cn.Add s, s.CodeName
        Exit For
        End If
    Next
Next
For i = 2 To cn.Count
'********* DIN KODE HER **********
    cn(i).Activate
    cn(i).Range("A2") = i
'*********************************
Next
Set cn = Nothing
End Sub
Sub BubbleSort(list())
'  Sorts an array using bubble sort algorithm
    Dim First As Integer, Last As Long
    Dim i As Long, j As Long
    Dim Temp As String
   
    First = LBound(list)
    Last = UBound(list)
    For i = First To Last - 1
        For j = i + 1 To Last
            If list(i) > list(j) Then
                Temp = list(j)
                list(j) = list(i)
                list(i) = Temp
            End If
        Next j
    Next i
End Sub
Avatar billede bak Forsker
22. december 2003 - 20:32 #6
chris, skal vi ikke have spm. lukket inden jul :-)
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