使用VBA RND函数生成随机数

Excel VBA随机数

在vba中生成随机数 我们有一个内置函数叫做 RND。它只需要一个参数一个数字来生成随机数,这也是一个可选参数。它将创建大于0且小于1的随机数。

这与excel函数“ RAND”完全相同。正如我在工作表函数“ RAND”中告诉的那样,在VBA中,我们也可以生成大于0但小于1的随机数。

现在看一下“ RND”功能的语法。

[数字]: 我们可以通过三种方式传递论点。

  • 如果我们将数字设为<0,则每次都会生成相同的随机数。
  • 如果我们将数字传递为0,它将重复它给出的最新数字。
  • 如果我们传递的数字> 0,它将继续为您提供不同的随机数,即序列中的下一个随机数。

如何使用VBA代码生成随机数?

您可以在此处下载此VBA随机数Excel模板– VBA随机数Excel模板

范例#1

现在我们将看到使用“ RND”功能的简单示例。请按照以下步骤自行编写VBA代码。

步骤1: 将变量声明为 VBA中的“整数”

代码:

 Sub Rnd_Example1()Dim K作为整数结束Sub 

第2步: 现在,通过“RND“ 功能。

代码:

 Sub Rnd_Example1()Dim K作为整数K = Rnd()End Sub 

第三步: 在变量中显示变量“ k”返回的值。 留言框.

代码:

 Sub Rnd_Example1()Dim K作为整数K = Rnd()MsgBox K End Sub 

现在运行excel宏,看看结果如何。

看发生了什么事。

结果显示为1,其中“ RND”函数只能返回大于零但小于1的数字。

您必须考虑这里出了什么问题。

这是我们分配给变量“ k”的数据类型的错误之处。

如果回头看一下我们已经声明的变量,我们将数据类型分配为Integer。由于我们已将变量分配为Integer,因此它只能显示-32768到32767之间的整数。

只要RND返回十进制数字,VBA就会将十进制数字转换为最接近的整数,即1。

因此,为使公式正常工作,请将变量声明为“双倍的”.

“双精度”是VBA中的数据类型,可以保存十进制值。

代码:

 Sub Rnd_Example1()Dim K作为Double K = Rnd()MsgBox K End Sub 

现在的代码,看看结果是什么。

单击确定,再运行一次,看看结果如何。

这次我们得到了不同的结果。由于“ RND”本质上是易失性函数,因此每次执行代码时都会产生不同的结果。

例2 –每次都获得相同的随机数

如我们所见,前面的示例“ RND”函数每次执行代码时都会重现结果。为了获得相同的随机数,我们需要一次又一次地将参数传递为零。

代码:

 Sub Rnd_Example2()Dim K作为Double K = Rnd(0)MsgBox K End Sub 

当我们执行代码时,这将一次又一次产生相同的数字。

Example#3 –产生整个随机数

我们还可以通过使用其他VBA函数或其他输入数字来生成整数。例如,请看下面的代码。

代码:

 Sub Rnd_Example3()Dim K为Double K = 1 + Rnd * 100 MsgBox K End Sub 

每次执行该代码时,该代码都会生成带有小数点的随机整数。

如果您查看的是不带小数点的整数,那么我们可以使用以下代码。

代码:

 Sub Rnd_Example3()Dim K作为Double K = CInt(1 + Rnd * 100)MsgBox K End Sub 

这将继续生成从1到100的整数。