【原创】VBA学习笔记(316)VBA编程基础知识扫盲,只适合纯自学新手看
1 基础概念理解不透导致的问题1:语句不完整问题
1.1 语句不完整导致的报错
- 新手比如我在VBE里写了点东西,很多时候报错,是因为语句不完整导致的问题
- 比如写下面这些语句,点运行VBE会报错,为什么?
- Range("a1:a8")
- a
- 1+2
1.2 只有这样写才不报错,因为这样的一行都是完整的“一行语句”
- arr1= Range("a1:a8")
- Debug.print Range("a1:a8")才是完整的
1.3 为什么呢?因为对 变量,表达式,语句,语句块等概念傻傻没分清楚
- 变量,常量。比如a, 比如 range("a1:a8")
- 表达式: 比如 1+3
- 语句,一行代码的最小单位,一行代码至少得是一个语句。比如 a=1+99
- 语句块 ,多个语句
1.4 debug.print语句这种呢?这是一个操作,也是完整的语句
- debug.print
- debug.print ""
- debug.print "hello"
- DEBUG算啥?对象?模块?类? 还是特殊的
2 基础概念不牢固辨析2: VBA的基本数据类型没搞清楚
2.1 有时候为什么敲入代码,但输出的内容却不是你想要的?
比如如下
Sub test2()Debug.Print "第1行打印="; a
Debug.Print "第2行打印="; "a"
Debug.Print "第3行打印="; 1 + 2
Debug.Print "第4行打印="; a = 3End Sub
2.2 问题在于对VBA的基本数据类型没理解
2.2.1 基础数据类型,自身存储格式不同的数据存储类型
- 常量
- 字符串 "a" "1"
- 数字 1
- isnumeric isnumeric(1)=true isnumeric("1")=true
2.2.2 位置/存储空间/ 名字/代称------名字代表是指代的内容(指向存储的地方)
- 变量名代表变量,数组名就代表数组
- 函数名指向函数,没毛病
- 变量 a :动态变量包罗万象?可以代表不同类型的变量,默认初值不同
- array与array名
- dict 与 dictionary 名
- sub 与sub名
- function 与 function 名
- object 与 object 名
2.2.3 指代型数据类型的声明
- 必须事先声明的
- 数组,obejct等等
- 事先可先不声明的
- 变量可以不事先定义,也可以不赋初值
- 变量时不需要加引号的
- =SUM(INDIRECT(A1&"!B:B")) 相当于 sum(sheet1!b:b)
2.2.4 对比其他语言的 数据类型
- js 里 变量名 $a 字符串a
- VBA 变量名 a 字符串 "a" 数组array1=array() 函数 func1()
- python 变量名 a 字符串 "a" 数组 list=[] 函数 func1()
3 所谓数据结构,我的理解
- 我感觉比如 array dict 都是大神自己的自定义函数,加了一堆好用的方法和属性
- 所以,也就意味着某种语言和某种语言上的数据结构也是有局限性的,因为是人设计的嘛,肯定根据他当时的思路和遇到的问题是有关系的,很难普适所有情况吧。当然大神是很多的,这些语言和数据结构都很屌。
- 然后就变成了通用的标准了
- 你牛逼你也可以啊,哈哈
4 关于各种返回值
4.1 一般无返回值的,默认都返回 "" false 0
各种无返回值的 变量,表达式等,默认返回都为false ""
4.2 返回值确定为string类型的函数
- inputbox() 返回的一般都是字符串string类型 , 使用前记得要处理
- split() 返回的也是字符串,即使是数字,也是 "5" 这样的
4.3 理解概念,比如 string 字符串概念
- 不要记死的概念,比如变量和字符串
- 实际上要知道代码里 a=b1, a 这种都是变量,返回值为false ""
- 而 "a" 才是string
5 先弄清VBA的参数传递方法,然后才能明白函数参数写法
5.1 参数类型
- 必选参数
- 可选参数
5.2 传递方式
- 按位置传递参数,是有序的
- 按名称传递参数,不要求顺序,只要求 参数名正确
- 如果是混合传递,那么按名称传递的参数只能放在后面
5.3 比如最后1个参数不能是 , 省略,但是前面的参数可以省略
- arr4 = Application.Index(arr1, 3, 0)
- arr5 = Application.Index(arr1, 3)
- arr5 = Application.Index(arr1, 3,) 错误写法
- resize(3,2)
- resize(3)
- resize(3,) 错误写法
5.4 参数写法举例
Sub maomi3()Debug.Print VBA.DateSerial(2019, 12, 31)
Debug.Print VBA.TimeSerial(9, 15, 0)
Debug.PrintDebug.Print VBA.DateSerial(Year:=2019, Month:=12, Day:=31)
Debug.Print VBA.TimeSerial(Hour:=9, Minute:=15, Second:=0)
Debug.Print'Debug.Print VBA.DateSerial() Year:=2019, Month:=12, Day:=31
'Debug.Print VBA.TimeSerial() Hour:=9, Minute:=15, Second:=0
'Debug.PrintEnd Sub
6 需要搞清楚,变量的生效范围------否则不能理解变量什么时候需要独立,什么时候可以用一样的
6.1 变量的生效范围
- 一段代码里,特别注意变量要独立
- 新手喜欢一个变量,重复使用,要知道前面的代码极可能改变了变量的现在值。
- 理解
- 跨模块级变量 public
- 模块级变量 private dim
- 过程级变量 dim static
6.2 什么时候变量名尽量要独立?
- 因为过程和过程之间,变量一般不互相影响,所以除非是模块级变量,不同过程内,函数内的变量完全没必要独立
- 过程内,函数内的变量,尽量独立,否则会互相影响的可能性很大。除非不断的重置,也会很复杂把
7 有些函数,比如 工作表函数,需要把 查找单元格 加""
- range("a1:a8")
- [a1:a8]
- application.match("1", , 0)
【原创】VBA学习笔记(316)VBA编程基础知识扫盲,只适合纯自学新手看相关推荐
- java学习笔记15--多线程编程基础2
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note15.html,转载请注明源地址. 线程的生命周期 1.线程的生命周期 线程从产生到消亡 ...
- JDBC 学习笔记(一)—— 基础知识 + 分页技术
2019独角兽企业重金招聘Python工程师标准>>> 本文查阅方法: 1.查阅目录 -- 查阅本文目录,确定想要查阅的目录标题 2.快捷"查找" ...
- MATLAB学习笔记2:MATLAB基础知识(下)
阅读前请注意: 1. 该学习笔记是华中师范大学HelloWorld程序设计协会2021年寒假MATLAB培训的学习记录,是基于培训课堂内容的总结归纳.拓展阅读.博客内容由 @K2SO4钾 撰写.编辑, ...
- 【Python学习笔记】第一章基础知识:格式化输出,转义字符,变量类型转换,算术运算符,运算符优先级和赋值运算符,逻辑运算符,世界杯案例题目,条件判断if语句,猜拳游戏与三目运算符
Python学习笔记之[第一章]基础知识 前言: 一.格式化输出 1.基本格式: 2.练习代码: 二.转义字符 1.基本格式: 2.练习代码: 3.输出结果: 三.输入 1.基本格式: 2.练习代码: ...
- GDAL学习笔记02:GDAL基础知识
你的习惯决定了你会成为什么样的人. GDAL学习笔记02:GDAL基础知识 前言 1. 版本 2. 摘要 3. 说明 4. 微信公众号GISRSGeography 一.GDAL简介 二.导入GDAL ...
- 【学习笔记】Python编程,从入门到实践(自学python心路历程及学习笔记整理)
[学习背景] 最爱语录:人生苦短,我用python! Input("Is life always this hard or is it just when you are a kid?&qu ...
- JavaSE学习笔记(一)基础知识
本章包含内容有: java环境配置.注释.标识符.数据类型.类型转换.变量.常量.运算符.包机制.顺序结构.选择结构.循环结构.方法的定义和调用.命令行传参.可变参数. 点击这里查看更多JavaSE的 ...
- java学习笔记14--多线程编程基础1
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note14.html,转载请注明源地址. 多线程编程基础 多进程 一个独立程序的每一次运行称为 ...
- 1.2)深度学习笔记------神经网络的编程基础
目录 1)Binary Classification 2)Logistic Regression 3)Logistic Regression Cost Function 4)Gradient Desc ...
- 1.Hadoop的安装和使用(华为云学习笔记,Spark编程基础,大数据)
此笔记为第一篇,学校开放华为云平台,帮助我们学习有关大数据方面相关知识的学习笔记,因为是云平台,是已经搭建好linux环境了,使用的是Ubantu.精心整理,自学笔记,如有什么问题,请耐心指正 Had ...
最新文章
- python读取html_从零开始的Python爬虫教程(一):获取HTML文档
- Wireshark和 TcpDump抓包分析心得
- Video 对象方法 canPlayType()
- 第七节:框架搭建之页面静态化的剖析
- 城市大轰炸(洛谷P1830题题解,Java语言描述)
- Activiti 用户任务并行动态多实例(多用户执行流程)
- #define与const定义常量的区别
- YOLO系列专题——YOLOv2理论篇
- 手机12306买卧铺下铺技巧_手机上买火车票怎么买下铺
- js定义对象的多个属性值
- 第六章 用正三和弦为含跳进旋律配和声
- cad卸载_CAD卸载后为什么安装不了?解决方法原来是这样!
- flash spi 野火_野火stm32-SPI
- 各种品牌手机话机解锁秘籍
- 原创超简单代码(1.18.50)
- Python lambda表达式用法
- 开启HSTS让浏览器强制跳转HTTPS访问
- BLE Mesh (8) —— Friendship
- 搜狗高速浏览器2014 v5.0.0515 官方最新版
- 深耕智能制造,质子矩阵助力升级赋能