我是初学者,正尝试做一个随机的单元格选择器。
我在A列中有一个名称列表-在1到10单元格中。
我在工作表上有一个按钮-按下该按钮时,应在列表中随机选择1个名称,并将其设置为另一种颜色
答案 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,但感谢这个话题,它对我有所帮助。