全民一起VBA基础篇第八课:过程与函数

过程

可以通过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

把扫描链接到控件,可以直接使用该段代码
或者是可以把 分类 用作函数来使用
在这里插入图片描述

发布了26 篇原创文章 · 获赞 5 · 访问量 1103

猜你喜欢

转载自blog.csdn.net/qq_43568982/article/details/103753770