vba17-25

2023-11-10

十七 变量默认值 简写变量 常量

1声明变量的同时赋值:
数值:0 字符串:"“空字符串 布尔:False 变体:Empty(空)
2 布尔值:false(0) True(1)
所有非0的数字转换成布尔类型都是True
3变量定义简写
dim i % integer整型
dim j& long长整型
#double 小数
$ string 字符串
常数后面加符号,改变常数数据类型
Date Boolean 没有简写
'VBA 声明变量 同时根据变量的数据类型,系统会自动给变量赋初值。
'1、如果声明的变量是数值类型的:整数类型 0 小数类型 0.0
'2. 字符串类型:”" 空字符串
'3. 布尔类型 False
'4. 变体类型 Empty – 空的意思

'布尔类型转成数字没有意义的: False —>0 True —>-1
'所有的非0 的数字都可以转成布尔类型的True 非空的字符串
'VBA 的变量声明的简写方式
'dim 变量名 as 数据类型
'Dim 变量名简写符号

Sub 变量声明的简写()
    Dim i% '==== dim i as integer
    Dim j& '==== dim j as long
    Dim d# '===== dim d as double
    Dim s$ '===== dim s as string
    Dim b As Boolean '没有简写符号
    Dim date1 As Date
    '把常数后面跟上简写符号,改变了常数数据类型
    MsgBox 64 * 64 * 64&
End Sub

'常量:一些表述公理定理常数的量,不变的量。
'特点:一经声明同时进行赋值,然后就不可以在程序中再被赋值改变。
'常量的声明 Const

Sub 求圆面积()
    '3.14115926536
    Dim r As Double
    Const Pi As Double = 3.14115926536
    r = 2.1
    MsgBox Pi * r ^ 2
End Sub

4 常量声明:一经赋值在程序中不可改变,声明同时赋值

Const Pi as double=3.1415926

十八 判断是否闰年
规则:
1 被4整除,又不能被100整除
2 400的倍数是闰年
3以上两点满足其一
条件:(year mod 4 =0 and year mod <>0) or (year mod 400 =0)

Sub 判断闰年()
    Dim inputYear&, b1 As Boolean
    inputYear = InputBox("请输入一个年份")
    'inputyear mod 4 = 0
    'inputyear mod 100 <> 0
    '1*1
    b1 = (inputYear Mod 4 = 0 And inputYear Mod 100 <> 0) Or (inputYear Mod 400 = 0)
    MsgBox IIf(b1, inputYear & "年,是闰年", inputYear & "年, 是平年")
    'iif 内置函数就完成了一个是否判断 与工作表函数中的if 函数非常类似
End Sub

十九 分支结构
1 三目运算符 vba 没有,有iif函数
iif(布尔值,真语句,假语句)
2 单分支结构
第一种:
if 条件 then 语句
第二种:
if 条件 then
语句
end if

'基本的if 语句的语法:
'if 条件 then 处理语句 '仅限于单分支
'if 条件 Then '后面不跟着处理语句 'if 的结构
'xxxx 处理语句
'yyyy
'zzzz
'End if

Sub 码农买瓜()
    Dim 卖瓜的 As Boolean
    MsgBox "码农买了一斤包子做晚餐"
    卖瓜的 = False
    If 卖瓜的 Then
        MsgBox "码农买了一个西瓜"
    End If
    MsgBox "码农回家了"
End Sub

二十 双分支,多分支结构
1 双分支:
if 条件 then
成立时语句
else
不成立时语句
end if

'双分支结构(是否结构)
Sub 小明买鸡蛋()
    Dim 坏蛋 As Long
    坏蛋 = InputBox("请输入小明的坏鸡蛋数")
    If 坏蛋 <= 5 Then '是的分支
        MsgBox "小明做了一盘炒鸡蛋,给吃了。"
    Else   '否的分支
        MsgBox "小明拎着鸡蛋找卖鸡蛋的干仗去了。"
    End If
End Sub

2 多分支:
if 条件1 then
语句1
elseif 条件2 then
语句2
elseif 条件n then
语句n
else
语句m
end if
'多分支练习题

Sub 学生成绩的统计()
    Dim score As Long
    score = InputBox("请输入学生成绩")
    
    If score >= 90 Then
        MsgBox "该生是优秀学生"
    ElseIf score >= 80 Then '否则如果
        MsgBox "该生是良好学生"
    ElseIf score >= 60 Then
        MsgBox "该生是合格学生"
   
    Else
        MsgBox "该生是不及格学生"
    End If
End Sub

二十一 if 语句嵌套
1语法
if 条件1 then
if 条件2 then
语句…
end if
else
语句…
end if

'所谓if 语句嵌套,就是在if 的某一个分支里嵌入一个完整的if 语句
'模拟登录的程序
'要求:必须用户名="小明" 如果不是就输出"用户名非法" 结束
'如果是"小明" 要求输入密码,如果密码="888888" 就输出登录成功,否则就输出密码错误
'VBE 的单步调试功能
'黄色箭头指向的是即将执行的语句
Sub 模拟登录()
    Dim userName As String, password As String
    userName = InputBox("请输入用户名")
    If userName = "小明" Then
        password = InputBox("请输入登录密码")
        If password = "888888" Then
            MsgBox "欢迎登录本系统"
        Else
            MsgBox "密码错误,登录失败"
        End If
    Else
        MsgBox "用户名输入非法"
      End If
End Sub

2 单步调试:F8

'三数求最大:输入a,b,c 3个数要求得到最大值
' 假如 a>b -> a 和c 比 a>c ->a 最大
'       a>b-> a<c -> c 最大
Sub 三数求最大()
    Dim a&, b&, c&
    a = InputBox("请输入第一个数字")
    b = InputBox("请输入第二数字")
    c = InputBox("请输入第三个数字")
  If a >= b Then
        If a >= c Then
            MsgBox "a 是最大值, a=" & a
        Else
            MsgBox "c 是最大值,  c=" & c
        End If
 Else
        If b >= c Then
            MsgBox "b 是最大值, b=" & b
        Else
            MsgBox "c 是最大值,  c=" & c
        End If
    End If
End Sub

二十二、二十三
练习
猜数游戏 三天打渔两天晒网 学生成绩

二十四 多分支语句
语法:
select case 值|表达式
case 分支1
语句1
case 分支2
语句2
case 分支n
语句n
end select

'Select Case 多分支结构语句
'学生评定:
'输入一个成绩 90及以上优秀80-89良好,60-79 合格,其他不及格
'Select Case 值 或者 表达式
'Case 值 比较 不能跟逻辑运算符
Sub 学生评定()
    Dim score As Long
    score = InputBox("请输入学生成绩")
    Select Case score
    Case Is >= 90
        MsgBox "优秀生"
    Case Is >= 80
        MsgBox "良好生"
    Case Is >= 60
        MsgBox "合格生"
    Case Else
        MsgBox "不及格"
End Select
End Sub
'3,4,5 是春天,6,7,8 是夏天,9,10 是秋天,11,12,1,2 是冬天
Sub 输入月份返回季节()
    Dim inputM As Long
    inputM = Val(InputBox("请输入月份1-12"))
    Select Case inputM
    Case 3, 4, 5
        MsgBox "是春季"
    Case 6, 7, 8
        MsgBox "是夏季"
    Case 9, 10
        MsgBox "是秋季"
    Case 11, 12, 1, 2
        MsgBox "大约在冬季"
    Case Else
        MsgBox "月份输入非法"
    End Select
End Sub

二十五 作业

Sub 猜数游戏雏形()
    Dim num As Long, guess As Long
    num = WorksheetFunction.RandBetween(1, 3)
    guess = InputBox("请输入一个1-3之间的整数:")
    
    If num = guess Then
        MsgBox "猜对了"
    ElseIf guess < num Then
        MsgBox "你猜小了"
    Else
        MsgBox "你猜大了"
    End If
End Sub
Sub 三天打渔两天晒网()
    Dim days As Long, mod5 As Long
    MsgBox Date
    days = Date - #1/1/1990# + 1
    mod5 = days Mod 5
    MsgBox mod5
    If mod5 >= 1 And mod5 <= 3 Then
        MsgBox "今天打渔"
    Else
        MsgBox "今天晒网"
    
    End If
End Sub
'Select Case 多分支作业,李四的工资

Sub 李四的工资()
    Dim basicWage As Long, pingding As String
    basicWage = 5000
    pingding = UCase(InputBox("请输入李四的年终评定")) '必须是大写的A-E,uCase 函数
    Select Case pingding
    Case "A"
        basicWage = basicWage + 800
    Case "B"
        basicWage = basicWage + 500
    Case "C"
        
    Case "D"
        basicWage = basicWage - 200
    Case "E"
        basicWage = basicWage - 500
    Case Else
        MsgBox "你的评定输入有误。"
    End Select
    
    MsgBox "根据年终评定,李四来年的年薪为" & basicWage * 13
End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vba17-25 的相关文章

  • VBA按空格分割字符串

    我想要一个 Excel 函数 我可以调用该函数并将单元格传递到其中 输入 Firstname Lastname email protected cdn cgi l email protection Firstname midname Las
  • 将单元格背景颜色设置为其包含的 RGB 值。如何?

    下面是我希望通过手动复制和粘贴以外的方式实现的屏幕截图 这是材料设计调色板 在 Excel 中看起来很棒 如何循环遍历范围 B2 B15 并将每个单元格背景颜色设置为其相应的包含颜色 也许是一个VBA loop去经历垂直 B 单元格范围 解
  • 在没有加载项的情况下加载 Excel

    All 我编写了一个电子表格应用程序 用户通过双击我提供的图标来加载它 问题是用户有很多插件 这会降低 Excel 的速度 如何使用命令行开关加载 Excel 来禁用所有加载项 该问题适用于 Excel 2003 和 Excel 2007
  • Excel宏-将逗号分隔的条目拆分为新行[重复]

    这个问题在这里已经有答案了 我目前在一张纸上有这些数据 Col A Col B Col C 1 A angry birds gaming 2 B nirvana rock band 我想要做的是将第三列中的逗号分隔条目拆分并插入新行 如下所
  • 根据不同的列数据范围隐藏行

    我对使用 VBA 相当陌生 我正在尝试创建一个代码 该代码将查看具有不同数据范围的两个不同列 并隐藏最后一个数据点之外的行 引用两列 目前我有这个 Private Sub Worksheet PivotTableUpdate ByVal T
  • 连续工作表切换循环

    我有一个 Excel 电子表格来显示 SQL 数据图表 这些图表将显示在我们机加工车间的显示器上 该电子表格有 45 个选项卡 我需要在选项卡之间切换 每个选项卡间隔 10 秒 然后返回到第一个选项卡并重复循环 I found 如何使用 V
  • 解析未完全加载 VBA 的网站

    尝试进行简单的网络解析 我的问题是页面在向下滚动之前无法完全加载 谷歌搜索已经提出可能使用硒 但由于我不知道如何使用它 我想我会在这里问 我使用的代码 Sub gfquote Dim oHttp As MSXML2 XMLHTTP Dim
  • 如何通过VBA代码修复仅在Excel共享模式下发生的运行时错误400

    我真的不知道400错误是什么原因造成的 下面的代码在正常模式下运行得很好 但是一旦我在共享模式下启用 Excel 并尝试使用用户表单 它就会给我 VBA 400 我在这里尝试做的是在向用户显示用户表单后更改形状的文本并禁用其 OnActio
  • 使用 VBA 从数据透视表中提取数据

    我编写了以下 vba 代码 该代码应该从 old xlsx 的某些单元格导入任何现有数据 这些单元格是数据透视表的一部分 并且 OE gt location gt qual in 作为其行的子单元格 该列由手动输入的日期决定 strForm
  • 尝试使用变量作为自动过滤器中的条件,并带有“不等于”<>,但无法使其工作

    我正在使用 Excel VBA 使用 不等于 表达式来过滤列表 如果我使用Criteria1 lt gt Bob 代码运行完美 但如果我将 Bob 更改为变量 代码将无法运行 这有效 ActiveSheet ListObjects Rpt
  • 是否有任何公式可用于将特定单元格复制指定次数?

    目前我正在处理一份数据 其中我有一个公司名称列表 例如 1 A 2 B 3 C 还有很多 需要的结果是 1 A 2 A 3 A 4 A 5 A 6 B 7 B 8 B 9 B 10 B 11 C 12 C 13 C 14 C 15 C 等等
  • Excel VBA:排序,然后复制和粘贴

    所有 我需要编写一个执行以下操作的宏 将数据输入到 E 列的最后一个空白单元格后 按 E 列对整个工作表进行降序排序 工作表排序后 2a 将单元格复制到紧邻首次输入数据的单元格左侧的相邻单元格 2b 将复制的数据粘贴到最初输入数据的同一行的
  • 获取给定日期的周数

    例子 DD MM YYYY 1 1 2009 should give 1 31 1 2009 should give 5 1 2 2009 should also give 5 Format 1 2 2009 ww 回报6 那么 怎样才能得
  • 二维数组作为字典的项目

    我想用一个项目的几个属性填充字典 例子 我正在考虑拥有Item 1 and Item 2 as Dictionary键与array这将保留其属性 我需要能够单独访问项目的每个属性 因此将它们连接为一个字符串不是一种选择 我正在考虑类似下面的
  • Excel VBA 用户窗体 - 当发生变化时执行 Sub

    我有一个包含很多文本框的用户表单 当这些文本框的值发生变化时 我需要通过调用子例程 AutoCalc 根据文本框值重新计算最终结果值 我有大约 25 个框 我不想向每个调用上述子例程的文本框单独添加 Change 事件 当某些值发生变化时调
  • VBA全局类变量

    我的障碍是试图让多个子程序识别类变量 当我尝试全局声明它们时 出现编译错误 无效的外部过程 然后 当我运行公共函数或子函数来声明变量时 它们在其他子函数中保持未定义状态 我希望多个子程序能够识别变量 因为它们的值应该通过用户窗体进行更改 然
  • 如何从 Outlook 的“收件人”字段中提取电子邮件地址?

    我在某种程度上一直在使用 VBA 使用以下代码 Sub ExtractEmail Dim OlApp As Outlook Application Dim Mailobject As Object Dim Email As String D
  • VBA 中的求和函数

    我在 vba 中对单元格求和时遇到问题 我需要使用单元格 a b Range A1 function SUM Range Cells 2 1 Cells 3 2 但它不起作用 函数不是范围内的属性 方法 如果您想对值求和 请使用以下命令 R
  • 如何锁定特定单元格但允许过滤和排序

    我使用以下代码来锁定某些单元格的内容 Sub LockCell ws As Worksheet strCellRng As String With ws Unprotect Cells Locked False Range strCellR
  • VBA 写入文件时对数值进行四舍五入 - 如何防止?

    在下面的代码中 我在确保文件编写器不会将我的数字四舍五入到一定的小数位数时遇到问题 我需要使用变体 因为有时该值是字符串 有时它是数字 我怎样才能强制它准确地写出变量是什么 例如 下面的代码可能显示 0 00038 我想显示确切的值 Dim

随机推荐

  • Fiddler过滤器 Filters 详解

    目录 前言 一 Hosts 过滤 较常用 二 Client Process 过滤 客户端进程过滤 通过配置只过滤 不过滤哪些进程的请求 用的不多 三 Request Headers 根据请求头信息进行过滤 常用 四 Breakpionts
  • 查看磁盘io

    yum y install sysstat 执行 iostat x 1 10 一般 util大于70 I O压力就开始出现了 如果 util越接近100 表明I O压力越大 rrqm s 每秒进行merge的读操作数目 即delta rme
  • element中手动图片上传,附带完整代码

    先展示一张图片效果图片 这种上传时 很常见的 之所以写这篇文章的目的时记录一下 和之前完全不同的上传方式 之前的上传方式 由于
  • 2023华为OD机试Java【报数问题】

    题目 最开始的时候 有100个同学 每个同学都有一个编号 从一到一百 所有的人围城一圈 报数的规则是 从 1 开始报数 如果某个报数为 M 那么他就退出游戏 他的下一个人从 1 重新开始报数 如果最后的人数小于M 则停止游戏 请你计算最后剩
  • 分类、目标检测、语义分割、实例分割的区别

    计算机视觉的任务很多 有图像分类 目标检测 语义分割 实例分割和全景分割等 那它们的区别是什么呢 1 Image Classification 图像分类 图像分类 下图左 就是对图像判断出所属的分类 比如在学习分类中数据集有人 person
  • Redis压力测试——redis-benchmark

    1 redis benchmark简介 redis benchmark是官方自带的Redis性能测试工具 用来测试Redis在当前环境下的读写性能 在使用Redis的时候 服务器的硬件配置 网络状况 测试环境都会对Redis的性能有所影响
  • MATLAB矩阵的值,迹,秩,范数,上三角矩阵,下三角矩阵,主对角线元素

    设A为矩阵 det A 求矩阵的值 trace A 求矩阵的迹 rank A 求矩阵的秩 norm A 求矩阵的范数 norm A 1 求矩阵的1范数 norm A inf 求矩阵的无穷范数 diag A 求主对角线元素 diag详细用法
  • java中获取泛型参数详解【全网最详细】

    java中所有的类型都继承自Type其中包括Class类也是继承自它 另外它还有四个重要的子类 ParameterizedType表示是个带泛型的类型 如List
  • android 触摸屏校准软件,触摸屏软件(eGalaxTouch)下载_触摸屏软件(eGalaxTouch)官方下载-太平洋下载中心...

    eGalaxTouch是一款电子触摸屏驱动程序 电子触摸屏幕有时候是需要校准一下才能准确获取坐标点 这款软件可以帮助我们校准触摸屏参数 推荐有需要的用户下载使用 校准方法 1 下载 安装eGalaxTouch Android板子连接液晶屏
  • 线性表链式储存(图书管理系统)

    线性表链式储存和顺序储存各有优点 该笔记的一些说法是自己的理解 并不官方 首先我们要创建一个结构体用来储存书籍的相关属性信息 我称为数据结构体 储存一组待储存的数据 typedef struct book string bnum 书的编号
  • n个结点的无向完全图的生成树的个数

    头部闲扯 今天闲来在google搜了一下cantjie 突然发现我的博客竟然被引用过 很是惊讶 因为虽然仅仅只是过去一年 我现在看我去年写的博客 就有种 这写的什么垃圾玩意 的感觉 没想到竟然也会有人浏览并引用我的博客 想来这个博客闲置一年
  • Win10如何查看Nvidia支持的CUDA版本

    打开设置 在搜索里输入控制面板 打开控制面板 点击 硬件和声音 选项 然后选择Nvidia面板 在Nvidia面板中点击帮助 选择系统信息 选择组件 找到 NVCUDA DLL 即可看到支持的CUDA版本
  • 递归算法应用并使用分页

    递归算法应用并使用分页 直接上代码 注释很全 自己看 public List
  • eclipse中JUnit的使用

    一 JUnit单元测试概述 JUnit是一个Java语言的单元测试框架 JUnit有它自己的JUnit扩展生态圈 多数Java的开发环境都已经集成了JUnit作为单元测试的工具 Junit是一套框架 继承TestCase类 因此可以用Jun
  • java.io.FileNotFoundException: File does not exist: hdfs://xxx

    一 产生问题背景 我们公司正在准备从cdh迁回社区版hadoop集群 启动flink任务的时候 还未运行就直接报错 Caused by org apache flink yarn YarnClusterDescriptor YarnDepl
  • C#+sqlserver+asp.net婚纱影楼管理系统

    一 源码描述 这是一款简洁十分美观的ASP NET sqlserver源码 界面十分美观 功能也比较全面 比较适合 作为毕业设计 课程设计 使用 感兴趣的朋友可以下载看看哦 二 功能介绍 该源码功能十分的全面 具体介绍如下 婚纱影楼管理系统
  • ECEF和ENU坐标之间的转换

    转载 https gssc esa int navipedia index php Transformations between ECEF and ENU coordinates 1 定义 ENU coordinates local Ea
  • 我的第一个Java程序

    没想到从纯前端转到了JAVA Web 首先第一个 JAVA程序 计算图形面积 使用工厂模式和反射机制实现 Illegal modifier for the interface method paraNeed only public abst
  • redis高可用与集群实战案例

    一 配置redis主从 主备模式 可以实现 Redis 数据的跨主机备份 程序端连接到高可用负载的VIP 然后连接到负载服务器设置的Redis后端 real server 此模式不需要在程序里面配置 Redis 服务器的真实 IP 地址 s
  • vba17-25

    十七 变量默认值 简写变量 常量 1声明变量的同时赋值 数值 0 字符串 空字符串 布尔 False 变体 Empty 空 2 布尔值 false 0 True 1 所有非0的数字转换成布尔类型都是True 3变量定义简写 dim i in