VBA每日一练(4),补充VBA的基础语句知识,基本控制结构,I/O基础
一 编程的基础知识
1.1 编程基础知识
程序的构成
- 程序的构成(表面):很多语句
- 程序的构成(本质):数据,代码
- 程序的构成(过程构成)---I/O:输入 input,数据处理,输出 output
- 程序就是IO
数据和变量
- 数据是 纯数据,具体数据
- 变量,是存储数据的盒子-------本质是存储数据的地址
- 变量一般有数据类型,只存储这个类型的数据 (Python等语言,变量可以随意变化数据类型)
- 数据存在内存/硬盘内,都以字节 byte为单位
数据类型与大小
- 不同的数据类型,其实是不同的存储字节数byte
- 比如Unicode中 半角字符1个byte 汉字2个byte (utf-8汉字3个byte)
- 计算机内部最小存储单位是bit,一个byte是8bit,也就是11111111
- 2进制1个byte的范围是 00000000 - 11111111也就是2^8 也就是 256
语句/指令,函数,类等等
- 语句/指令: 就是一行代码
- block : 多行代码,一般的多行代码block是无意义的
- 函数(function): 一般看函数都是函数名,其实函数名只是个 名字
- function() 函数名,只是1个代号,
- 函数本质是 那多行代码
- 以{} 扩起来,或者在 f(): 缩进之后,或 function end function 之内
- 类(class)
- 实例 ( instance)
- 方法 object. f()
- 事件 object.open 同于判断触发事件、
- 属性 object.attr object.open() ?
1.2 编程模式
- 面向过程的编程
- 面向对象编程的!---差异很大,先构建 object --- class
- 面向组件编程
二 一些 coding技巧和潜规则等
2.1 怎么编程?
2.1.1 思路在 思考如何处理这个问题,分步骤
一段程序一定包括下面这3段内容(否则程序用来做什么呢?)
- 输入数据
- 处理---------------这是你 coding动手前,先要思考好的逻辑,分解,拆开为多个步骤
- 输出数据
2.1.2 为什么要用函数,不直接写一个block代码,或写个sub
- 因为直接写大段block代码,意味着,其他地方不能复用
- 把代码封装在函数里,比如下面这个,调用的方式用N种
- 第1种:EXCEL表 =filecount() 可以直接调用这个
- 第2种:用sub过程调用
- 第3种:用sub过程调用,然后直接= 函数返回值?
- 封装的注意点:像文件路径参数,需要拿出来,让调用函数的时候带参数调用,更加灵活
Sub jack007()x1 = FileCount("C:\Users\Administrator\Desktop\test1\")Debug.Print x1End SubFunction FileCount(cPath As String) As IntegercFile = Dir(cPath & "*.txt")Do While cFile <> ""FileCount = FileCount + 1cFile = DirLoopDebug.Print FileCount
End Function
2.2 一些习惯的规则
2.2.1 冷知识
- VBA停止代码快捷键,出现死循环的时候记得用
- 1 esc
- 2 ctrl+break
- 3 ctrl+alt+delete
- filename
- VBA 所谓的文件名,都是完整的文件路径+文件名
- 使用语句好习惯
- 比如open 文件了,记得马上关闭,特别是循环体内
- open as #1
- close #1
- 对文件处理要成对操作
- 赋初值
- sum=0 一般不是赋值,是重置变量,你赋值一般不会赋值为0,而都是进行运算。
- a=1 这种一般是赋初值(也有重置功能)
- 类似于inputbox
- application.getsaveasfilename
- application.getopenfilename
- Application.GetSaveAsFilename为调出标准的“另存为”对话框,获取用户文件名,但并不真正保存任何文件,然后使用代码保存文件。
- 还有Application.GetOpenFileName可以调出标准的“打开”对话框。
Set NewBook = Workbooks.Add
DofName = Application.GetSaveAsFilename
Loop Until fName <> False
NewBook.SaveAs Filename:=fName
- 查找使用区域的行的最大,最小单元格
- end(xltoright)
- end(xlleft)
- 查找使用区域的列的最大,最小单元格
- end(xlup)
- end(xldown)
- 非空的最大行数
2.2.2等价写法
- object.方法()往往有两种写法
- 实测这两种写法是等价的
- Workbooks.OpenText ("C:\Users\Administrator\Desktop\test101.txt")
- Workbooks.OpenText Filename:="C:\Users\Administrator\Desktop\test101.txt"
- line语句和line()函数
- Line Input #filenumber, varname '读入1行内容到varname
- varname = Input(1, #1) '读入1个字符到varname
2.2.3 潜规则用法
- 返回值的一个例子
- boolen ,只有2个值 true/1 false/0
- int 效果其实和boolen差不多,但因为 值域更广,所以适用性更强
- 一般情况下
- false/0
- true/1 /-1 /999 /-9999 都是 true
- 举例子,默认eof(1) 返回的肯定是true
- do while not eof(1)
- loop
dir的参数举例子,参数经常是 0,1,2,4,8,16 等2的次方
数 值 描述
vbNormal 0 (缺省) 指定没有属性的文件。
vbReadOnly 1 指定无属性的只读文件
vbHidden 2 指定无属性的隐藏文件
VbSystem 4 指定无属性的系统文件 在Macintosh中不可用。
vbVolume 8 指定卷标文件;如果指定了其它属性,则忽略vbVolume在Macintosh中不可用。
vbDirectory 16 指定无属性文件及其路径和文件夹。
vbAlias 64 指定的文件名是别名,只在Macintosh上可用。
- 返回值的另外一个例子
- while not len()
- 判断字符串--文件名--文件内容,是否为空
- Do While Not Len(str1) '判断是否取到空行
- 循环的例子
- 用循环体i 的例子,经典形式,for i i=i+1 搭配使用
- for i= 1 to 3
- i=i+1
- 不用for也可以用循环体 k,i 等,循环体只要在循环内部即可,不一定非要用for 搭配
- do while not eof(1) 也是可以的
- i=i+1
- loop
- 不用循环体i,用for each也可以做循环
- for each f1 in dir
- next
三 大多数语言的基本控制结构有3种:
顺序结构、选择结构和循环结构。
顺序结构
- 顺序结构就是按照语句的书写顺序从上到下、逐条语句地执行。
- 执行时,编写在前面的代码先执行,编写在后面的代码后执行。
- 这是最普遍的结构形式,也是后面两种结构的基础。
- 顺序结构不需要使用结构控制语句
- 顺序语句我印象最深的就是cmd,goto语句很能说明这个特点
选择结构(我想也可以称为:分支结构,岔路结构,树杈结构吧?)
- 典型的用法就是 if if
- 各个语言里常见的就是 if elseif else , select case case 等等
- 这些都是结构控制语句
循环结构
- 典型的用法就是 for ...next
- 常见的还有 while , do while..... , do ... while
基本的一些规范分类叫法
- 语句 open
- 函数 open()
- 方法 object.open()
- 属性 object. 或 filename:=
VBA的 I/O相关
输出的 output
- msgbox
- Debug.Print [outputlist]
- print #1, "" ;""
输入的 input
- InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context])
VBA每日一练(4),补充VBA的基础语句知识,基本控制结构,I/O基础相关推荐
- VBA每日一练(24)在VBA里,3种方法,使用fso 如何统计 某种后缀名类型的文件数量
fso统计文件数量 fso统计文件数量,如果不区分文件类型,可以非常方便 fso.getfolder().files.count 但是fso统计某种类型的文件数量,需要遍历才行 可以用 for ea ...
- VBA每日一练(22),VBA 的 scripting 类库 (scrrun.dll) 和 fso 详细学习
1 scripting类库 (scrrun.dll) Scripting类库中有三个可以直接使用NEW关键字实例化的类,第一个就是常用的字典,第三个是FSO. 这个介绍的挺好 https://www. ...
- VBA每日一练(18),数组array的用法 redim preserve等
定义方式 dim arr11 (5) dim arr12 (0 to 5 ) dim arr13 (1 to 5) dim arr21(1,5) dim arr22(0 to 1 ,0 to 5 ...
- Python每日一练——第20天:条件语句
文章目录 <100天精通Python>专栏推荐白嫖80g Python全栈视频 1. 找到HR 2. 判断列表是否为空 3. 禁止重复注册 4. 食堂点餐 <100天精通Python ...
- 数据结构与算法——每日一练(4月)
文章目录 每日一练 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10 4.11 4.12 4.13 4.14 4.15 4.16 4.17 4.18 4.19 4.20 ...
- 建群网培PMP每日一练2020-8-6
建群网培PMP,助力一次过PMP 建群网培PMP,PMP加工厂 2019年,连续3期100%通过 培训: fu置本段内容?yKiccZMQnOs?打楷τa0寳 1.收集测量和分析测量结果,以及预测趋势 ...
- 【软考备战·希赛网每日一练】2023年5月2日
文章目录 一.今日成绩 二.错题总结 第一题 三.知识查缺 题目及解析来源:2023年05月02日软件设计师每日一练 一.今日成绩 二.错题总结 第一题 解析: 三.知识查缺 复习 流水线技术. 序列 ...
- 计算机office科目,2019全国计算机二级Office科目每日一练9
2019全国计算机二级Office科目每日一练9 2019-08-23 09:46:42来源:全国计算机等级考试网分享 导读:2019年9月将正式开始报考计算机考试了,你们是否已经准备好了呢?备考过程 ...
- C语言每日一练——第63天:狼追兔子问题
C语言每日一练 2021年12月2日 文章目录 题目描述 问题分析 代码实现 运行结果 网上参考 题目描述 一只兔子躲进了10个环形分布的洞中的一个.狼在第一个洞中没有找到兔子,就隔一个洞,到第3个洞 ...
最新文章
- qlistview 键盘上下键事件_不习惯华为的全面屏导航?教你换回三角键盘导航
- spring security 注解不生效的一些隐含问题
- 手工纸盒子_【创意手工】怒赞!如此有趣的儿童折纸,你不学我学!
- r.java没有生成_R.java 常见问题(R.java文件没有生成 )
- python复制文件的代码_python调用cmd复制文件代码分享
- Python稳基修炼之计算机等级考试易错细节题1(含答案和解析)
- 计算机算法设计与分析 最长子序列
- mysql 5.6 datetime 保存精确到秒
- yolov3从头实现(五)-- yolov3网络块
- 解决办法:无法解析的外部符号 __imp_RegCloseKey
- 修改hadoop配置文件,没有生效
- QT5.14.2 + MSVC2017_64 + MySQL5.7.29 数据库驱动编译及配置
- [计算机毕业设计]深度学习的图标型验证码识别系统
- 深圳赛意信息 怎么样_深圳鹏程整形医院怎么样_全新整形价目表_资质
- 如何解决苹果M1处理器Mac翻车问题
- Python代码画樱花树--Turtle绘图
- 北大青鸟---不怎么样
- 光纤HDMI线比HDMI高清线好,你知道好在哪里吗?
- 发现个下载Sailfish OS源码的地方
- 神码ai人工智能写作机器人_神经符号AI为我们提供具有真正常识的机器