Avatar billede moejensen Nybegynder
10. maj 2004 - 21:45 Der er 1 kommentar og
1 løsning

Op og nedtælling af variabel

Jeg har følgende kode, med variablen next_index_in_overview_list
variablen bliver initialiseret til 6 ved kald af funktionen OnStartup
Funktionen CreateIndexInOverviewList tæller variablen 1 op
Funktionen DeleteRace tæller variablen 1 ned
Der sker dog det, at optællingen går godt, men nedtællingen går kun godt første gang funktionen DeleteRace kaldes. Anden gang nulstilles variablen og derefter bliver den talt 1 ned, dvs. -1.
Er der en logisk forklaring på dette nulstillingsproblem?

KODEN ER SOM FØLGDER:
Option Explicit
Dim next_index_in_overview_list As Integer

Sub OnStartup()
    ActiveWindow.DisplayGridlines = False
    next_index_in_overview_list = 6
    'Range("A1").Value = next_index_in_overview_list
End Sub

Sub CreateNewRace(race_number)

'  Copy RaceTemplate
    'Sheets("RaceTemplate").Select
    Sheets("RaceTemplate").Copy After:=Sheets(Sheets.Count)
    Sheets("RaceTemplate (2)").Name = race_number
   
'  Input values
    Range("A2") = "Løb " + race_number
    Range("B5").Select
    ActiveSheet.Protect Scenarios:=True, UserInterfaceOnly:=True
    ActiveSheet.Visible = True

End Sub

Sub CreateIndexInOverviewList(race_number)

'  Create an index and links to appropriate places in the file regarding the race number
    Sheets("OverviewList").Select
    ActiveSheet.Unprotect
    Range("B" & next_index_in_overview_list).Select
    With Selection
        .HorizontalAlignment = xlCenter
        .Value = race_number
    End With
    Sheets("OverviewList").Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:=(race_number & "!B5"), ScreenTip:=("Klik her for at se indtastninger for løb " & race_number)
    Range("C" & next_index_in_overview_list) = "=" & race_number & "!B5"
    Range("D" & next_index_in_overview_list) = "=" & race_number & "!G5"
    next_index_in_overview_list = next_index_in_overview_list + 1
    'Range("A1").Value = next_index_in_overview_list
   
    '  Sort the index list
    Range("B6").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.Sort Key1:=ActiveCell, Order1:= _
        xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
        Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
    Range("B6").Select
   
    ActiveSheet.Protect Scenarios:=True, UserInterfaceOnly:=True
   
End Sub

Sub DeleteRace(race_number)

'  Delete the race sheet
    Application.DisplayAlerts = False
    Sheets(race_number).Delete
    Application.DisplayAlerts = True
   
'  Delete the race from index
    Range("B6").Select
    Range(Selection, Selection.End(xlDown)).Select
    ActiveWorkbook.Names.Add Name:="temp_range", RefersTo:=Selection
    Selection.Find(What:=race_number, After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
    ActiveCell.Range("A1:C1").Select
    ActiveSheet.Unprotect
    Selection.ClearContents
   
'  Sort the index list
    Application.Goto Reference:="temp_range"
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.Sort Key1:=ActiveCell, Order1:= _
        xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
        Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
    ActiveWorkbook.Names("temp_range").Delete
    Range("B6").Select
    ActiveSheet.Protect

'  Count down the index var
    next_index_in_overview_list = next_index_in_overview_list - 1
    'Range("A1").Value = next_index_in_overview_list
End Sub
Avatar billede bak Forsker
14. maj 2004 - 14:38 #1
Prøv lige
Public next_index_in_overview_list As Integer
istedet for

Dim next_index_in_overview_list As Integer
Avatar billede moejensen Nybegynder
17. maj 2004 - 12:36 #2
Jeg har fundet en anden løsning, ved at lave et name space hvor i jeg tæller værdien op og ned. Det virker nemlig hver gang!
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