Vinnaren i pepparkakshustävlingen!
2013-03-17, 16:51
  #1
Medlem
Jag håller på att sortera information och använder mig av följande kod i mitt makro
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.
Citera
2013-04-18, 19:30
  #2
Medlem
christerys avatar
Sått en stop eller breakpoint och kika på vad som händer egentligen. Kanske inte spliten funkar som du tror tex.

Bara en gissning, men så skulle jag gjort.
Citera
2013-04-23, 23:58
  #3
Medlem
Mysfarbrorn-s avatar
Ska du bara iterera igenom personal eller vad ska du göra? Varför gör du inte bara såhär isåfall:

Kod:
Dim personal As Variant
    Dim i 
As Integer
     
    personal 
Split(persons",")
    For 
0 To personal.Length
        personal
(i) = Trim(personal(i)) & ","
    
Next 

Kanske missuppfattade koden helt, ber om ursäkt isåfall.
Citera
2013-06-28, 19:25
  #4
Medlem
Lifelovers avatar
Med risk för att verkar otroligt dum, du anropar variabeln persons på ett ställe, det ska inte vara personal?
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback