最近更新:'2019-05-14'
- WorkSheets与WorkSheet对象
- 用标题引用工作表
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
代码显示的最终结果如下:
注意事项:
当不知道如何编写程序的时候,应该思考如下方法: