excel - 如何从代码行/特定代码行跳转/跳过
问题描述
当我在我的REVENUE ACCOUNTS
部分中生成一个值时,它会正常运行。当我在我的STOCK ACCOUNTS
部分中生成一个值时,它最终会与我的REVENUE ACCOUNTS
部分混合。当我在我的部分REVENUE ACCOUNTS
上输入值时,我如何跳过我的部分。喜欢。_STOCK ACCOUNTS
GENERAL CODE
STOCK ACCOUNTS
GENERAL CODE
Sub ValidateCode2()
Dim igc 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
Dim brandresult As String, prodresult As String
Dim i As Long
Dim wb As Workbook: Set wb = ThisWorkbook
sto = wb.Worksheets("Item Groups form").Range("C26").Value
cod = wb.Worksheets("Item Groups form").Range("C18").Value
rev = wb.Worksheets("Item Groups form").Range("C22").Value
dis = wb.Worksheets("Item Groups form").Range("F23").Value
cog = wb.Worksheets("Item Groups form").Range("F22").Value
brandlist = wb.Worksheets("Item Groups form").Range("C19").Value
prodlist = wb.Worksheets("Item Groups form").Range("D19").Value
'''FINISHED GOODS
'STOCK ACCOUNTS
For i = 2 To 13
If sto = wb.Worksheets("Validation").Range("B" & i).Value Then
codres = wb.Worksheets("Validation").Range("D" & i).Value
revres = wb.Worksheets("Validation").Range("E" & i).Value
cogres = wb.Worksheets("Validation").Range("F" & i).Value
disres = wb.Worksheets("Validation").Range("G" & i).Value
Next
'REVENUE ACCOUNTS
For i = 2 To 13
If rev = wb.Worksheets("Validation").Range("E" & i).Value Then
stores = wb.Worksheets("Validation").Range("B" & i).Value
codres = wb.Worksheets("Validation").Range("D" & i).Value
cogres = wb.Worksheets("Validation").Range("F" & i).Value
disres = wb.Worksheets("Validation").Range("G" & i).Value
Next
'''GENERAL CODE
'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 5000
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 = 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
wb.Worksheets("Item Groups form").Range("C26").Value = stores
End Sub
解决方案
嗨,您要使用的是语句中的GoTo
函数。IF
我把它塞在循环的第一个块的末尾FOR
,但听起来你想要它基于一个条件,但你可以看到GoTo
函数是如何工作的,所以你可以相应地调整它。
我还更改了您的 for 循环以消除冗余。
Sub ValidateCode2()
Dim igc 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
Dim brandresult As String, prodresult As String
Dim i As Long
Dim wb As Workbook: Set wb = ThisWorkbook
sto = wb.Worksheets("Item Groups form").Range("C26").Value
cod = wb.Worksheets("Item Groups form").Range("C18").Value
rev = wb.Worksheets("Item Groups form").Range("C22").Value
dis = wb.Worksheets("Item Groups form").Range("F23").Value
cog = wb.Worksheets("Item Groups form").Range("F22").Value
brandlist = wb.Worksheets("Item Groups form").Range("C19").Value
prodlist = wb.Worksheets("Item Groups form").Range("D19").Value
'''FINISHED GOODS
'STOCK ACCOUNTS
For i = 2 To 13
If sto = wb.Worksheets("Validation").Range("B" & i).Value Then
codres = wb.Worksheets("Validation").Range("D" & i).Value
revres = wb.Worksheets("Validation").Range("E" & i).Value
cogres = wb.Worksheets("Validation").Range("F" & i).Value
disres = wb.Worksheets("Validation").Range("G" & i).Value
Else:
GoTo RevenueAccounts 'You can make this part another if statement to fit your conditions.
Next
RevenueAccounts:
For i = 2 To 13
If rev = wb.Worksheets("Validation").Range("E" & i).Value Then
stores = wb.Worksheets("Validation").Range("B" & i).Value
codres = wb.Worksheets("Validation").Range("D" & i).Value
cogres = wb.Worksheets("Validation").Range("F" & i).Value
disres = wb.Worksheets("Validation").Range("G" & i).Value
Next
'''GENERAL CODE
'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 5000
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 = 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
wb.Worksheets("Item Groups form").Range("C26").Value = stores
End Sub
推荐阅读
- angular - Angular StackBlitz 错误:[NoSuchMethodError:找不到方法:'write$1' on null]
- java - 当 root == null 时,Java TreeMap put() 方法中 compare(key, key) 的目的是什么?
- python - 执行脚本时设置变量 __name__ 的值的可能性
- php - 在 PhpStorm 中使用 Xdebug 时,获取“调试会话已完成而没有暂停”并且不会停止执行
- node.js - 发出 POST 请求以更改用户密码时出错
- gcc - 使用 __auto_type 初始化 C 数组
- javascript - 使用 JavaScript 对 HTML 表进行数据类型不可知的排序
- pandas - 如何使用 MultiIndex 在数据框中选择一个值?
- spring-boot - 如何在关键的云基础设施中访问绑定到服务的 redis 共享 VM?
- docker - 运行 docker-compose up 时如何运行多个 docker 容器(gitlab-ci)