在VBA中为生成的数字创建记录

时间:2019-03-19 18:12:06

标签: excel vba

我正在构建一个Excel工作表来帮助我进行教学。

我的目标是一张纸来创建两个随机数,计算它们的算术平均值和几何平均值,然后进行比较。我已经完成了这一部分。

我创建了一个宏和两个函数,这些函数生成随机数,然后将数字输入到所需的单元格中:

Sheets("Sheet1").Range("L1").Value = NewRandom()

Sheets("Sheet1").Range("M1").Value = NewRandom2()

我创建了一个执行宏的按钮。

如何在同一张纸上的指定区域U7:V200中记录我所生成的内容?

我的目标:第一次单击按钮时,两个生成的数字将分别记录在U7和V7上。第二次单击时,将在U8和V8上记录两个生成的数字,依此类推。

2 个答案:

答案 0 :(得分:2)

这只是找到最后一行并粘贴到它的问题...

dim lr as long
lr = cells(rows.count,"U").end(xlup).row
cells(lr+1,"U").value = randomnumber1
cells(lr+1,"V").value = randomnumber2

假设您总是将U / V配对在一起,那么只需要最后一行即可

答案 1 :(得分:2)

下面的子例程将基于工作表的“ U”列查找下一个空行。 XLROW表示您要在其中开始搜索空行的行。 找到空行后,传递给子例程的两个随机值将输入到第一个可用的空行中。

请确保将“ Sheet1”更改为在excel中使用的工作表的名称(如果有的话)。

Public Sub NEXTEMPTY(VAL1 As Integer, VAL2 As Integer)
Dim XLROW As Integer
XLROW = 7
Do Until Sheet1.Range("U" & XLROW) = ""
    XLROW = XLROW + 1
Loop
Sheet1.Range("U" & XLROW).Value = VAL1
Sheet1.Range("V" & XLROW).Value = VAL2
End Sub

然后,您可以在任何想要使用的地方调用子弹

Call NEXTEMPTY(RANDOM1, RANDOM2)

编辑:您也可以在“直到”中使用它。这是更可取的。

Do Until IsEmpty(Sheet1.Range("U" & XLROW))