过程
可以通过call来调用子程序,达到结构清晰,功能明确的作用
Option Explicit
Sub 汇总和登记()
Call 汇总
Call 登记
End Sub
Sub 我只需要汇总()
Dim i, j, total '定义循环变量和累加器
Dim wperson As Worksheet '定义wperson为工作表
Dim wall As Worksheet '用来存总分的工作表
Set wall = Worksheets("总分榜") '用字符串来表示不会搞混淆
For i = 1 To Worksheets.Count '用worksheets来调用属性,这里count是算有多少工作表
Set wperson = Worksheets(i) '对对象进行赋值用set,有点类似于C语言的指针
If wperson.Name <> "总分榜" Then
total = 0
j = 2
Do While wperson.Cells(j, 1) <> ""
total = total + wperson.Cells(j, 2) '不能忘了wperson. 否则会编译出错
j = j + 1
Loop
wperson.Cells(2, 3) = total
End If
Next i
End Sub
Sub 我只需要登记()
Dim k, i
Dim w1 As Worksheet
Dim w2 As Worksheet
Set w2 = Worksheets("总分榜")
k = 2
For i = 1 To Worksheets.Count '用worksheets来调用属性,这里count是算有多少工作表
Set w1 = Worksheets(i)
If w1.Name <> "总分榜" Then '赋值到总分榜里面
w2.Cells(k, 1) = w1.Cells(1, 2)
w2.Cells(k, 2) = w1.Cells(2, 3)
k = k + 1
End If
Next i
End Sub
函数
Option Explicit
Sub 扫描()
Dim score, level
Dim i
i = 3
Do While Cells(i, 2) <> ""
score = Cells(i, 3)
level = 分类(score) '传参调用函数
Cells(i, 4) = level
i = i + 1
Loop
End Sub
Function 分类(s) '函数头改为function ()用于接收参数
Dim score, level
score = s
If score > 0 And score < 30 Then
level = "甲型"
ElseIf score >= 30 And score < 60 Then
level = "乙型"
ElseIf score >= 60 And score < 90 Then
level = "丙型"
ElseIf score >= 90 And score < 100 Then
level = "丁型"
End If
分类 = level '返参
End Function
把扫描链接到控件,可以直接使用该段代码
或者是可以把 分类 用作函数来使用