【发布时间】:2019-04-11 20:41:03
【问题描述】:
我正在阅读其他人编写的一些 VBA 代码,但我无法理解其背后的逻辑:
Sheets("IC View").Select
RowCount = Cells(Rows.Count, 1).End(xlUp).Row
If RowCount <= 9 Then GoTo skipNoChange
'Sheets("IC View").Select
Range("A1:BG1").EntireColumn.Hidden = False
Range(Cells(10, "A"), Cells(LastRowIC,
"BG")).SpecialCells(xlCellTypeVisible).Copy
Worksheets("IC Log").Select
nextRowLog = Cells(Rows.Count, 1).End(xlUp).Row + 1
Range("A" & nextRowLog).PasteSpecial xlPasteValues
Application.CutCopyMode = False
skipNoChange:
Sheets("IC View").Select
zeroCheck = 2 'start at column 3
Do While Cells(9, zeroCheck + 1).value <> "Checked_By"
If Cells(9, zeroCheck + 1).value = "" Then Columns(zeroCheck +
1).EntireColumn.Hidden = True
If Cells(9, zeroCheck + 1).value <> "" Then Columns(zeroCheck +
1).EntireColumn.Hidden = False
zeroCheck = zeroCheck + 1
Loop
'==================================
Call checkFreesaleChanges
因此,如果行数小于或等于 9,那么我知道它需要转到“SkipNoChange”,但“SkipNoChange”在哪里结束?它是否以“zeroCheck ... Loop”结束,然后转到“Call checkFreesaleChanges”?
如果行数大于 9 会怎样?它是否继续执行代码但不运行'skipNoChange:...Loop'之间的位但确实运行CallcheckFreesaleChanges?
【问题讨论】:
-
但是 'SkipNoChange 在哪里结束? 它没有。我建议您使用 if then... end if 在我看来它使代码更易于阅读
-
@Andreas 我只是想了解代码中发生了什么,因为我无法在不知道逻辑的情况下更改它。 'skipNoChange' 肯定会在某个地方结束,因为如果行数大于 9,那么需要有一些行(与 skipNoChange 相关)没有运行?
-
没有。如果行数超过 9,您对编译器说 “跳过所有这些,然后从那里正常恢复。”。没有尽头。这就像告诉某人走那个方向。
-
@andreas 跳过所有内容?并从哪里恢复? ..现在只是阅读你的答案:)
-
目前的逻辑就是:如果rowcount
标签: excel vba loops if-statement