美文网首页
《VBA 从入门到放弃》 Part.1.D 使用For循环

《VBA 从入门到放弃》 Part.1.D 使用For循环

作者: 效率视界 | 来源:发表于2020-05-23 16:09 被阅读0次

    📺Part.1.D.for-next(使用For循环)

    image

    一、上一节录制宏得到的代码

    Sub 工资条()
    '
    ' 工资条 宏
    ' 制作工资条
    '
    ' 快捷键: Ctrl+q
    '
        ActiveCell.Rows("1:1").EntireRow.Select
        Selection.Copy
        ActiveCell.Offset(2, 0).Rows("1:1").EntireRow.Select
        Selection.Insert Shift:=xlDown
        ActiveCell.Rows("1:1").EntireRow.Select
    End Sub
    

    Tips:如果你的工作簿中没有找到上面这段代码,可能是你保存Excel时没有选择正确的格式,使用.xlsm格式保存含有宏的工作簿。

    这段代码就是上一节中录制宏得到的代码,这一段代码可以实现自动插入一行工资条标题。如果有7条工资信息,除了第一行,那么就需要插人六行工资条标题,按照上节课的做法我们只需要连续运行6次宏即可,但是实际工作中工资条可能远不止6条,那么我们如何解决这个问题?

    二、加上For循环后的工资条

    为解决上述多次重复运行同一段宏代码的问题,我们可以使用For···Next循环语法,将上节中录制宏得到的代码用For···Next循环语法嵌套,现在我们不需要掌握For···Next循环语法的详细概念,先实践,再概念。由于上一节中我们需要连续运行6次宏,即需要对这段代码循环6次,所以嵌套上 for i = 1 to 6···next,如果需要循环100次,那么嵌套上 for i = 1 to 100···next。加上For循环后,选中第一行,开始执行宏,一个2.0版本的工资条工具就制作完成了,之后还有3.0版本,如下所示。

    Tips:选中代码行,按Tab键可以批量缩进代码,按Shift+Tab键可以批量取消缩进代码。

    Sub 工资条2()
    '
    ' 工资条 宏
    ' 制作工资条
    '
    ' 快捷键: Ctrl+q
    '   
        Dim i 
        for i = 1 to 6
            ActiveCell.Rows("1:1").EntireRow.Select
            Selection.Copy
            ActiveCell.Offset(2, 0).Rows("1:1").EntireRow.Select
            Selection.Insert Shift:=xlDown
            ActiveCell.Rows("1:1").EntireRow.Select
        next
    End Sub
    
    image

    三、本节小结😵

    (一)子过程

    Sub 工资条() '过程开始,过程的名称为“工资条”
        ······  '代码正文
    End Sub  '结束过程
    

    VBA过程包括三类:子过程、函数过程和属性过程。上面就是子过程的标准格式,标志是以Sub开头,所有录制宏产生的过程都是子过程。使用VBA时,基本都是使用子过程,其他类型过程用的较少,暂时不提,减少点理解负担。

    Tips:代码后用英文单引号'插入代码注释,不会影响程序运行,只是为了便于理解。

    (二)变量和For循环

    Dim i  '定义变量
    

    变量没有固定的值,可以随时根据需求赋予新值。类似于数学中的设未知数X解方程,这个X就可以理解为变量。

    For i= 1 to 10  'For循环开始
        ······
    Next  '继续循环至结束
    

    For···Next语句表示以指定次数来重复执行一组语句,一般需要配合变量使用,变量对于编程来说都是极为重要的概念。

    Sub 使用变量()
        Dim i
        For i = 1 To 6
            Debug.Print i
        Next
    End Sub
    

    运行上面这段代码后,我们观察立即窗口可以看到连续从1输出到6,由此可以看出For循环语法的作用,从i=1开始循环执行Debug.Print i这一代码到i=6为止。

    1D-2

    基于此,我们才可以顺利做到隔行插入工资条标题,已经其他更多操作······

    😈本章作业

    下载本章的示例文件(Sample_file/Part.1.D.for-next)

    参照本章示例,将工资条还原成原始表格,也就是说,用For循环和录制宏将多余的工资条标题删除,只保留第一行。

    相关文章

      网友评论

          本文标题:《VBA 从入门到放弃》 Part.1.D 使用For循环

          本文链接:https://www.haomeiwen.com/subject/mxhlahtx.html