Excel VBA:使用Do..Loop函数

时间:2015-06-25 10:08:28

标签: excel vba excel-vba do-loops

我的问题在于我的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之外,但它也不起作用。我的错误究竟在哪里?

0 个答案:

没有答案