关于 Excel 中的 VBA 的快速且相对简单的问题。我正在编写第一个嵌套循环,并且遇到了第二个增量覆盖第一个增量的问题。代码如下:
Sub RandNumRang()
Dim i As Integer, Row As Integer, Col As Integer
Dim j As Integer
Dim LastRow As Long
Dim NoRows As Integer
Dim MinNum As Double, MaxNum As Double
Dim NumFormula As String
Col = 1 'Write random numbers on Column A
'Get the range and number of random values needed
For j = 3 To 4
NoRows = ActiveSheet.Range("G" & j).Value 'No of random values needed
MinNum = ActiveSheet.Range("E" & j).Value 'Min Range
MaxNum = ActiveSheet.Range("F" & j).Value 'Max Range
NumFormula = "=RANDBETWEEN(" & MinNum & "," & MaxNum & ")" 'Generate between Range
i = 0
For Row = 2 To NoRows + 1
i = i + 1
ActiveSheet.Cells(Row, Col).Value = i 'ID
ActiveSheet.Cells(Row, Col + 1).Formula = NumFormula 'Random Value
ActiveSheet.Cells(Row, Col + 2).FormulaR1C1 = "=TIME(0,0,RC[-1])" 'Convert to time
Next Row
Next j
End Sub
我正在尝试生成一组随机时间间隔。该代码完全按照我想要的方式执行,只是我的值被覆盖了。 j 循环最终将有超过 2 个增量,但无论如何,此代码将具有相同的覆盖问题。我很确定这与我指定有关
For Row=2 To NoRows + 1
作为嵌套循环的起点,但这又是我第一次运行 VBA 脚本,我想我应该伸出援手,因为我尝试过的每个修复都失败了。提前致谢,如果您需要更多详细信息,请告诉我。
另外,我附上了工作表的屏幕截图以供引用:
最佳答案
据我所知,它的表现符合预期。您设置:
Col = 1
这对于两个循环都保持相同。那么你就有了:
For Row = 2 To NoRows + 1
因此,在第二个循环中,您始终会从第 2 行、第 1 列开始,因此它始终会被覆盖。
您需要在第二次迭代中将 Col 设置为 4(或 5),或者跟踪您在行中的位置并附加到末尾,
关于loops - VBA:第二个循环覆盖第一个循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20859908/