Ich versuche, eine Warteschlange zu machen, die in der Lage ist, das First-in-First-Out-Konzept zu zeigen. Ich möchte ein Array haben, das als Warteliste funktioniert. Die Patienten, die später kommen, werden später entlassen. Es gibt eine Beschränkung von 24 Patienten im Raum, der Rest wird auf eine Warteliste gehen. Wenn der Raum leer ist, gehen die ersten Patienten aus dem Wartezimmer (die frühesten) in den Raum. Hier ist der Code, den ich bisher gefunden habe. Jede Hilfe wird sehr geschätzt.VBA - Wie erstellt man eine Warteschlange in einem Array? (FIFO) zuerst in first out
Dim arrayU() As Variant
Dim arrayX() As Variant
Dim arrayW() As Variant
Dim LrowU As Integer
Dim LrowX As Integer
Dim LrowW As Integer
'Dim i As Integer
Dim j As Integer
Dim bed_in_use As Integer
LrowU = Columns(21).Find(What:="*", LookIn:=xlValues, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
LrowX = Columns(24).Find(What:="*", LookIn:=xlValues, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
LrowW = Columns(23).Find(What:="*", LookIn:=xlValues, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
ReDim arrayU(1 To LrowU)
ReDim arrayX(1 To LrowX)
ReDim arrayW(1 To LrowW)
For i = 3 To LrowU
arrayU(i) = Cells(i, 21)
Next i
i = 3
For i = 3 To LrowX
arrayX(i) = Cells(i, 24)
Next i
i = 3
j = 3
For r = 3 To LrowW
arrayW(r) = Cells(r, 23)
Next r
r = 3
i = 3
j = 3
For i = 3 To LrowX ' the number of bed in use is less than 24 (HH)
If bed_in_use >= 24 Then GoTo Line1
For j = 3 To LrowU
If bed_in_use >= 24 Then GoTo Line1
If arrayX(i) = arrayU(j) Then
If Wait_L > 0 Then
Wait_L = Wait_L - (24 - bed_in_use)
Else
bed_in_use = bed_in_use + 1
End If
End If
Next j
Line1:
For r = 3 To LrowW
If bed_in_use < 24 Then Exit For
If arrayX(i) = arrayW(r) Then
bed_in_use = bed_in_use - 1
Wait_L = Wait_L + 1
End If
Next r
Cells(i, "Y").Value = bed_in_use
Cells(i, "Z").Value = Wait_L
Next i
Dank. Wenn ich den Code kopiere, habe ich den Fehler "Benutzerdefinierter Typ nicht definiert". Gibt es irgendwelche Änderungen, die ich vor der Verwendung vornehmen sollte? – Zapata
@Hamidkh - Der obere Teil des Codes muss in seine eigene Klasse, nicht in ein Modul gehen. – Comintern
Geht der untere Teil des Codes zu dem Blatt, in dem die Daten gespeichert sind? Immer noch den gleichen Fehler. Vielen Dank. – Zapata