一 编程的基础知识

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):   一般看函数都是函数名,其实函数名只是个 名字
  1. function() 函数名,只是1个代号,
  2. 函数本质是 那多行代码
  3. 以{} 扩起来,或者在 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基础相关推荐

  1. VBA每日一练(24)在VBA里,3种方法,使用fso 如何统计 某种后缀名类型的文件数量

    fso统计文件数量 fso统计文件数量,如果不区分文件类型,可以非常方便  fso.getfolder().files.count 但是fso统计某种类型的文件数量,需要遍历才行 可以用 for ea ...

  2. VBA每日一练(22),VBA 的 scripting 类库 (scrrun.dll) 和 fso 详细学习

    1 scripting类库 (scrrun.dll) Scripting类库中有三个可以直接使用NEW关键字实例化的类,第一个就是常用的字典,第三个是FSO. 这个介绍的挺好 https://www. ...

  3. 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 ...

  4. Python每日一练——第20天:条件语句

    文章目录 <100天精通Python>专栏推荐白嫖80g Python全栈视频 1. 找到HR 2. 判断列表是否为空 3. 禁止重复注册 4. 食堂点餐 <100天精通Python ...

  5. 数据结构与算法——每日一练(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 ...

  6. 建群网培PMP每日一练2020-8-6

    建群网培PMP,助力一次过PMP 建群网培PMP,PMP加工厂 2019年,连续3期100%通过 培训: fu置本段内容?yKiccZMQnOs?打楷τa0寳 1.收集测量和分析测量结果,以及预测趋势 ...

  7. 【软考备战·希赛网每日一练】2023年5月2日

    文章目录 一.今日成绩 二.错题总结 第一题 三.知识查缺 题目及解析来源:2023年05月02日软件设计师每日一练 一.今日成绩 二.错题总结 第一题 解析: 三.知识查缺 复习 流水线技术. 序列 ...

  8. 计算机office科目,2019全国计算机二级Office科目每日一练9

    2019全国计算机二级Office科目每日一练9 2019-08-23 09:46:42来源:全国计算机等级考试网分享 导读:2019年9月将正式开始报考计算机考试了,你们是否已经准备好了呢?备考过程 ...

  9. C语言每日一练——第63天:狼追兔子问题

    C语言每日一练 2021年12月2日 文章目录 题目描述 问题分析 代码实现 运行结果 网上参考 题目描述 一只兔子躲进了10个环形分布的洞中的一个.狼在第一个洞中没有找到兔子,就隔一个洞,到第3个洞 ...

最新文章

  1. qlistview 键盘上下键事件_不习惯华为的全面屏导航?教你换回三角键盘导航
  2. spring security 注解不生效的一些隐含问题
  3. 手工纸盒子_【创意手工】怒赞!如此有趣的儿童折纸,你不学我学!
  4. r.java没有生成_R.java 常见问题(R.java文件没有生成 )
  5. python复制文件的代码_python调用cmd复制文件代码分享
  6. Python稳基修炼之计算机等级考试易错细节题1(含答案和解析)
  7. 计算机算法设计与分析 最长子序列
  8. mysql 5.6 datetime 保存精确到秒
  9. yolov3从头实现(五)-- yolov3网络块
  10. 解决办法:无法解析的外部符号 __imp_RegCloseKey
  11. 修改hadoop配置文件,没有生效
  12. QT5.14.2 + MSVC2017_64 + MySQL5.7.29 数据库驱动编译及配置
  13. [计算机毕业设计]深度学习的图标型验证码识别系统
  14. 深圳赛意信息 怎么样_深圳鹏程整形医院怎么样_全新整形价目表_资质
  15. 如何解决苹果M1处理器Mac翻车问题
  16. Python代码画樱花树--Turtle绘图
  17. 北大青鸟---不怎么样
  18. 光纤HDMI线比HDMI高清线好,你知道好在哪里吗?
  19. 发现个下载Sailfish OS源码的地方
  20. 神码ai人工智能写作机器人_神经符号AI为我们提供具有真正常识的机器

热门文章

  1. 西门子S7系列PLC安全防护研究
  2. 服务器centos 内网代理上网- tinyproxy
  3. Android警告信息:Use Autofill
  4. 调用第三方接口的方式(简洁版)
  5. Resin 3.0.14 和 IIS6 整合
  6. 读杨绛先生的《我们仨》部分片段
  7. 在线教育20年:在线教育的未来发展趋势
  8. python如何设置rgb颜色_Python 转换RGB颜色值的示例代码
  9. 金堂五月花计算机学校招聘,2019年成都市金堂五月花学校招生简介
  10. 建设GSM900/1800双频网应考虑的几个问题(转)