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

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

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

1. WorkSheets与WorkSheet对象

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

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


VBA-JC第6节|工作表对象的使用_第1张图片

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

VBA-JC第6节|工作表对象的使用_第2张图片
Sub test()
    Dim w1 As Worksheet
    Set w1 = Worksheets(3)
    w1.Cells(5, 3) = 100
End Sub

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

为什么对对象要用set?


VBA-JC第6节|工作表对象的使用_第3张图片

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

这里使用了worksheets.count.


VBA-JC第6节|工作表对象的使用_第4张图片
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
VBA-JC第6节|工作表对象的使用_第5张图片

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

这里使用了worksheets.add


VBA-JC第6节|工作表对象的使用_第6张图片
Sub test()
    Worksheets.Add
End Sub

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


VBA-JC第6节|工作表对象的使用_第7张图片

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

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

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

VBA-JC第6节|工作表对象的使用_第8张图片

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

VBA-JC第6节|工作表对象的使用_第9张图片

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

VBA-JC第6节|工作表对象的使用_第10张图片

2. 用标题引用工作表

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

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

2.2WorkSheet对象的Name属性

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

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

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


VBA-JC第6节|工作表对象的使用_第11张图片

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


VBA-JC第6节|工作表对象的使用_第12张图片

相关代码如下:
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节|工作表对象的使用_第13张图片

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

VBA-JC第6节|工作表对象的使用_第14张图片

你可能感兴趣的:(VBA-JC第6节|工作表对象的使用)