Sub M_BSALV()
Dim a, Dict As Object, MijnDatum As Date, MijnTijd As Double, arr(1 To 1, 1 To 6)
Workbooks.OpenText Filename:="C:\testdata.txt", Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, Semicolon:=True, Comma:=False, Space:=True, Other:=True, OtherChar:="\", FieldInfo:=Array(Array(1, 5), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1)), DecimalSeparator:=".", ThousandsSeparator:=",", TrailingMinusNumbers:=False
a = ActiveSheet.UsedRange.Value
ActiveWorkbook.Close 0
Set Dict = CreateObject("scripting.dictionary")
With Dict
For i = 1 To UBound(a)
If IsDate(a(i, 1)) Then
MijnDatum = a(i, 1) + TimeValue(Format(a(i, 2), "00\:00\:00"))
GoTo EindeProbleem
If Not IsEmpty(arr(1, 1)) Then
If MijnDatum > arr(1, 1) Then
Do
a(1, 1) = DateAdd("s", 60, arr(1, 1))
MijnTijd = arr(1, 1) - Int(arr(1, 1))
If MijnTijd = WorksheetFunction.Median(TimeValue("09:30"), TimeValue("14:30"), MijnTijd) Then
.Item(.Count) = arr
Else
MijnDatum = Int(MijnDatum) + 1 + TimeValue("09:30")
If Weekday(MijnDatum, 1) > 5 Then MijnDatum = MijnDatum - Weekday(MijnDatum, 1) + 8
End If
Loop While Tijd > DateAdd("s", 60, a(i, 1))
End If
End If
EindeProbleem:
arr(1, 1) = MijnDatum
arr(1, 2) = a(i, 3)
arr(1, 3) = a(i, 4)
arr(1, 4) = a(i, 5)
arr(1, 5) = a(i, 6)
arr(1, 6) = a(i, 7)
.Item(.Count) = arr
End If
Next
Sheets.Add
Range("A1").Resize(.Count, UBound(arr, 2)).Value = Application.Index(.items, 0, 0)
End With
End Sub
Bookmarks