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):   一般看函数都是函数名,其实函数名只是个 名字
  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 x1

End Sub


Function FileCount(cPath As String) As Integer
    cFile = Dir(cPath & "*.txt")
    Do While cFile <> ""
        FileCount = FileCount + 1
        cFile = Dir
    Loop
    Debug.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
Do
    fName = 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]) 


 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值