Excel VBA-从范围中选择一个随机单元格(按钮)

时间:2018-09-06 07:10:19

标签: excel vba random

我是初学者,正尝试做一个随机的单元格选择器。

我在A列中有一个名称列表-在1到10单元格中。

我在工作表上有一个按钮-按下该按钮时,应在列表中随机选择1个名称,并将其设置为另一种颜色

enter image description here 有什么办法可以帮助我吗?

3 个答案:

答案 0 :(得分:0)

您可以使用RandBetween工作表功能。它将生成一个1到10之间的数字,并使用该数字选择A1:A10范围内的单元格。下面的示例在工作表中使用ActiveX命令按钮。

Option Explicit
Private Sub CommandButton1_Click()
    With ThisWorkbook.Worksheets("Sheet1").Range("A1:A10") '<==change to your sheet with data and button
        .ClearFormats
        .Cells(Application.WorksheetFunction.RandBetween(1, 10)).Interior.Color = vbRed
    End With
End Sub

如果您想利用Randomize进行种子设置,则可以使用以下重写。功能的来源是wellsr.com(我略有改编)。

Option Explicit
Private Sub CommandButton1_Click()
    With ThisWorkbook.Worksheets("Sheet1").Range("A1:A10")
        .ClearFormats
        .Cells(RndBetween(1, 10)).Interior.Color = vbRed
    End With
End Sub

Public Function RndBetween(ByVal Low, ByVal High) As Integer
   Randomize
   RndBetween = Int((High - Low + 1) * Rnd + Low)
End Function

答案 1 :(得分:0)

您去哪里

Sub random()

Dim ColumnA As Long
Dim StartRow As Long
Dim HeaderRow As Long
Dim LastRow As Long

ColumnA = 1
HeaderRow = 1  'this is redundant but to show you if you have header then your start row is 2
StartRow = 2
LastRow = Cells(Rows.Count, 1).End(xlUp).Row

Range(Cells(StartRow , ColumnA), Cells(LastRow, ColumnA)).Interior.Color = xlNone 'remove this line if you dont need resetting


Dim randomNum As Long
randomNum = WorksheetFunction.RandBetween(StartRow, LastRow)
Cells(randomNum, ColumnA).Interior.Color = RGB(255, 0, 0)
Cells(randomNum, ColumnA).Select



End Sub

答案 2 :(得分:0)

一段时间以来,我一直在考虑选择随机单元算法,现在我找到了一个主意。 尚未编写代码,但我的想法是这样的:

x=randbetween(1:4) ---如果我们的随机像元来源位于a1到a4之间 来源(您将要写入此随机单元的位置)= "a1:a"&x

现在的想法只是这样。我不在乎用确切的vb代码编写它,但是我认为您可以理解我的意思。 现在,我不得不思考一种不选择以前选择的方法的方法,也许删除选择的单元格而不选择空白单元格,idk,但感谢这个话题,它对我有所帮助。