loops - VBA:第二个循环覆盖第一个循环

标签 loops excel vba

关于 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 脚本,我想我应该伸出援手,因为我尝试过的每个修复都失败了。提前致谢,如果您需要更多详细信息,请告诉我。

另外,我附上了工作表的屏幕截图以供引用:

enter image description here

最佳答案

据我所知,它的表现符合预期。您设置:

 Col = 1

这对于两个循环都保持相同。那么你就有了:

For Row = 2 To NoRows + 1

因此,在第二个循环中,您始终会从第 2 行、第 1 列开始,因此它始终会被覆盖。

您需要在第二次迭代中将 Col 设置为 4(或 5),或者跟踪您在行中的位置并附加到末尾,

关于loops - VBA:第二个循环覆盖第一个循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20859908/

相关文章:

R data.table 从剪贴板读取

ms-access - 获取当前 VBA 函数的名称

筛选两列并提取数据的Excel VBA代码

php - 使用 CLI 每秒运行一个 PHP 脚本

excel - 通过VBA在Excel列表对象/表中添加/修改/删除计算列公式

Python:同时两个循环

vba - 使用 VBA Excel 函数获取背景颜色

vba - 在 Excel VBA 中创建文件夹时找不到路径

c - 试图编写一个整数比较方法,但它不起作用

python - 这个循环会执行多少次?