美文网首页
VBA-JC第6节|工作表对象的使用

VBA-JC第6节|工作表对象的使用

作者: 努力奋斗的durian | 来源:发表于2019-05-14 17:30 被阅读0次

    最近更新:'2019-05-14'

    1. WorkSheets与WorkSheet对象
    2. 用标题引用工作表

    1. WorkSheets与WorkSheet对象

    1.1案例1:指定工作表显示单元格的数值

    当一个工作簿有三个工作表时,没指定工作表时,程序运行的是在最上面的工作表


    怎么让上面的代码在sheet3的单元格显示呢?

    Sub test()
        Dim w1 As Worksheet
        Set w1 = Worksheets(3)
        w1.Cells(5, 3) = 100
    End Sub
    

    注意事项
    为代表对象的变量赋值时,必须使用SET关键字。

    为什么对对象要用set?


    1.2案例2:worksheets.count所有工作表的数量

    这里使用了worksheets.count.


    Sub test()
        Dim w1 As Worksheet
        Dim i
        
        For i = 1 To Worksheets.Count
            Set w1 = Worksheets(i)
            w1.Cells(5, 3) = 100
        Next i
    End Sub
    

    1.3案例3:worksheets.add自动添加工作表

    这里使用了worksheets.add


    Sub test()
        Worksheets.Add
    End Sub
    

    代码显示的最终结果如下:


    如果想对新增加的工作表的进行操作,可以进行如下设置:

    Sub test()
        Dim w1 As Worksheet
        Set w1 = Worksheets.Add
        w1.Cells(5, 3) = 100
    End Sub
    

    代码显示的最终结果如下:

    每次循环都添加一个新的工作表,并且让w1代表这个最新添加的工作表,又如何操作呢?

    这里可以很好的解析之前excel中对应的对象,类,属性和方法.

    2. 用标题引用工作表

    2.1用 WorkSheets引用工作表的两种形式:

    1.根据工作表的显示位置: Work.Sheets(5)
    2.根据工作表的名称: WorkSheets(“赵六”)

    2.2WorkSheet对象的Name属性

    WorkSheet.Name代表了该工作表的名称(即显示在底部标签上的标题)。可以用它取得修改工作表名称。

    2.3 案例1:双重循环汇总多个工作表

    工作簿分别有总分榜,张三,李四,王五,赵六工作表,对张三,李四,王五,赵六的数据进行汇总,并将绘制的结果放到对应工作表的C2单元格,并将每张工作表的总分以及对应的名字汇总到总分榜.具体如下截图:



    以下是整个代码的思考流程,如下截图:



    相关代码如下:
    Sub allScore()
        
        Dim i, k, j
        Dim wPerson As Worksheet, wAll As Worksheet
        
        Set wAll = Worksheets("总分榜")
        
        k = 2
        
        '扫描每一张工作表,对名字不是“总分榜”的工作表进行计算汇总
        For i = 1 To Worksheets.Count
            Set wPerson = Worksheets(i)
                        
            If wPerson.name <> "总分榜" Then
            
                '首先重新计算该工作表中的总成绩
                wPerson.Cells(2, 3) = 0
                For j = 2 To 10
                    wPerson.Cells(2, 3) = wPerson.Cells(2, 3) + wPerson.Cells(j, 2)
                Next j
            
                '然后将该工作表中总成绩登入“总分”表
                wAll.Cells(k, 1) = wPerson.Cells(1, 2)
                wAll.Cells(k, 2) = wPerson.Cells(2, 3)
                    
                k = k + 1
            End If
        
        Next i
        
    End Sub
    

    代码显示的最终结果如下:


    注意事项:
    当不知道如何编写程序的时候,应该思考如下方法:

    相关文章

      网友评论

          本文标题:VBA-JC第6节|工作表对象的使用

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