Meine Frage aktualisiert. Ich lege ein Flussdiagramm und Screenshots meiner Blätter, damit ihr es besser verstehen könnt.Warum reagiert mein Excel nicht mehr, wenn ich versuche, meinen VBA-Code auszuführen?
Wenn ich anfangen, dies zu laufen, Excel reagiert nicht mehr. Ich kann nicht finden, wo der Fehler ist. Ich hoffe, dass jemand helfen kann! Ich recherchierte über VBA-Codes, aber ich denke, etwas fehlt noch?
Sub F110Loop()
Dim x As Integer 'current amount
Dim y As Integer
Dim d As Double 'delta between Disbursement date and Cheque Release date
Dim Current As Integer
Dim Least As Integer
Dim Dis As Worksheet
Dim Cheque As Worksheet
Dim wb As Workbook
Set wb = ThisWorkbook
Set Dis = wb.Sheets("Disbursements")
Set Cheque = wb.Sheets("Cheque Info")
wb.Activate
For x = 4 To 600
Do While Dis.Cells(x, 9).Value > 1
'IF same amount, get row number to get corresponding date, reference that date
For y = 3 To 600
If Dis.Cells(x, 6).Value = Cheque.Cells(y, 5).Value Then
'THEN get delta
Current = Dis.Cells(x, 4).Value -Cheque.Cells(y, 2)
'IF current is less than the least delta
ElseIf Current < Least Then
'THEN update new value of delta
Current = Least
Else
'copy paste the date (from the least delta row)
Cheque.Cells(y, 2).Copy Destination:=Dis.Cells(x, 8)
End If
Next y
Loop
Next x
End Sub
Können Sie einige Informationen bringen über die Daten in den Zellen? Dies liegt möglicherweise daran, dass Excel VBA nur über eine begrenzte Arbeitsspeicherkapazität verfügt, sodass große Arbeitsblätter bei der Schleifenbildung dazu führen können, dass der Arbeitsspeicher reagiert. – McBoman
Was soll diese Linie tun? 'Dis.Cells (x, 4) .Wert -Cheque.Cells (y, 2) = Current' – arcadeprecinct
Zusätzlich zu dem, was @CharlesWilliams bereits erwähnt hat, sollten Sie ein paar Zeilen wiederholen: (1)' Dis.Cells (x, 4) .Wert -Cheque.Cells (y, 2) = Current'. Ich glaube, das sollte "Current = Dis.Cells (x, 4) .Value - Cheque.Cells (y, 2) .Value" sein. Außerdem wird (2) die Zeile'ElseIf Current
Ralph