Avatar billede xelor Nybegynder
20. marts 2001 - 11:45 Der er 9 kommentarer og
1 løsning

Hvorfor kan man oprette 36 arkkopier....

...men ikke 37 ???

Programmet er Excel 2000, Sproget er VBA, Styresystemet er Windows 2000...
En kode opretter udfra en liste x antal ark baseret på et \'Tomt Ark\'. Dette tomme ark skal kopieres og navngives efter en liste.
Den opretter fint 36 kopier af \'skabelon-arket (\'Tomt Ark\'), men det 37 ark vil ikke.
Fejlen er \"Metoden Copy mislykkedes for klassen worksheet\".
Der findes fra start 9 ark i Arbejdsmappen.

Var det klart og utydelig..:-))

20. marts 2001 - 11:48 #1
Vis mig koden, jeg kan snilt lave 52 stk. hos mig eller send mig arket flemse@post3.tele.dk
20. marts 2001 - 11:56 #2
Her er koden, som jeg bruger ved oprettelse af 51 ekstra ark - jeg har dog ikke 9 ark i forvejen, men kun et enkelt.
Måske du skal lade ix = 10 To (hvormange du nu vil have) når du har 9 ark i forvejen.


Sub KopierArk()
Dim ix As Integer
For ix = 2 To 52
    Sheets(\"Ark1\").Copy After:=Sheets(ix - 1)
    Sheets(ix).Name = ix
Next ix
End Sub
Avatar billede xelor Nybegynder
20. marts 2001 - 12:30 #3
Den kode, der bliver brugt til at oprette disse ark bruger samme funktion....

Kodeopbygeningen er som følger :

Løkke for et område...
  Test om der skal oprettes ark for denne [cell]
  Navn på nyt ark oprettes i variabal
  Skabelonark kopieres... <--- Her opstår fejlen efter at have kørt 36 gange
  Navn tildeles
Løkken slutter

20. marts 2001 - 12:35 #4
xelor -> vis mig hele koden, så vil jeg hjælpe, hvis jeg kan.
Avatar billede xelor Nybegynder
20. marts 2001 - 12:45 #5
Sub CreateNewSheet()

If MsgBox(\"Ønsker du at opdatere data?\", 68, \"xxxxxxxx\") = vbNo Then
  End
Else
  frmLogin.Show
  sUID = frmLogin.txtUID
  sPWD = frmLogin.txtPWD
  Unload frmLogin
End If
Set con = New Connection
Set rs = New Recordset
Set rs1 = New Recordset

Worksheets(Ark2.Name).Select
datakilde = Range(\"B3\")

If datakilde = \"\" Then
    MsgBox \"Du skal indtaste et en fil DSN. \", 48, \"xxxxxxxxxx\"
    End
End If

sStartTid = Time

DefineVariables

con.Open \"FileDSN=\" & datakilde & \";UID=\" & sUID & \";PWD=\" & sPWD
Calculation = xlCalculationManual
   
    \'opretter et ark for hver aktivitet der findes på aktivitetslisten
    Application.ScreenUpdating = False
    Application.StatusBar = \"Opdaterer aktivitetsark, vent et øjeblik.....\"
   
    Worksheets(Ark6.Name).Select
    sDepartment = Range(\"D7\")
    Worksheets(Ark2.Name).Select
    Cells(8, 3).Select
    Range(Selection, Selection.End(xlDown)).Select

    For Each cell In Selection
        If cell = sDepartment Then
            sActivity = cell.offset(0, -2)
            sName = Worksheets(Ark11.Name).Range(\"prefix\") & sActivity
            CopySheet
            Worksheets(Ark3.Name & \" (2)\").Name = sName
            Sheets(sName).Select
            ActiveSheet.Unprotect
            ActiveSheet.Range(\"A3\") = sActivity
            Hentunderaktiviteter
            Range(\"A13\").Select
            GetSQL
            GetSQLIncome
            If Cells(57, 1).Value <> \"\" Then
            GetSQLCost
            End If
        End If
    Next

    Calculation = xlCalculationAutomatic
    \'Afsluttende kode
    If con.State = 1 Then con.Close
    Set con = Nothing
    Set rs = Nothing
    Set rs1 = Nothing

    Sheets(Ark6.Name).Select

    Application.ScreenUpdating = True
    Application.StatusBar = False
    Application.Cursor = xlDefault
   
    tid = Time - sStartTid
 
    MsgBox \"Data er nu opdateret, tid for opdatering \" & tid
End Sub
------------------------------------
Sub InsertNameInDivSheets()

    \'Indsætter navn på Udlæsningsliste
    Worksheets(Ark11.Name).Select
    Worksheets(Ark11.Name).Range(\"A7\").Activate
    While ActiveCell <> \"\"
        ActiveCell.offset(1, 0).Select
    Wend
    ActiveCell = sActivity
    \'Indsætter navn på afdelingsbudgettet
    Worksheets(Ark1.Name).Select
    Worksheets(Ark1.Name).Range(\"A8\").Activate
    While ActiveCell <> \"\"
        ActiveCell.offset(1, 0).Select
    Wend
    ActiveCell = sActivity
End Sub
------------------------------------------
Sub CopySheet()
   
    Worksheets(Ark3.Name).Select
    Sheets(Ark3.Name).Copy before:=Sheets(Ark5.Name)
    InsertNameInDivSheets
   
End Sub
----------------------------------------------

Dette her er den programstump der sørger for at udvide arbejdsmappen med x antal ark.

Som du vil se, så bruger jeg funktionen
  sheet(x).copy before:=sheet(x)

Jeg kan simpelthen ikke forstå, hvorfor programmet ikke vil oprette ark nr 37....???
Såfremt der kun findes 33 i samlingen, så er der ingen problemer...
20. marts 2001 - 13:43 #6
xelor -> beklager jeg kan heller ikke lige lure lunten, men det er ikke antallet - det er noget andet. God jagt.
Avatar billede xelor Nybegynder
20. marts 2001 - 14:07 #7
svar til mig selv
Avatar billede xelor Nybegynder
20. marts 2001 - 15:06 #8
Bare en bemærkning til flemmingdahl.....

Løsningen fandtes på denne side:
http://support.microsoft.com/support/kb/articles/Q177/6/34.ASP
20. marts 2001 - 16:19 #9
Den gode jagt gav bonus - tak for informationen.
Avatar billede jerner Nybegynder
22. marts 2001 - 13:05 #10
Det glæder mig at se forklaringen fra MS. Jeg har i flere år bøvlet med, at mit \"program\" virkede fint i Excel5.0/7.0 men ikke i Excel 8.0 (97\'eren). Programmet danner nye ark ud fra et flexibelt Masterark. Jeg kunne omgå fejlen ved at lave arkene i mindre antal, lukke Excel og starte igen. Så var der plads til at lave en ny portion.
Hvor mange af mine brugere har mon troet på min udokumenterede påstand om, at fejlen lå hos MS og ikke hos mig?
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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