Op og nedtælling af variabel
Jeg har følgende kode, med variablen next_index_in_overview_listvariablen 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
