excel - 为什么我的 GoTo 功能无法正常工作
问题描述
我的 GoTo 不是跳到 Reve: 上,而是跳到 Gen: 上。我不知道为什么它不起作用。问题是当我在单元格 C22 中输入 41010020 时,它只会清除在 Reve: 中调用的单元格。它不会继续 Reve:。我认为我的代码中的逻辑是正确的,但我不知道为什么它不起作用。
Sub ValidateCode2()
Dim sto As String, cod As String, rev As String, cog As String, dis As String, brandlist As String, prodlist As String
Dim codres As String, revres As String, cogres As String, disres As String, stores As String
Dim brandresult As String, prodresult As String
Dim i As Long, x As Long
Dim wb As Workbook: Set wb = ThisWorkbook
sto = wb.Worksheets("Item Groups form").Range("C26").Value
cog = wb.Worksheets("Item Groups form").Range("F22").Value
rev = wb.Worksheets("Item Groups form").Range("C22").Value
dis = wb.Worksheets("Item Groups form").Range("F23").Value
cod = wb.Worksheets("Item Groups form").Range("C18").Value
brandlist = wb.Worksheets("Item Groups form").Range("C19").Value
prodlist = wb.Worksheets("Item Groups form").Range("D19").Value
If wb.Worksheets("Item Groups form").Range("C22").Value = 41010020 Then GoTo Reve Else
For i = 2 To 13
If sto = wb.Worksheets("Validation").Range("B" & i).Value Then codres = wb.Worksheets("Validation").Range("D" & i).Value
Next
For i = 2 To 13
If sto = wb.Worksheets("Validation").Range("B" & i).Value Then revres = wb.Worksheets("Validation").Range("E" & i).Value
Next
For i = 2 To 13
If sto = wb.Worksheets("Validation").Range("B" & i).Value Then cogres = wb.Worksheets("Validation").Range("F" & i).Value
Next
For i = 2 To 13
If sto = wb.Worksheets("Validation").Range("B" & i).Value Then disres = wb.Worksheets("Validation").Range("G" & i).Value
Next
'Brand
For i = 2 To 5000
If brandlist = wb.Worksheets("Validation").Range("P" & i).Value Then brandresult = wb.Worksheets("Validation").Range("Q" & i).Value
Next
'Product
For i = 2 To 32
If prodlist = wb.Worksheets("Validation").Range("U" & i).Value Then prodresult = wb.Worksheets("Validation").Range("V" & i).Value
Next
GoTo Gen
Reve:
'Brand
For i = 2 To 5000
If brandlist = wb.Worksheets("Validation").Range("P" & i).Value Then brandresult = wb.Worksheets("Validation").Range("Q" & i).Value
Next
'Product
For i = 2 To 32
If prodlist = wb.Worksheets("Validation").Range("U" & i).Value Then prodresult = wb.Worksheets("Validation").Range("V" & i).Value
Next
wb.Worksheets("Item Groups form").Range("C18").Value = wb.Worksheets("Validation").Range("D3").Value + prodresult + brandresult
wb.Worksheets("Item Groups form").Range("C22").Value = wb.Worksheets("Validation").Range("E3").Value
wb.Worksheets("Item Groups form").Range("F22").Value = wb.Worksheets("Validation").Range("F3").Value
wb.Worksheets("Item Groups form").Range("F23").Value = wb.Worksheets("Validation").Range("G3").Value
wb.Worksheets("Item Groups form").Range("C26").Value = wb.Worksheets("Validation").Range("B3").Value
Gen:
wb.Worksheets("Item Groups form").Range("C18").Value = codres + prodresult + brandresult
wb.Worksheets("Item Groups form").Range("C22").Value = revres
wb.Worksheets("Item Groups form").Range("F22").Value = cogres
wb.Worksheets("Item Groups form").Range("F23").Value = disres
End Sub
解决方案
我建议你看看 BigBen 对意大利面条代码的评论,因为有了这种结构,它很快就会变得令人毛骨悚然......
我认为您遇到的问题可以追溯到 IF THEN 结构。
您需要像这样在几行中重写它:
If wb.Worksheets("Item Groups form").Range("C22").Value = 41010020 Then
GoTo Reve
Else
...
End if
否则它会产生一个错误代码......你得到一个错误代码吗?
推荐阅读
- python - Legend displayed only for a subset of curves in plot
- node.js - How to run testcafe via node
- awk - add special characters in a text using awk
- angular - angular 6 return result of forkJoin subscribe (rxJs 6)
- database - 如何使用带有过滤器的laravel分页
- android-fragments - 我无法将 searchView 与多个片段一起使用
- dart - Flutter how to send multiple files to http post
- xml - XSLT - 在 for-each 循环中检查两个节点是否相等
- scala - 如何通过列上的组合并行化 apache spark 中数据帧的处理
- python - 如何在 Python 中找到 5 个变量的中位数?