For i ...
'тело цикла
Next i
abracadabra писал(а):у меня тело цикла - конструкция With
With Application.Selection
Worksheets(1).Range(Cells(RowPos, 4), Cells(RowPos, 4)).Value = Laborwert.Parametername
Worksheets(1).Range(Cells(RowPos, 5), Cells(RowPos, 5)).Value = Laborwert.Zeit
Worksheets(1).Range(Cells(RowPos, 6), Cells(RowPos, 6)).Value = Laborwert.Datum
Worksheets(1).Range(Cells(RowPos, 7), Cells(RowPos, 7)).Value = Laborwert.Ergebnistext
Worksheets(1).Range(Cells(RowPos, , Cells(RowPos, ).Value = Laborwert.Normalwert
Worksheets(1).Range(Cells(RowPos, 9), Cells(RowPos, 9)).Value = Laborwert.Minwert
Worksheets(1).Range(Cells(RowPos, 10), Cells(RowPos, 10)).Value = Laborwert.Maxwert
Worksheets(1).Range(Cells(RowPos, 11), Cells(RowPos, 11)).Value = Laborwert.Messwert
Worksheets(1).Range(Cells(RowPos, 12), Cells(RowPos, 12)).Value = Laborwert.Einheit
Worksheets(1).Range(Cells(RowPos, 13), Cells(RowPos, 13)).Value = Laborwert.Gw
Worksheets(1).Range(Cells(RowPos, 14), Cells(RowPos, 14)).Value = Laborwert.Datum
End With
А цикл If - End If
Я пробовал выносить - но из этой процедуры основная данные не считывает
Sub FillFields(RowPos As Long, Laborwert As Тип)
With Laborwert
Worksheets(1).Cells(RowPos, 4).Value = .Parametername
Worksheets(1).Cells(RowPos, 5).Value = .Zeit
Worksheets(1).Cells(RowPos, 6).Value = .Datum
Worksheets(1).Cells(RowPos, 7).Value = .Ergebnistext
Worksheets(1).Cells(RowPos, .Value = .Normalwert
Worksheets(1).Cells(RowPos, 9).Value = .Minwert
Worksheets(1).Cells(RowPos, 10).Value = .Maxwert
Worksheets(1).Cells(RowPos, 11).Value = .Messwert
Worksheets(1).Cells(RowPos, 12).Value = .Einheit
Worksheets(1).Cells(RowPos, 13).Value = .Gw
Worksheets(1).Cells(RowPos, 14).Value = .Datum
End With
End Sub
Sub FillFields(RowPos As Long, Laborwert As Тип)
Dim i As Long
For i = 0 To 9
Worksheets(1).Cells(RowPos, i + 4).Value = Laborwert.Item(i)
Next i
End Sub
If Laborwert.Parametername = b1 Then
With Laborwert
Worksheets(1).Cells(RowPos, 4).Value = .Parametername
...
Worksheets(1).Cells(RowPos, 13).Value = .Gw
Worksheets(1).Cells(RowPos, 14).Value = .Datum
End With
End If
RowPos = RowPos + 1
If Laborwert.Parametername = b2 Then
With Laborwert
Worksheets(1).Cells(RowPos, 4).Value = .Parametername
...
Worksheets(1).Cells(RowPos, 14).Value = .Datum
End With
End If
RowPos = RowPos + 1
If Laborwert.Parametername = b3 Then
With Laborwert
Worksheets(1).Cells(RowPos, 4).Value = .Parametername
...
Worksheets(1).Cells(RowPos, 14).Value = .Datum
End With
End If
Dim DataAl As Object
Sub Patient()
On Error Resume Next
Dim i As Integer
Dim Patient As Patient
Dim Laborwert As Laborwert
Dim Labordaten As Laborwerte
Dim RowPos As Long
Set DataAl = CreateObject("DataAL.Application")
Set Patient = DataAl.Patient
Set Labordaten = DataAl.Laborwerte
'Если не созданы объекты, то и делать нечего. Можно вывести сообщение об этом
If DataAl Is Nothing Or Patient Is Nothing Or Labordaten Is Nothing Then
MsgBox "Не созданы объекты DataAL.Application"
Exit Sub
End If
Patient.PatNr = InputPatNr()
If (Patient.read() = 0) Then
MsgBox ("Patient nicht gefunden")
Else
Worksheets(1).Range("E6").Value = "Patient:"
Worksheets(1).Range("G6").Value = Patient.Vorname
Worksheets(1).Range("H6").Value = Patient.Name
Worksheets(1).Range("I6").Value = "geb. am"
Worksheets(1).Range("J6").Value = Patient.Geburtsdatum
PatNummer& = Patient.PatNr
BesuchDatum = LetzterBesuch(PatNummer&)
LabSelection = "PatNr=" + Str(PatNummer&)
If BesuchDatum <> "" Then
LabSelection = LabSelection + ";Datum>=" + BesuchDatum
End If
If Labordaten.Open(LabSelection) Then
MsgBox ("Selektionsfehler")
Else
Worksheets(1).Select
RowPos = 9
Cells(8, 4).Value = "HAMATOLOGIE" 'a
For Each Laborwert In Labordaten
If Laborwert.Geraet = "" Then
' Не понятно назначение этого цикла. По идее он должен перебирать каждый параметр
' а он просто записывает одни и те-же данные столько раз, столько есть Parameter у объекта Laborwert
'For i = 1 To Laborwert.Parameter.count
' следующая строка пишеться одно и то-же значениепри каждой итерации цикла
'Worksheets(1).Range(Cells(8, 4), Cells(8, 4)).Value = "HAMATOLOGIE" 'a
'RowPos = 9 ' а то здесь будет происходить перетирание данных из предыдущего Laborwert
With Laborwert
Cells(RowPos, 4).Value = .Parametername
Cells(RowPos, 5).Value = .Zeit
Cells(RowPos, 6).Value = .Datum
Cells(RowPos, 7).Value = .Ergebnistext
Cells(RowPos, .Value = .Normalwert
Cells(RowPos, 9).Value = .Minwert
Cells(RowPos, 10).Value = .Maxwert
Cells(RowPos, 11).Value = .Messwert
Cells(RowPos, 12).Value = .Einheit
Cells(RowPos, 13).Value = .Gw
Cells(RowPos, 14).Value = .Datum
End With
RowPos = RowPos + 1
'Next i
End If
Next Laborwert
Labordaten.Close
End If
End If
Set Labordaten = Nothing
Set Patient = Nothing
Set DataAl = Nothing
End Sub
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 43