设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 3744|回复: 13
打印 上一主题 下一主题

[VBA编程/宏] 怎样满足两个条件去循环

[复制链接]

点击这里给我发消息

跳转到指定楼层
1#
发表于 2017-4-1 17:36:49 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我要控制AD18 AD21两个单元格的合格率,然后去随机数,
单单控制一个单元格的VB会写了,现在两个单元格都要控制的话,VB里面不会了
请教下 谢谢

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

14#
 楼主| 发表于 2017-4-2 17:05:37 | 只看该作者

Private Sub CommandButton1_Click()
    Dim rg As Range
    For i = Range("AG6") To Range("AG7")
        Range("AG5") = i
            Do
                [O18:X19,O26:X27].ClearContents
                    For Each rg In Range("O18:X19,O26:X27")
                       rg.Value = Int(Rnd() * 40 - 20)
                    Next
            Loop Until (Range("AA18").Value > 0.85 And Range("AA26").Value > 0.85)
            
            
            ActiveSheet.PageSetup.PrintArea = "A1:AF33"
            ActiveSheet.PrintOut
    Next
End Sub

现在是遇到两和合格范围要求的就不行了,一直生成不出来满足要求的数据

点击这里给我发消息

13#
 楼主| 发表于 2017-4-2 15:57:41 | 只看该作者
已经在格子那边有老师帮忙解决了

点击这里给我发消息

12#
 楼主| 发表于 2017-4-2 15:22:41 | 只看该作者
roych 发表于 2017-4-2 12:46
那就用规划求解试试好了。

能否再详细一点点,老师
11#
发表于 2017-4-2 12:46:33 | 只看该作者
bingbaicai 发表于 2017-4-2 06:58
你这个不是,这个太简单了

那就用规划求解试试好了。

点击这里给我发消息

10#
 楼主| 发表于 2017-4-2 09:20:55 | 只看该作者
来人呀
回复

使用道具 举报

点击这里给我发消息

9#
 楼主| 发表于 2017-4-2 07:43:33 | 只看该作者
pureshadow 发表于 2017-4-1 21:36
你是想将那两个单元格里的函数公式用vba代码写出来吗?
最简单的办法就是
要按vba的写法就是


    Private Sub CommandButton1_Click()
    For i = Range("AG6") To Range("AG7")
    Range("AG5") = i
    Do
        [O18:Z19] = 0 And [O21:Z22] = 0
            For Each cel In [O18:Z19]
               cel.Value = Int(Rnd() * 30)
               If [AD20] < 0.87 Then GoTo a
            Next
a:
        Loop While [AD20] < 0.87
        Next
         For Each cel In [O21:Z22]
               cel.Value = Int(Rnd() * 30)
               If [AD20] < 0.87 Then GoTo a
            Next
a:
        Loop While [AD20] < 0.87
        
   
   
    ActiveSheet.PageSetup.PrintArea = "A1:AE30"
    ActiveSheet.PrintOut
    Next
   
    End Sub
这样不对啊

点击这里给我发消息

8#
 楼主| 发表于 2017-4-2 07:40:54 | 只看该作者
pureshadow 发表于 2017-4-1 21:36
你是想将那两个单元格里的函数公式用vba代码写出来吗?
最简单的办法就是
要按vba的写法就是

你这个应该只是达到了随机,我要控制O18:Z19这单元格的数据合格率,好比是90%,让他去随机数

    Private Sub CommandButton1_Click()
    For i = Range("AG6") To Range("AG7")
    Range("AG5") = i
    Do
        [L11:Z11] = 0
            For Each cel In [L11:Z11]
               cel.Value = Int(Rnd() * 60 - 20)
               If [AD11] < 0.87 Then GoTo a
            Next
a:
        Loop While [AD11] < 0.87
   
   
    ActiveSheet.PageSetup.PrintArea = "A1:AD20"
    ActiveSheet.PrintOut
    Next
   
    End Sub
这是只控制一个,我现在想控制两个区域的

点击这里给我发消息

7#
 楼主| 发表于 2017-4-2 06:59:04 | 只看该作者
pureshadow 发表于 2017-4-1 21:36
你是想将那两个单元格里的函数公式用vba代码写出来吗?
最简单的办法就是
要按vba的写法就是

我上面有附件

点击这里给我发消息

6#
 楼主| 发表于 2017-4-2 06:58:11 | 只看该作者
roych 发表于 2017-4-1 22:48
试下内置函数RANDBETWEEN
=RANDBETWEEN(-30,30)

你这个不是,这个太简单了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-3 00:17 , Processed in 0.099312 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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