vba33-37

三十三 条件循环
1 do…loop:
do 循环头
循环体
loop 循环尾
2 子句:
a当型循环:while
do while i<5
i=i+1
loop

b直到型循环:until
do until i=5
i=i+1
loop
3 可以在do头部判断,也可在until尾部判断
头部循环可能一次也不执行,尾部循环至少执行一次。

'在VBA中实现条件循环的语句叫做 Do ... Loop 循环结构
'Do 循环头
    '循环体
'Loop 循环尾
'如果只写Do ... Loop 那么就是无穷无尽的循环,屎(死)循环.
'当型循环意思就是,当条件为真的时候进行循环
'直到型循环,意思就是,当条件为真的时候终止循环
Sub doLoop循环()
    Dim i As Long
    i = 5
    Do
        i = i + 1
        Debug.Print i
    Loop While i < 5
'    Do Until i = 5
'         i = i + 1
'         Debug.Print i
'
'    Loop
End Sub
'循环头部判断与循环尾部判断的区别,有可能差一次
'头部判断是先判断条件,如果成立就循环,不成立就一次不执行循环体语句。
'尾部判断是先执行一次循环体,然后再判断条件是否成立,成立就循环,不成立就终止。
'男女朋友
'Do
    '在一起
'loop while 不是渣男
'2 ,1; 3, 2; 5, 4; 6,5 ;7,0

4爱因斯坦长阶梯
著名物理学家爱园斯坦编的问题:在你面前有一条长长的阶梯,如果你每步跨2阶,那么最后剩下1阶;如果你每步跨3阶,那么最后剩2阶;如果你每步跨5阶,那么最后刺4阶;如果你每步跨6阶,那么最后剩5阶;只有当你每步跨7阶时,最后才正好走完,一阶也不剩,请你算一算,这条阶梯到底有多少阶?

Sub 爱因斯坦长阶梯()
    Dim jieti As Long
    jieti = 7
    Do Until jieti Mod 2 = 1 And jieti Mod 3 = 2 And jieti Mod 5 = 4 _
    And jieti Mod 6 = 5
        jieti = jieti + 7
    Loop
    MsgBox "爱因斯坦长阶梯最短需要" & jieti & "级。"
End Sub

5据说刘邦与韩信聊天,韩信问刘邦说,有一次我在点将台点兵,每3人一列余1人、5人一列余2人、7人一列余4人、13人一列余6人。主公看看有多少兵马?刘邦茫然而不知其数。

三十四 条件循环:复利单利的计算

'10万元 两个产品投资: 单利 年7%
                     '复利 年2.5%
Sub 单利与复利投资()
    Dim 本金 As Double, 单利总金额 As Double, 复利总金额 As Double
    Dim y As Long '代表年数
    Const dli As Double = 0.07, fli As Double = 0.025 'dli单利利率,fli 复利利率
    本金 = 100000
    y = 0
    单利总金额 = 本金
    复利总金额 = 本金
    Do
      y = y + 1
      单利总金额 = 本金 * dli * y + 本金
      复利总金额 = 复利总金额 * (1 + fli) ^ y
    Loop Until 复利总金额 > 单利总金额
    MsgBox y
End Sub
Sub paper()
'作业题1:一张纸的厚度大概是0.5mm,,假设纸可以无限对折,每次对折后纸的厚度增加一倍。
'那么请问对折多少次之后,纸的厚度会超过珠穆朗玛峰(8848.13m) ?
'·提示:请注意米与毫米的换算单位是1:1000
Dim a#, s#, n&
a = 0.5
s = 8848130
n = 1
Do Until a * 2 ^ n > s
    Debug.Print n & "==>" & a * 2 ^ n
    Debug.Print
    n = n + 1
Loop
End Sub

三十五 循环嵌套
1 Cells(3, 1) = 1 将第三行第一列单元格填充内容为1
2 vbCr 连接表示显示时换行。

'Range(地址) 访问单元格
'R1C1 Cells(行数,列数) A 1
'Sub Test()
'    Cells(1, 1) = 1
'
'
'End Sub
Sub 循环嵌套()
    Dim i As Long, j As Long
    For i = 1 To 5
        For j = 1 To 4
            Cells(i, j) = i & j
        Next
    Next
End Sub
'循环嵌套的循环次数是相乘的关系
'百钱买百鸡
'铜钱是不可分割单位
'公鸡 5文铜钱一只 母鸡3文铜钱一只 小鸡 一文钱 3 只
'有100文钱用来买鸡,要求正好买100 只鸡,三种鸡都必须有,那么有几种买鸡的方案
'穷举法
Sub 百钱买百鸡()
    Dim 公鸡 As Long, 母鸡 As Long, 小鸡 As Long
    Dim count As Long
    For 公鸡 = 1 To 20 '1 只公鸡
        For 母鸡 = 1 To Int(100 / 3)
            小鸡 = 100 - 公鸡 - 母鸡
            If 公鸡 * 5 + 母鸡 * 3 + 小鸡 / 3 = 100 Then
                count = count + 1
                MsgBox "第" & count & "种买鸡方案:" & vbCr & "公鸡: " & 公鸡 & "只" _
                & vbCr & "母鸡: " & 母鸡 & "只" & vbCr & "小鸡:" & 小鸡 & "只。"
            End If
        Next
    Next
End Sub

第36讲-条件循环与循环嵌套作业讲解

'作业2: 水仙花数
'数学上把一个3位数100-999 之间的,如果它的百位数^3+十位数^3+个位数^3的和正好等于这个数自身,
'那么这个数就叫水仙花数。请编程实现输出所有的水仙花数
'
Sub 水仙花数()
    Dim i&, j&, k& '分别表示百位,十位和个位数
    For i = 1 To 9
        For j = 0 To 9
            For k = 0 To 9
                If i * 100 + j * 10 + k = i ^ 3 + j ^ 3 + k ^ 3 Then
                    Debug.Print i * 100 + j * 10 + k
                End If
            Next
        Next
    Next
End Sub

第37讲-循环的未尽事宜
1 For each元素in容器循环:这个循环主要用于对象在集合(容器)中进行遍历循环。Each是每一个的意思,这个循环我们在后面讲对象和容器的时候详细讲解。
.2 VBA有三大容器()∶集合、数组和字典
3 强制退出循环的语句: Exit for , Exit do分别对应for (包括for each)循环与do loop循环

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值