Avatar billede jensen363 Forsker
22. september 2006 - 12:55 Der er 44 kommentarer og
2 løsninger

Trinvis afvikling af programkode

Med F8 kan jeg følge given programkode ( som jeg har overtaget fra en anden ... ) ...

Jeg har en fejl i programmet, men fejlen trigges af noget programkode som kører umiddelbart før programmet stopper ...

Er der nogen måde hvorpå jeg kan "gå baglæns" i koden ... jeg kan ikke lige hitte rede i den Italienske kode :o)
Avatar billede gider_ikke_mere Nybegynder
22. september 2006 - 13:14 #1
Du kan til dels flytte curseren på fejlen op, altså trække den manuelt op.
Avatar billede gider_ikke_mere Nybegynder
22. september 2006 - 13:17 #2
Den lille gule pil, hvis du forstår.
Avatar billede jensen363 Forsker
22. september 2006 - 13:19 #3
Det går ikke lige ... jeg har behov for at spore, hvor en p.t. ugendt modulkode slutter før den næste starter, og i det aktuelle tilvælde, er det desværre ikke linien før :o(
Avatar billede jensen363 Forsker
22. september 2006 - 13:21 #4
Men never mind ... problemet er løst ...

Som udgangspunkt skulle jeg have indsat en ActiveSheet.Unprotect i en lang løkkerutine, og så ActiveSheet.Protect når den sluttede ... det var slutningen jeg ikke kunne finde ...
Avatar billede jensen363 Forsker
22. september 2006 - 13:21 #5
Satte ActiveSheet.Protect på BeforeClose :o) i stedet ...
Avatar billede jensen363 Forsker
22. september 2006 - 13:23 #6
Du får en anden opgave i stedet ... hvis det er ok ?
Avatar billede gider_ikke_mere Nybegynder
22. september 2006 - 13:28 #7
Ja...
Avatar billede jensen363 Forsker
22. september 2006 - 13:32 #8
Jeg har behov for at summere på tværs af et variabelt antal regneark. Det er en arkfane ( forside som konsolidere/samler op fra de efterflgende )

Brugerne opretter selv nye arkfaner efter en skabelon, som oprettes med en makro, arkfanerne navngives individuelt

Alle brugeroprettede arkfaner har en balancesaldo som skal summeres på forsiden.

... kan du følge mig ?
Avatar billede gider_ikke_mere Nybegynder
22. september 2006 - 13:44 #9
Du gennemløber bare arknavnene, og hvis du støder på forsidearket, springer du over. Står saldoen altid på samme celle?
Avatar billede jensen363 Forsker
22. september 2006 - 13:46 #10
Saldo står altid i samme celle :o)
Avatar billede gider_ikke_mere Nybegynder
22. september 2006 - 13:48 #11
For Each ws In ThisWorkbook.Worksheets
    If ws.Name <> ActiveSheet.Name Then
        MsgBox ws.Name
    End If
Next
Avatar billede jensen363 Forsker
22. september 2006 - 13:53 #12
Hvordan giver det en regneregel som summerer ???
Avatar billede gider_ikke_mere Nybegynder
22. september 2006 - 13:58 #13
En simpel..

Sub test()
I = 1
Hoved = ActiveSheet.Name
For Each ws In ThisWorkbook.Worksheets
    I = I + 1
    If ws.Name <> Hoved Then
        Vaerdi = Sheets(ws.Name).Range("A1").Value
        Sheets(Hoved).Range("A" & I).Value = Vaerdi
    End If
Next
End Sub
Avatar billede gider_ikke_mere Nybegynder
22. september 2006 - 13:59 #14
Må der sættes tomme rækker ind i forsiden?
Avatar billede jensen363 Forsker
22. september 2006 - 14:05 #15
Helst ikke ... den står helt stille i dag ..

Sheets(1) er min samler ( variabelt navn ) Range("E1) er modtager af data

Sheets(2-255) har alle deres balancesum i Range("G6")
Avatar billede gider_ikke_mere Nybegynder
22. september 2006 - 14:09 #16
Skal værdierne bare lægges sammen?

Sub test()
hoved = ActiveSheet.Name
For Each ws In ThisWorkbook.Worksheets
    If ws.Name <> hoved Then
        I = I + 1
        Vaerdi = Vaerdi + Sheets(ws.Name).Range("A1").Value
    End If
Next
MsgBox "Der var " & I & " ark. Værdien var sammenlagt:" & vbLf _
    & Vaerdi
Sheets(hoved).Range("A1").Value = Vaerdi
End Sub
Avatar billede jensen363 Forsker
22. september 2006 - 14:21 #17
Nej, regnereglen skulle gerne fremgå af hovedarket, så man efterfølgende kan summere ved rettelser underarkene
Avatar billede gider_ikke_mere Nybegynder
22. september 2006 - 14:35 #18
Så det skal skrives i en kolonne på forsiden! Står der anden i den kolonne? Jeg mener længere nede, og i hvilken celle starter det?
Avatar billede jensen363 Forsker
22. september 2006 - 14:39 #19
Forsiden indeholder ikke ret mange informationer en skjult kolonne kan vel benyttes
Avatar billede gider_ikke_mere Nybegynder
22. september 2006 - 15:10 #20
Sub test()
hoved = ActiveSheet.Name
For Each ws In ThisWorkbook.Worksheets
    If ws.Name <> hoved Then
        I = I + 1
        Vaerdi = Sheets(ws.Name).Range("A1").Value
        Sheets(hoved).Range("A" & I).Value = Vaerdi
    End If
Next
Range("A" & I + 1).FormulaR1C1 = "=SUM(R[-" & I & "]C:R[-1]C)"
End Sub
Avatar billede jensen363 Forsker
22. september 2006 - 15:53 #21
Den kræver lige lidt forklaring :o(

*  G6 er fortsat det sted hvorfra jeg vil hente mine data
*  E6 er fortsat det sted hvor min sum skal stå
*  Kolonne H er ledig

Sorry jeg er extremt tungnem i dag
Avatar billede jensen363 Forsker
22. september 2006 - 15:58 #22
Mangler lige at få summen til at stå i E6 på hovedarket !!!!
Avatar billede gider_ikke_mere Nybegynder
22. september 2006 - 16:11 #23
Så ikke lige dit indlæg med cellereferencer:

Sub test()
hoved = ActiveSheet.Name
StartV = 6
For Each ws In ThisWorkbook.Worksheets
    If ws.Name <> hoved Then
        I = I + 1
        Vaerdi = Sheets(ws.Name).Range("G6").Value
        Sheets(hoved).Range("H" & StartV + I).Value = Vaerdi
    End If
Next
Range("E" & StartV + I + 1).FormulaR1C1 = "=SUM(R[-" & I & "]C[3]:R[-1]C[3])"
End Sub
Avatar billede jensen363 Forsker
22. september 2006 - 16:17 #24
Den er vel heller ikke lige gangbar ... :o(

Nå der efterfølgende korrigeres i underarkene, summerer den jo ikke ...
Avatar billede jensen363 Forsker
22. september 2006 - 16:18 #25
Regnereglen skulle jo meget gerne være noget i stil med :

  Ark2!G6 + Ark3!G6 + ....
Avatar billede gider_ikke_mere Nybegynder
22. september 2006 - 16:32 #26
Så må du forklare lidt bedre... vil du have live opdatering af arket?
Avatar billede jensen363 Forsker
22. september 2006 - 16:35 #27
Sorry ... men slutresultatet består af en såkaldt rekap ( forsiden ) og en række underark som alle summerer til forsiden, så hvis brugeren efterfølgende retter i underarkene, skal det slå igennem på rekappen med det samme ... :o)
Avatar billede gider_ikke_mere Nybegynder
22. september 2006 - 16:39 #28
Så er det således:

Sub test()
hoved = ActiveSheet.Name
StartV = 6
For Each ws In ThisWorkbook.Worksheets
    If ws.Name <> hoved Then
        Vaerdi = Sheets(ws.Name).Range("G6").Value
        Sheets(hoved).Range("H" & StartV + I).Value = "=" & ws.Name & "!R[-" & I & "]C[-1]"
        I = I + 1
    End If
Next
Range("E" & StartV + I + 1).FormulaR1C1 = "=SUM(R[-" & I & "]C[3]:R[-1]C[3])"
End Sub
Avatar billede mrjh Novice
22. september 2006 - 17:05 #29
Her er en alternativ kode, som indsætter en 3D formel
Kræver dog at summeringsarket er det første i workbooken. Indsæt koden i dennes modules.

Sub test()
første = Worksheets(2).Name
sidste = Worksheets(Worksheets.Count).Name
område = "=" & første & ":" & sidste & "!$G$6"
ActiveWorkbook.Names.Add Name:="Data", RefersTo:=område
Range("E1").Formula = "=sum(Data)"
End Sub
Avatar billede bak Forsker
22. september 2006 - 17:13 #30
Bare som en kommentar

hvis det altid er de samme celler der skal summeres, plejer jeg at indsætte et tomt ark som nummer 2 der hedder start og et tomt ark til slut der hedder slut.
så kan man på ark summere således
=SUM(start:slut!A4)

alle nye ark indsættes så mellem de to (start og slut) og vil automatisk blive summeret
Avatar billede jensen363 Forsker
23. september 2006 - 11:16 #31
bak > det er faktisk den jeg har forsøgt at benytte, da den er stort set 100 % fejfri, men efterlader nogen problemer

Start og slut er skjult for brugeren, så hvordan sikrer jeg at nyoprettede arkfaner altid indplaceret mellem Start og Slut
Avatar billede excelent Ekspert
23. september 2006 - 11:38 #32
start og slut vil stadig være først og sidst, skjult eller ej
Avatar billede jensen363 Forsker
23. september 2006 - 11:45 #33
Uanset hvad jeg gør, ligger Start og Slut som hhv. Sheet(2) og Sheet(3) ???
Avatar billede jensen363 Forsker
23. september 2006 - 11:51 #34
Mener I at jeg skal benytte makroen til efterfølgende at oprette ark Slut ???

I givet fald ... hvordan navngiver jeg det korrekt, nå antal arkfaner er variabelt ???
Avatar billede excelent Ekspert
23. september 2006 - 11:52 #35
start med at vise alle ark
træk ark 'Start' helt til venstre og skjul
træk ark 'Slut' helt til højre og skjul

i min exel 2003 indsættes nye ark altid lige til venstre for det aktive
når Start og Slut er skjult skulle det ikke kunne gå galt
Avatar billede excelent Ekspert
23. september 2006 - 12:01 #36
nej arkene start og slut skal blot være oprettet på forhånd

du kan anvende denne kode til at vise rækkefølgen

Sub Makro4()
Dim t
For t = 1 To Sheets.Count
Sheets(t).Activate
MsgBox ("") & Sheets(t).Name
Next
End Sub
Avatar billede jensen363 Forsker
23. september 2006 - 12:03 #37
Ok ... det krævede lidt kreativ programmering før det lykkedes ... resultatet blev :

Sub GenererArk()
Dim WS As Worksheet
Dim Input1 As String
Dim Input2 As String

    Sheets("Skabelon").Visible = True
   
    Input1 = InputBox("Indtast kontonummer til oprettelse", "Kontonummer")
    Input2 = InputBox("Indtast kontobetegnelsen/tekst", "Kontobetegnelse")

        Sheets("Skabelon").Select
        Sheets("Skabelon").Copy Before:=Sheets("Slut")
            Sheets("Skabelon (2)").Select
        Sheets("Skabelon (2)").Name = Input1
   
    Sheets("Slut").Visible = True
        Sheets("Slut").Select
    Sheets("Slut").Visible = False
   
    Sheets("Slut").Move After:=Sheets(Input1)

    ActiveSheet.Unprotect
   
    Range("A3").Value = "Konto : " & Input1 & " - " & Input2
    Range("A11").Value = "Underkonto : " & Input1
   
    Sheets("Skabelon").Visible = False

    ActiveSheet.Protect

End Sub
Avatar billede jensen363 Forsker
23. september 2006 - 12:04 #38
Ved ikke lige hvem jeg skal belønne for løsningen :o) ... I har alle bidraget med bidder af løsningen, så læg svar den som mutte være trængende :o)
Avatar billede excelent Ekspert
23. september 2006 - 12:14 #39
lol jeg står over :-)
Avatar billede gider_ikke_mere Nybegynder
23. september 2006 - 12:25 #40
Ser du, jeg har igen, igen, igen lært noget af bak, så giv ham pointene ;o)

Jeg havde dog forstået, at du ville kunne se alle siders resultat i et ark, men det er du måske gået fra?
Avatar billede jensen363 Forsker
23. september 2006 - 12:30 #41
Hej akyhne ...

Mellemsummerne har jeg jo på underarkene ... og jeg synes KISS - princippet fra bak fortjener en stående applaus :o)
Avatar billede gider_ikke_mere Nybegynder
23. september 2006 - 12:37 #42
Simpelthen ;o)
Avatar billede mrjh Novice
23. september 2006 - 12:39 #43
Jeg står også over, selvom min løsning faktisk også genererede en 3d formel. Men den fangede ikke hvis et nyt erk blev flyttet til det sidste i workbooken, kun hvis makroen blev kørt påny. Jeg ledte faktisk efter en Worksheet insert event, som kunne fikse det, men kunne ikke lige finde det. Så point ubeskåret til bak, som endnu engang kom med en flot kreativ løsning. :-)
Avatar billede excelent Ekspert
23. september 2006 - 14:57 #44
Worksheet insert event kan kodes i ThisWorkbook:

Private Sub Workbook_NewSheet(ByVal Sh As Object)
...kode
End Sub
Avatar billede mrjh Novice
23. september 2006 - 23:05 #45
Takker excelent. Har lige testet det og den virker. Men hvis arket flyttes til sidst fejler den. Har også prøvet en Workbook_SelectionChange tror jeg den hedder og den fanger den, men baks løsning er klart den mest automatiserede. Så hatten af for det :-)
Avatar billede bak Forsker
24. september 2006 - 18:48 #46
ok :-)
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