首页 > 编程语言 >VBA-Excel程序控制语法

VBA-Excel程序控制语法

时间:2023-12-06 14:55:19浏览次数:34  
标签:Case xj VBA End Sub Cells Excel 程序控制 Select

1、If…Then语句 

Sub SayHello1()
    If Time < 0.5 Then MsgBox "早上好!"
    If Time >= 0.5 Then MsgBox "下午好!"
End Sub

Sub SayHello2()
    If Time < 0.5 Then
        MsgBox "早上好!"
    Else
        MsgBox "下午好!"
    End If
End Sub

Sub SayHello3()
    If Time < 0.5 Then
        MsgBox "早上好!"
    ElseIf Time > 0.75 Then
        MsgBox "晚上好!"
    Else
        MsgBox "下午好!"
    End If
End Sub

2、Select Case语句 


Sub SayHello1()
    Select Case Time
        Case Is < 0.5
            MsgBox "早上好!"
        Case Is > 0.75
            MsgBox "晚上!"
    End Select
End Sub

Sub SayHello2()
    Select Case Time
        Case Is < 0.5
            MsgBox "早上好!"
        Case Is > 0.75
            MsgBox "晚上!"
        Case Else
            MsgBox "下午好!"
    End Select
End Sub

 
Sub xingji()
    Dim xj As String
    Select Case Cells(2, "H")
        Case Is < 85
            xj = "不评定"
        Case Is < 100
            xj = "一星级"
        Case Is < 115
            xj = "二星级"
        Case Is < 130
            xj = "三星级"
        Case Is < 150
            xj = "四星级"
        Case Else
            xj = "五星级"
    End Select
    Cells(2, "I") = xj
End Sub

3、For…Next语句

 语法结构:

For <循环变量>=<初值>To<终值> [Step 步长值]
  <循环体>
        [Exit For]  '可以在循环体中任意处加一句或多句Exit For,当遇到这个语句,退出For循环,执行Next后语句
  <循环体>
Next [循环变量]
 


Sub xingji()
    Dim xj As String, i As Integer
    For i = 2 To 19 Step 1
        Select Case Cells(i, "H")
            Case Is < 85
                xj = "不评定"
            Case Is < 100
                xj = "一星级"
            Case Is < 115
                xj = "二星级"
            Case Is < 130
                xj = "三星级"
            Case Is < 150
                xj = "四星级"
            Case Else
                xj = "五星级"
        End Select
        Cells(i, "I") = xj
    Next i
End Sub

4、Do While语句

语法结构1:
Do [While 逻辑表达式]
    <循环体>
    [Exit Do]
    [循环体]
Loop
对应示例:


Sub xingji()
    Dim xj As String, i As Integer
    i = 2
    Do While Cells(i, "H") <> ""
        Select Case Cells(i, "H")
            Case Is < 85
                xj = "不评定"
            Case Is < 100
                xj = "一星级"
            Case Is < 115
                xj = "二星级"
            Case Is < 130
                xj = "三星级"
            Case Is < 150
                xj = "四星级"
            Case Else
                xj = "五星级"
        End Select
        Cells(i, "I") = xj
    i = i + 1
    Loop
End Sub

语法结构2
Do
    <循环体>
    [Exit Do]
    [循环体]
Loop  [While 逻辑表达式]
对应示例:


Sub xingji()
    Dim xj As String, i As Integer
    i = 2
    Do
        Select Case Cells(i, "H")
            Case Is < 85
                xj = "不评定"
            Case Is < 100
                xj = "一星级"
            Case Is < 115
                xj = "二星级"
            Case Is < 130
                xj = "三星级"
            Case Is < 150
                xj = "四星级"
            Case Else
                xj = "五星级"
        End Select
        Cells(i, "I") = xj
    i = i + 1
    Loop While Cells(i, "H") <> ""
End Sub

 

5、Do Until语句

  do Until 后的逻辑表达式为False则执行循环体,否则退出循环,跟Do While相反。

语法结构1:
Do [Until 逻辑表达式]
    <循环体>
    [Exit Do]
    [循环体]
Loop
 对应示例: 


Sub xingji()
    Dim xj As String, i As Integer
    i = 2
    Do Until Cells(i, "H") = ""
        Select Case Cells(i, "H")
            Case Is < 85
                xj = "不评定"
            Case Is < 100
                xj = "一星级"
            Case Is < 115
                xj = "二星级"
            Case Is < 130
                xj = "三星级"
            Case Is < 150
                xj = "四星级"
            Case Else
                xj = "五星级"
        End Select
        Cells(i, "I") = xj
    i = i + 1
    Loop
End Sub

语法结构2:
Do
    <循环体>
    [Exit Do]
    [循环体]
Loop [Until 逻辑表达式]
 对应示例:


Sub xingji()
    Dim xj As String, i As Integer
    i = 2
    Do
        Select Case Cells(i, "H")
            Case Is < 85
                xj = "不评定"
            Case Is < 100
                xj = "一星级"
            Case Is < 115
                xj = "二星级"
            Case Is < 130
                xj = "三星级"
            Case Is < 150
                xj = "四星级"
            Case Else
                xj = "五星级"
        End Select
        Cells(i, "I") = xj
    i = i + 1
    Loop Until Cells(i, "H") = ""
End Sub

6、For Each…Next语句

当前活动工作簿中有许多工作表,但并不知道数量。如果要把所有工作表的名称按次序写入活动工作表的A列,For Each…Next是更适合的循环。

For Each 元素变量 In 集合名称或数组名称
    <语句块1>
    [Exit For]
    [语句块2]
Next [元素变量]
示例1:


Sub shtName()
    Dim sht As Worksheet, i As Integer
    i = 1
    For Each sht In Worksheets
        Cells(i, "A") = sht.Name
        i = i + 1
    Next sht
End Sub

示例2:


Sub shtName()
    Dim c As Range, i As Integer
    i = 1
    For Each c In Range("A1:A10")
        c.Value = i
        i = i + 1
    Next c
End Sub

7、GoTo语句

 “去到指定地点”,用来让程序转到另外一条语句去执行。


Sub he()
    Dim mysum As Long, i As String
    i = 1
x:    mysum = mysum + i
    i = i + 1
    If i <= 100 Then GoTo x
    MsgBox "1到100的自然数和是:" & mysun
    
End Sub

8、With语句

 当需要对相同的对象进行多次操作时,会编写一些重复代码


Sub FontSet()
    With Worksheets("sheet1").Range("A1").Font
        .Name = "仿宋"
        .Size = 12
        .Bold = True
        .ColorIndex = 3
    End With  '这里的With语句结束标志,不可缺少
End Sub 

标签:Case,xj,VBA,End,Sub,Cells,Excel,程序控制,Select
From: https://www.cnblogs.com/Pro-Cyon/p/17879544.html

相关文章

  • DevExpress WinForms Pivot Grid组件,一个类似Excel的数据透视表控件(一)
    界面控件DevExpressWinForms的PivotGrid组件是一个类似Excel的数据透视表控件,用于多维(OLAP)数据分析和跨选项卡报表。众多的布局自定义选项使您可以完全控制其UI,无与伦比的以用户为中心的功能使其易于部署。DevExpressWinForms有180+组件和UI库,能为WindowsForms平台创建具有......
  • 使用ThinkPHP框架根据Excel内容批量处理图片名称详解记录
    ThinkPHP依赖以下环境Nginx+PHP,建议提前装好Composer,PHP、Composer需要设置好系统环境变量。1.通过Composer安装Laravel框架composercreate-projecttopthink/thinkthinkphp6启动服务测试cdthinkphp6phpthinkrun然后就可以在浏览器中访问http://localhost:8000如果不能显示......
  • excel 循环
    testxlsx=pd.ExcelWriter('test.xlsx')foriinplat_360:forjinrange(0,len(needcolumns)):ifneedcolumns[j]!='省份':table=pd.pivot_table(data_cgm_360_copy_dropdup[data_cgm_360_copy_dropdup.plati],index='等级',columns=needcolum......
  • Excel判断日期是否是工作日的实现(排除节假日,加上补班日)
     实现思路:工作日= 【周一到周五(排除节假日)或者补班日】公式编写:1.周一到周五判断WEEKDAY(A2,2) 获取该日期是星期几(返回:1-7),那么周一到周五就是<62.非节假日判断COUNTIF($G$2:$G$398,A2)=0统计该日期在指定区域$G$2:$G$398中出现的次数,非节假日就是未出现,出现......
  • 基础lucksheet实现前端导出excel文件
    文章参考:https://blog.csdn.net/csdn_lsy/article/details/1071797081.引入两个插件,其中exceljs负责将lucksheet的数据格式转化成excel的buffer流,file-saver负责将buffer转成blob文件流导出。npminstallexceljsnpminstallfile-saver2.代码实现constExcel=require('......
  • 发现一个很好用的excel的php扩展
    废话不多,直接给文档地址:xlswrite导出时不容易超出内存,号称最大使用内存为最后一行数据大小。导出速度也很6.  插入内容:使用 Spreadsheet时,可以切换使用存储方式,默认是内存,如果切换了其他的比如文件,可以减少内存压力。Settings::setCache需要传入实现接口CacheInte......
  • Excel -- 基本操作
    自定义序列导入CSVCtrl+S就不会弹错误了......
  • Java实现Excel导入和导出
    1.功能测试1.1测试准备在做测试前,我们需要將【2.环境准备】中的四个文件拷贝在工程里(如:我这里均放在了com.zyq.util.excel包下)。1.2数据导入1.2.1导入解析为JSON比如,我们有下面一个表格:Controller代码:@PostMapping("/import")publicJSONArrayimportUser(@Requ......
  • Excel实用工具分享
               大家好,相信大家在工作学习中都会用到Excel这个工具,虽然很方便,但是呢,小编想说的是,没有最方便只有最方便,接下来小编就分享一些,平时小编使用过的一些公式,在表格里面就可以直接使用哦! 1    谷歌翻译            =GoogleTranslateBy......
  • easypoi大批量导出excel数据
    easypoi导出excel数据最近,面临了一个新的需求,需要将表中的几百万数据导出到Excel文件中。为了满足这一需求,我决定采用EasyPoi库来实现该功能,并生成压缩包。<dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-spring-boot-starter</artifactId>......