我的问题在于我的vba程序,而且我也是新手。问题是当我开始在我的宏中使用Do ...循环功能时,宏和Excel文档停止工作/运行。它冻结了。为什么会这样?我希望你能帮我解决这个问题。
Dim GesamtPreis As Double
Dim EndFirst As Boolean
Dim w As Integer
Application.ScreenUpdating = False
EndFirst = False
GesamtPreis = 0
k = Worksheets(Angebotserstellung).Cells(Rows.Count, KTeil).End(xlUp).Row
p = 0
For j = 13 To k
If Worksheets(Angebotserstellung).Cells(j, 7).Value = "SUMME (System 1)" Then
EndFirst = True
'###########################
'hier Summe Preis EK & VK & Marge für System 1 einfügen
Worksheets(Angebotserstellung).Cells(j, KPreisEK).FormulaLocal = "=SUMME($J$13:$J$" & CStr(j - 2) & ")"
Worksheets(Angebotserstellung).Cells(j, KPreisVK).FormulaLocal = "=AUFRUNDEN(SUMME($" & CPreisVK & "13:$" & CPreisVK & p + 12 & ");$I$6)"
Worksheets(Angebotserstellung).Cells(j, KMarge).FormulaLocal = "=$" & CPreisVK & j & "-$" & CPreisEK & j
AnzSys1 = j - 14 'Anzahl für System 1
If AnzSys1 = 0 Then 'wenn kein Baueteil für System 1 ausgewählt, dann alles loschen.
Worksheets(Angebotserstellung).Cells(j, 7).Value = ""
Worksheets(Angebotserstellung).Cells(j, KPreisEK).Value = ""
Worksheets(Angebotserstellung).Cells(j, KPreisVK).Value = ""
Worksheets(Angebotserstellung).Cells(j, KMarge).Value = ""
For i = j - 3 To j - 2
Worksheets(Angebotserstellung).Cells(i, KSichtbar).Value = ""
Worksheets(Angebotserstellung).Cells(i, KAnzahl).Value = ""
Worksheets(Angebotserstellung).Cells(i, KTeil).Value = ""
Worksheets(Angebotserstellung).Cells(i, KListpreis).Value = ""
Worksheets(Angebotserstellung).Cells(i, KRabattEK).Value = ""
Worksheets(Angebotserstellung).Cells(i, KPreisEK).Value = ""
Worksheets(Angebotserstellung).Cells(i, KAufschlag).Value = ""
Worksheets(Angebotserstellung).Cells(i, KRabattVK).Value = ""
Worksheets(Angebotserstellung).Cells(i, KPreisVK).Value = ""
Worksheets(Angebotserstellung).Cells(i, KMarge).Value = ""
Worksheets(Angebotserstellung).Cells(i, KKomment).Value = ""
Next
End If
ElseIf IsNumeric(Worksheets(Angebotserstellung).Cells(j, 8)) And Not Worksheets(Angebotserstellung).Cells(j, 8).Value = "" Then
Worksheets(Angebotserstellung).Cells(j, KPreisEK).FormulaLocal = "=$" & CAnzahl & j & "*($" & CListpreis & j & "*(1-$" & CRabattEK & j & "))"
If EndFirst = False Then
Worksheets(Angebotserstellung).Cells(j, KPreisVK).FormulaLocal = "=AUFRUNDEN((($" & CAnzahl & j & "*$" & CListpreis & j & "*(1-$" & CRabattEK & j & "))*((1+$" & CAufschlag & j & ")))*((1-$" & CRabattVK & j & "));0)"
Else
Worksheets(Angebotserstellung).Cells(j, KPreisVK).FormulaLocal = "=AUFRUNDEN((($" & CAnzahl & j & "*$" & CListpreis & j & "*(1-$" & CRabattEK & j & "))*((1+$" & CAufschlag & j & ")))*((1-$" & CRabattVK & j & "));$J$6)"
End If
Worksheets(Angebotserstellung).Cells(j, KMarge).FormulaLocal = "=$" & CPreisVK & j & "-$" & CPreisEK & j
If Worksheets(Angebotserstellung).Cells(j, KSichtbar).Value = "option nein" Then ' <--- WHEN I PUT THIS CODE, THE PROGRAM DOESN'T RUN ANYMORE.. IT FREEZING. I CAN'T
w = j ' DO ANYTHING ON MACRO OR ON EXCEL. IT STOP FUNCTIONING.
Do Until Worksheets(Angebotserstellung).Cells(j, KSichtbar).Value = "option"
If Worksheets(Angebotserstellung).Cells(j - 1, KSichtbar).Value = "option" Then
Worksheets(Angebotserstellung).Cells(j - 1, KPreisEK).FormulaLocal = "=$" & CAnzahl & w & "*($" & CListpreis & w & "*(1-$" & CRabattEK & w & "))" & "+$" & CAnzahl & j - 1 & "*($" & CListpreis & j - 1 & "*(1-$" & CRabattEK & j - 1 & "))"
j = j - 1
Else
j = j - 1
End If
Loop
End If
If EndFirst = False Then
p = p + 1
End If
End If
Next
Application.ScreenUpdating = TRUE
我唯一的问题是在Do ... Loop功能。我试图将Do..Loop函数放在ElseIf之外,但它也不起作用。我的错误究竟在哪里?