在a到b之间生成一个随机数

问题描述 投票:0回答:3

我知道Excel单元格中的RANDBETWEEN()函数。这只返回一(1)个值。我希望将其分配给按钮,以便在每次按下按钮时返回不同的值。

我可以创建按钮,我有单元格。我如何链接这两个?

长话短说,每次单击按钮时,单元格(比如单元格a1)在值a到b之间获得不同的值。

excel vba button random
3个回答
0
投票

如果您仍在使用RANDBETWEEN函数并且只是希望它在命令上生成新值,只需按F9强制Excel重新计算所有公式。然后RANDBETWEEN将生成一个新的随机数。 (如果它没有改变值,那只是因为它偶然产生了相同的随机数。继续按F9得到新的随机数。)

请注意,更改电子表格中的任何公式也会导致RANDBETWEEN函数生成新值。

如果您希望仅在命令时生成新的随机数,则需要创建一个宏,可以通过按钮轻松调用。我假设你根本不熟悉宏,所以以下是一个简单的解决方案。

以下网站介绍了如何创建一个运行宏的简单按钮。 (请注意,此特定方法仅适用于ActiveX按钮,而不适用于“表单”按钮。)

https://www.tutorialspoint.com/vba/vba_excel_macros.htm

您只需要使用以下代码替换其示例中的代码(MsgBox“Hi”):

Range("A1") = WorksheetFunction.RandBetween(a,b)

将a和b替换为要在其间获得随机数的数字。你可以通过以下几种方式做到这一点

如果你总是想要它在相同的两个数字(例如1和10)之间,你可以将它们硬编码到宏中:

Range("A1") = WorksheetFunction.RandBetween(1,10)

如果您想在同一电子表格中记录的两个数字之间(例如在单元格B1和B2中),您可以参考单元格:

Range("A1") = WorksheetFunction.RandBetween(Range("B1"),Range("B2"))

或者您可以在弹出窗口中询问数字:

a = InputBox("Enter a")
b = InputBox("Enter b")
Range("A1") = WorksheetFunction.RandBetween(a, b)

请注意,该网站错过了在按钮可以使用之前必须执行的几个重要步骤:

  1. 关闭VBA窗口(实际上不是必需的,但不需要将其打开)
  2. 退出设计模式。在Excel的“开发工具”选项卡上,仍应突出显示“设计模式”按钮。单击它以取消突出显示它。您现在可以单击按钮。

请注意,如果要再次更改按钮的代码,则需要再次单击“设计模式”以再次突出显示该按钮,然后双击该按钮以再次查看代码。


2
投票

试试以下

Private Sub CreateRandom()

  'random number between 11 and 100
  Debug.Print NewRandom(11, 100)

End Sub

Private Function NewRandom(ByVal FromLimit As Integer, ByVal ToLimit As Integer) As Integer

    Randomize
    randomNumber = Int((ToLimit - FromLimit) * Rnd) + FromLimit
    NewRandom = randomNumber

End Function

Private Sub CommandButton1_Click()

  'random number between 30 and 100
  Sheets("Sheet2").Range("A1").Value = NewRandom(30, 100)

End Sub

1
投票

MI Consol:

Sheets:
Private Sub CommandButton1_Click()
Call p
End Sub

Private Sub CommandButton3_Click()
Call save
End Sub

Private Sub CommandButton4_Click()
Call EMail
End Sub

Private Sub CommandButton5_Click()
Call iSMS
End Sub

Private Sub CommandButton6_Click()
Call continue
End Sub

Private Sub CommandButton7_Click()
Call Continue1
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.