View Single Post
  #5   Report Post  
Posted to microsoft.public.excel.programming
joel joel is offline
external usenet poster
 
Posts: 9,101
Default loop and some more

I don't think the dates on the worksheet are dates instead strings. i
modified the code tohandle this problem.

Look at this date
02-01-2009

If the date was a true date the zeroes wouldn't be infront of the 2 and 1.
I'm in the USA and not sure if this is a difference in the international
setting or a real problem so I modified the code so it will work with either
a string or a real date.

With Sheets("perioder")
OldRow = 1
NewRow = 1
Do While OldRow <= 20
FormStartDate = DateValue(Priskalk.fradato.Value)
StartDate = .Range("F" & OldRow)
StartDate = Replace(StartDate, "-", "/")
StartDate = DateValue(StartDate)
If FormStartDate StartDate Then
StartDate = FormStartDate
End If
FormEndDate = DateValue(Priskalk.Tildato.Value)
EndDate = .Range("G" & OldRow)
EndDate = Replace(EndDate, "-", "/")
EndDate = DateValue(EndDate)
If FormEndDate EndDate Then
EndDate = FormEndDate
End If

For MyDate = StartDate To EndDate
Sheets(perioder).Range("A" & NewRow).Value = _
.Range("B" & NewRow).Value
NewRow = NewRow + 1
Next MyDate
OldRow = OldRow + 1
Loop
End With

"alvin Kuiper" wrote:

Hi joel

This just give me a loop there never stop?

Alvin


"Joel" skrev:

With Sheets("perioder")
OldRow = 1
NewRow = 1
Do While OldRow <= 20
FormStartDate = Date(Priskalk.fradato.Value)
StartDate = .Range("F" & OldRow)
If FormStartDate StartDate Then
StartDate = FormStartDate
End If
FormEndDate = Date(Priskalk.Tildato.Value)
EndDate = .Range("G" & OldRow)
If FormEndDate EndDate Then
EndDate = FormEndDate
End If

For MyDate = StartDate To EndDate
Sheets("beregner").Range("A" & NewRow).Value = _
.Range("B" & NewRow).Value
NewRow = NewRow + 1
Next MyDate
OldRow = OldRow + 1
Loop
End With

"alvin Kuiper" wrote:

Hi
I try to explain this very difficult task (for me)
I have this in a shet (perioder)
Here is 3 rows but there can bee up to 20 rows
B C D E F
G
39,22 39,22 02.01 28.02 02-01-2009 28-02-2009
47,17 47,17 01.03 31.10 01-03-2009 31-10-2009
44 44 01.11 31.12 01-11-2009 31-12-2009

then i have a userform with 2 fields as date (start and end)
What i want now is To make a loop there goes from 1 to 20
If my start is = ( F and the row) and end is <= (G and the row) Then
Take the value from B and copy it to another sheet = beregn

But thats not all :
If my start is 30-10 and my end is 02-11
Then i shall have 2 days with the value 39,22
and 2 days with the value 47,17
I have try this:
For I = 1 To 20

If Priskalk.fradato.Value = Range("perioder!" & kl & I).Value And
Priskalk.Tildato.Value <= Range("perioder!" & kl2 & I).Value Then
For s = Priskalk.fradato.Value To Priskalk.Tildato.Value
Range("beregner!" & kk & tal).Value = Range("perioder!" & kl3 & tal).Value
tal = tal + 1
Next
End If
If Range("perioder!" & kl & start).Value = "" Then
Exit For
End If
Next
Nothing happens ?????????

Hope someone can help
Alvin