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编程基础知识扫盲,只适合纯自学新手看相关推荐

  1. java学习笔记15--多线程编程基础2

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note15.html,转载请注明源地址. 线程的生命周期 1.线程的生命周期 线程从产生到消亡 ...

  2. JDBC 学习笔记(一)—— 基础知识 + 分页技术

    2019独角兽企业重金招聘Python工程师标准>>> 本文查阅方法:     1.查阅目录 -- 查阅本文目录,确定想要查阅的目录标题     2.快捷"查找" ...

  3. MATLAB学习笔记2:MATLAB基础知识(下)

    阅读前请注意: 1. 该学习笔记是华中师范大学HelloWorld程序设计协会2021年寒假MATLAB培训的学习记录,是基于培训课堂内容的总结归纳.拓展阅读.博客内容由 @K2SO4钾 撰写.编辑, ...

  4. 【Python学习笔记】第一章基础知识:格式化输出,转义字符,变量类型转换,算术运算符,运算符优先级和赋值运算符,逻辑运算符,世界杯案例题目,条件判断if语句,猜拳游戏与三目运算符

    Python学习笔记之[第一章]基础知识 前言: 一.格式化输出 1.基本格式: 2.练习代码: 二.转义字符 1.基本格式: 2.练习代码: 3.输出结果: 三.输入 1.基本格式: 2.练习代码: ...

  5. GDAL学习笔记02:GDAL基础知识

    你的习惯决定了你会成为什么样的人. GDAL学习笔记02:GDAL基础知识 前言 1. 版本 2. 摘要 3. 说明 4. 微信公众号GISRSGeography 一.GDAL简介 二.导入GDAL ...

  6. 【学习笔记】Python编程,从入门到实践(自学python心路历程及学习笔记整理)

    [学习背景] 最爱语录:人生苦短,我用python! Input("Is life always this hard or is it just when you are a kid?&qu ...

  7. JavaSE学习笔记(一)基础知识

    本章包含内容有: java环境配置.注释.标识符.数据类型.类型转换.变量.常量.运算符.包机制.顺序结构.选择结构.循环结构.方法的定义和调用.命令行传参.可变参数. 点击这里查看更多JavaSE的 ...

  8. java学习笔记14--多线程编程基础1

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note14.html,转载请注明源地址. 多线程编程基础 多进程 一个独立程序的每一次运行称为 ...

  9. 1.2)深度学习笔记------神经网络的编程基础

    目录 1)Binary Classification 2)Logistic Regression 3)Logistic Regression Cost Function 4)Gradient Desc ...

  10. 1.Hadoop的安装和使用(华为云学习笔记,Spark编程基础,大数据)

    此笔记为第一篇,学校开放华为云平台,帮助我们学习有关大数据方面相关知识的学习笔记,因为是云平台,是已经搭建好linux环境了,使用的是Ubantu.精心整理,自学笔记,如有什么问题,请耐心指正 Had ...

最新文章

  1. python读取html_从零开始的Python爬虫教程(一):获取HTML文档
  2. Wireshark和 TcpDump抓包分析心得
  3. Video 对象方法 canPlayType()
  4. 第七节:框架搭建之页面静态化的剖析
  5. 城市大轰炸(洛谷P1830题题解,Java语言描述)
  6. Activiti 用户任务并行动态多实例(多用户执行流程)
  7. #define与const定义常量的区别
  8. YOLO系列专题——YOLOv2理论篇
  9. 手机12306买卧铺下铺技巧_手机上买火车票怎么买下铺
  10. js定义对象的多个属性值
  11. 第六章 用正三和弦为含跳进旋律配和声
  12. cad卸载_CAD卸载后为什么安装不了?解决方法原来是这样!
  13. flash spi 野火_野火stm32-SPI
  14. 各种品牌手机话机解锁秘籍
  15. 原创超简单代码(1.18.50)
  16. Python lambda表达式用法
  17. 开启HSTS让浏览器强制跳转HTTPS访问
  18. BLE Mesh (8) —— Friendship
  19. 搜狗高速浏览器2014 v5.0.0515 官方最新版
  20. 深耕智能制造,质子矩阵助力升级赋能

热门文章

  1. 网络规划设计师教程第二版目录
  2. 常见路由adsl猫默认密码
  3. Ant安装与配置build.xml文件说明
  4. case when 多条件 oracle,casewhen(casewhen同时满足多条件)
  5. 【rmzt:天使的向往win7主题】
  6. 梦三花重金修改服务器,2021年3月31日维护公告:新门派花果山
  7. Flash遮罩动画之画轴
  8. 在Solaris下安装中文语言包
  9. 手把手教你linux系统安装和完美配置
  10. DockerFile的编写构建镜像步骤,常用命令和案例