2013-03-17, 16:51
#1
Jag håller på att sortera information och använder mig av följande kod i mitt makro
Den fetmarkerade texten ger mig problem.
Får detta felmeddelande "Indexet ligger utanför intervall"
Jag antar att detta är pga att en array's första värde är 0 och inte 1, men variabeln i har värdet 6 medans UBound(personal) har värdet 5
Men jag vet inte hur jag ska lösa detta utan behöver lite hjälp.
Kod:
Public PersonalScheduleSheet As String Public eventSheet As String Public number As Integer Sub generateSchedule() PersonalScheduleSheet = "PersonalSchema" eventSheet = "Marknader" Dim row As Integer Dim con As Boolean con = True row = 2 Do While con = True value = Sheets(eventSheet).Cells(row, 1).value If value <> "" Then number = row title = Sheets(eventSheet).Cells(number, 1).value startDate = DateValue(Sheets(eventSheet).Cells(number, 2).value) endDate = DateValue(Sheets(eventSheet).Cells(number, 3).value) persons = Sheets(eventSheet).Cells(number, 4).value Dim personal As Variant Dim i As Integer personal = Split(persons, ",") For i = LBound(personal) To UBound(personal) personal(i) = Trim(personal(i)) & "," Next Do While startDate <= endDate DueDate = Format(startDate, "yyyy-mm-dd") personalPos = Application.Match(personal, personalID, False) asd = insertInfo(DueDate, personalPos, title) startDate = DateAdd("d", 1, startDate) Loop Else con = False End If row = row + 1 Loop End Sub Function SetPersonalID() As String() Dim con As Boolean con = True Dim number As Integer number = 1 Dim value As String Dim personalID() As String Do While con = True value = Sheets(PersonalScheduleSheet).Cells(1, number + 1).value If value <> "" Then ReDim Preserve personalID(number) As String personalID(number - 1) = value Else con = False End If number = number + 1 Loop SetPersonalID = personalID End Function Function insertInfo(eventDate, personal, title) Dim row As Integer Dim con As Boolean con = True row = 2 Do While con = True value = CStr(Sheets(PersonalScheduleSheet).Cells(row, 1).value) If eventDate = value Then con = False Sheets(PersonalScheduleSheet).Cells(row, personal + 1) = title ElseIf value = "" Then con = False End If row = row + 1 Loop insertInfo = "" End Function
Den fetmarkerade texten ger mig problem.
Får detta felmeddelande "Indexet ligger utanför intervall"
Jag antar att detta är pga att en array's första värde är 0 och inte 1, men variabeln i har värdet 6 medans UBound(personal) har värdet 5
Men jag vet inte hur jag ska lösa detta utan behöver lite hjälp.