簡體   English   中英

我不斷收到一條錯誤消息“編譯錯誤:沒有下一步”

[英]I keep getting an error that says "Compile error: For without Next"

大家好。 我是 VBA 新手,我不斷收到一條錯誤消息,提示“編譯錯誤:沒有下一步”

Sub Aplhabetical_Testing()

Dim ws As Worksheet
Dim ticker As String
Dim vol As Integer
Dim year_open As Double
Dim year_close As Double
Dim yearly_change As Double
Dim percent_change As Double
Dim total_stock_volume As Double


    For Each ws In Worksheet

        ws.Range("I1").Value = "Ticker"
        ws.Range("J1").Value = "Yearly Change"
        ws.Range("K1").Value = "Percent Change"
        ws.Range("L1").Value = "Total Stock Volume"
        
        ws.Range("P1").Value = "Ticker"
        ws.Range("Q1").Value = "Value"
        ws.Range("O2").Value = "Greatest % Increase"
        ws.Range("O3").Value = "Greatest % Decrease"
        ws.Range("O4").Value = "Greatest Total Volume"


    For i = 2 To RowCount
    j = 0
    total = 0
    Change = 0
    Start = 2
    
    
         If Cells(i + 1, 1).Value <> Cells(i, 7).Value Then
            total = total + Cells(i, 7).Value
                    Range("I" & 2 + j).Value = Cells(i, 1).Value
                    Range("j" & 2 + j).Value = 0
                    Range("K" & 2 + j).Value = "%" & 0
                    Range("L" & 2 + j).Value = 0
        Else
            If Cells(Start, 3) = 0 Then
                For find_value = Start To i
                    If Cells(find_value, 3).Value <> 0 Then
                            Start = find_value
                            Exit For
                        End If
                    Next find_value
End If

                
                Change = (Cells(i, 6) - Cells(Start, 3))
                percentChange = Round((Change / Cells(Start, 3) * 100), 2)
                Start = i + 1
                
                Range("I" & 2 + j).Value = Cells(i, 1).Value
                Range("j" & 2 + j).Value = Round(Change, 2)
                Range("K" & 2 + j).Value = "%" & percentChange
                Range("L" & 2 + j).Value = total
                
                Select Case Change
                    Case Is > 0
                        Range("j" & 2 + j).Interior.ColorIndex = 4
                    Case Is < 0
                        Range("j" & 2 + j).Interior.ColorIndex = 3
                    Case Else
                        Range("j" & 2 + j).Interior.ColorIndex = 0
                    End Select
      End If
      
      
 
          
          
End Sub

VBA 中有許多語句必須正確終止。 例如,

Sub / End Sub、Function / End Function、If / End If。 With / End With, 或 Enum / End Enum

為了更好的代碼可讀性,語句和End之間的所有內容都應該縮進,如下所示:-

Sub MySub()
    ' Here is my code
End Sub

或者

If 1 < 2 Then
    ' Here is what to do in that case
End If

For / NextDo / Loop 的工作方式完全相同。 例如,

For i = 1 to 10
    ' code to be executed *i* times
Next i

這些概念可以嵌套。 這是一個例子。

Private Sub MySub()
    Dim i As Integer
    For i = 1 to 10
        If i = 5 then
            Debug.Print "Half done"
        End if
    Next i
End Sub

你錯過了兩個下一個:

Sub Aplhabetical_Testing()

    Dim ws As Worksheet
    Dim ticker As String
    Dim vol As Integer
    Dim year_open As Double
    Dim year_close As Double
    Dim yearly_change As Double
    Dim percent_change As Double
    Dim total_stock_volume As Double

    For Each ws In Worksheet    ' Worksheets?
        ws.Range("I1").Value = "Ticker"
        ws.Range("J1").Value = "Yearly Change"
        ws.Range("K1").Value = "Percent Change"
        ws.Range("L1").Value = "Total Stock Volume"
        
        ws.Range("P1").Value = "Ticker"
        ws.Range("Q1").Value = "Value"
        ws.Range("O2").Value = "Greatest % Increase"
        ws.Range("O3").Value = "Greatest % Decrease"
        ws.Range("O4").Value = "Greatest Total Volume"

        For i = 2 To RowCount
            j = 0
            total = 0
            Change = 0
            Start = 2
    
            If Cells(i + 1, 1).Value <> Cells(i, 7).Value Then
                total = total + Cells(i, 7).Value
                Range("I" & 2 + j).Value = Cells(i, 1).Value
                Range("j" & 2 + j).Value = 0
                Range("K" & 2 + j).Value = "%" & 0
                Range("L" & 2 + j).Value = 0
            Else
                If Cells(Start, 3) = 0 Then
                    For find_value = Start To i
                        If Cells(find_value, 3).Value <> 0 Then
                            Start = find_value
                            Exit For
                        End If
                    Next find_value
                End If
                
                Change = (Cells(i, 6) - Cells(Start, 3))
                percentChange = Round((Change / Cells(Start, 3) * 100), 2)
                Start = i + 1
                
                Range("I" & 2 + j).Value = Cells(i, 1).Value
                Range("j" & 2 + j).Value = Round(Change, 2)
                Range("K" & 2 + j).Value = "%" & percentChange
                Range("L" & 2 + j).Value = total
                
                Select Case Change
                    Case Is > 0
                        Range("j" & 2 + j).Interior.ColorIndex = 4
                    Case Is < 0
                        Range("j" & 2 + j).Interior.ColorIndex = 3
                    Case Else
                        Range("j" & 2 + j).Interior.ColorIndex = 0
                End Select
            End If 
        ' Missing Next
        Next
    ' Missing Next
    Next

End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM