20. marts 2001 - 11:45Der 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.
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
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
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
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
\'opretter et ark for hver aktivitet der findes på aktivitetslisten Application.ScreenUpdating = False Application.StatusBar = \"Opdaterer aktivitetsark, vent et øjeblik.....\"
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
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()
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...
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?
Synes godt om
Ny brugerNybegynder
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.