Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 4023|回复: 13

[已解决]VBA用两个Inputbox输出随机数要用rand函数来写

[复制链接]
发表于 2016-6-15 22:50 | 显示全部楼层 |阅读模式
VBA用两个Inputbox输出随机数要用rand函数来写



1,VBA用两个Inputbox输出行列,  第一个输入行数    第二个输入列数

  得到单元格区域,用来存放随机数


2,随机数范围1至99,全部正整数        一定要用rand函数来写


3,为保输出美观,1至9前面要加个0,显示输出01至09

最佳答案
2016-6-16 12:53
看看行不行
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2016-6-16 07:54 | 显示全部楼层
用用户窗体来做既美观又直观!
为何不考虑呢??
回复

使用道具 举报

发表于 2016-6-16 08:55 | 显示全部楼层
本帖最后由 老司机带带我 于 2016-6-16 09:02 编辑

VBA中用不了rand,所以只能变通的先生成公式然后在复制为数值了!也算是用了rand函数吧!
  1. Sub xx()
  2.     Dim str$, arr
  3.     str = Application.InputBox("请输入产生的行列,用逗号隔开,且逗号为英文状态下:", "输入提示")
  4.     arr = Split(str, ",")
  5.     If arr(0) * 1 < 1 Then
  6.         MsgBox "行号不能小于等于零"
  7.         Exit Sub
  8.     End If
  9.     If arr(1) * 1 < 1 Then
  10.         MsgBox "列号不能小于等于零"
  11.         Exit Sub
  12.     End If
  13.     Cells(arr(0) * 1, arr(1) * 1) = "=int(rand()*99)+1"
  14.     Cells(arr(0) * 1, arr(1) * 1).Value = Cells(arr(0) * 1, arr(1) * 1).Value
  15.     Cells(arr(0) * 1, arr(1) * 1).NumberFormatLocal = "00"
  16. End Sub
复制代码
两个inputbox:
  1. Sub xx()
  2.     Dim str$, c&, r&
  3.     r = Application.InputBox("请输入产生的行号:", "输入提示")
  4.     c = Application.InputBox("请输入产生的列号:", "输入提示")
  5.     If r < 1 Then
  6.         MsgBox "行号不能小于等于零"
  7.         Exit Sub
  8.     End If
  9.     If c < 1 Then
  10.         MsgBox "列号不能小于等于零"
  11.         Exit Sub
  12.     End If
  13.     Cells(c, r) = "=int(rand()*99)+1"
  14.     Cells(c, r).Value = Cells(c, r).Value
  15.     Cells(c, r).NumberFormatLocal = "00"
  16. End Sub
复制代码

点评

VBA中是rnd  发表于 2016-6-16 08:57
回复

使用道具 举报

发表于 2016-6-16 08:56 | 显示全部楼层
本帖最后由 fjmxwrs 于 2016-6-16 08:58 编辑

附件
  1. Sub 按钮1_Click()
  2.     Dim x%, y%, n
  3.     x = InputBox("请输入行号", "行号输入", 1)
  4.     y = InputBox("请输入列号", "列号输入", 1)
  5.     n = Int(Rnd * 99 + 1)
  6.     With Cells(x, y)
  7.         .Value = n
  8.         .NumberFormatLocal = "00"
  9.     End With
  10. End Sub
复制代码

指定单元格输入1-99随机整数.zip

12.94 KB, 下载次数: 12

回复

使用道具 举报

发表于 2016-6-16 09:01 | 显示全部楼层
fjmxwrs 发表于 2016-6-16 08:56
附件

关键他强调要使用rand()
回复

使用道具 举报

 楼主| 发表于 2016-6-16 09:57 | 显示全部楼层
fjmxwrs 发表于 2016-6-16 08:56
附件

乱写     输入10和6      随机数一共10行,6列
你只随机一个数
回复

使用道具 举报

 楼主| 发表于 2016-6-16 10:00 | 显示全部楼层
老司机带带我 发表于 2016-6-16 08:55
VBA中用不了rand,所以只能变通的先生成公式然后在复制为数值了!也算是用了rand函数吧!两个inputbox:

乱写,不是随机一个数
随机数多行多列
回复

使用道具 举报

发表于 2016-6-16 10:09 | 显示全部楼层
vbyou127 发表于 2016-6-16 09:57
乱写     输入10和6      随机数一共10行,6列
你只随机一个数

呵呵,你的问题没说清楚,第一个问题:
1、可以理解为,两个input 分别  输入 X 行  Y 列  ,第X行,第Y列
2、可以理解为,两个input 分别  输入 X 行数  Y 列列数  ,数据区域为X行,y列,但是您没有指定看是单元格,从什么地方开始 多少行,多少列输入随机数据,要人猜的
回复

使用道具 举报

发表于 2016-6-16 10:58 | 显示全部楼层
进来学习一下。
回复

使用道具 举报

发表于 2016-6-16 12:53 | 显示全部楼层    本楼为最佳答案   
看看行不行

生成随机数.rar

12.38 KB, 下载次数: 16

评分

参与人数 1 +9 收起 理由
vbyou127 + 9 来学习

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-2 10:06 , Processed in 0.323549 second(s), 17 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表