vba for excel 随笔
q1: excel 没有vba入口
1. 快捷键:Alt + F11
2.调出开发工具
1. 打开文件后,依次点击菜单项【文件】-【选项】;
2、在“Excel”选项界面中点击左侧的【自定义功能区】;
3、在自定义功能区主选项卡下,找到【开发工具】,打上钩,然后确定;
range, cells
表示单元格时:range("A1")表示第一行第一列的单元格,实质上于cells(1,1)效果一样。
表示连续的区域:第一是range("起始单元格","结束单元格"),第二是range("起始单元格:结束单元格")
Range("a1", "b4").Select
Range("a2:b4").Select
表示不连续的区域:range("起始单元格1:结束单元格1,起始单元格2:结束单元格2")
Range("a1:b2,c3:d4").Select
表示行和列:例如,我想选择第一行,则可以这样range("1:1"),如果想表示第一列range("a:a")
Range("1:1").Select
Range("a:a").Select
for each
Dim cell As Range
For Each cell In Sheet2.Range("a1:b3")
MsgBox cell.value
Next cell
comboBox
显示多列内容
rowsource属性:可以从工作表中导入数据 。
Columnheads属性:显示列标题,只在引用工作表数据源时才有效,而且数据源不能包括标题行。
ColumnCount属性:设置组合框可显示的列数。
TextColumn属性:选取多列时显示第N列的内容。
BoundColumn属性:指定返回第N列的值,作为窗体的数值。
ListRows属性设置,不含标题行
ColumnWidths属性:设置下拉列表的列宽,可以用三种单位:厘米、磅、英寸。
ShowDropButtonWhen 属性:可以设置是否显示下拉按钮图标。如果写了获得焦点自动打开下拉列表的代码,似乎不设置也行,但有图标会比较清晰。
DropButtonStyle 属性:设置下拉按钮的类型。

VBA sub 与 function 的区别
sub称为过程, function称为函数,他们之间的唯一区别是function有返回值。
完全可以把sub写成function,只要不用function的返回值就可以了。C语言就只有函数而没有过程,因此一般情况下都可以用function来代替sub。
但这两段代码对于excel的运行位置不同。sub会出现在宏里,而function会出现在插入函数中。
函数和过程的调用---无参数时不能带括号!---需要使用返回值时带括号
case



VBA 比较运算符
| S / N | 运算符 | 说明 | 范例 | 输出 |
| 1 | = | 相等:检查两个值是否相等。 它也用作赋值运算符 | 如果 x = z | 如果它们相等则返回 true,否则返回 false |
| 2 | < | 小于:此运算符用于减去数字 | 如果 x < z 则 | 如果 x 小于 z,则返回 true,否则返回 false |
| 3 | > | 大于:此运算符用于将数字相乘 | 如果 x > z 则 | 如果 x 大于 z,则返回 true,否则返回 false |
| 4 | < > | 不等于:此运算符用于除数 | 如果 x < > z | 如果它们不相等,则返回 true,否则返回 false |
| 5 | < = | 小于或等于: | 如果 x < = z | 如果 x 小于或等于 z,则返回 true,否则返回 false |
| 6 | > = | 大于或等于: | 如果 x > =则 | Returns true if x is greater than z, else it returns false |
array
数组清零:erase
InStr
InStr()函数返回一个字符串第一次出现在一个字符串,从左到右搜索。返回搜索到的字符索引位置。
语法
InStr([start,]string1,string2[,compare])
- Start - 一个可选参数。指定搜索的起始位置。搜索从第一个位置开始,从左到右。
- String1 - 必需的参数。要搜索的字符串。
- String2 - 必需的参数。要在String1中搜索的字符串。
- Compare - 一个可选参数。指定要使用的字符串比较。它可以采取以下提到的值:
- 0 = vbBinaryCompare - 执行二进制比较(默认)
- 1 = vbTextCompare - 执行文本比较
示例
参考以下代码 -
Private Sub Constant_demo_Click()
Dim Var As Variant
Var = "Microsoft VBScript"
MsgBox ("Line 1 : " & InStr(1, Var, "s"))
MsgBox ("Line 2 : " & InStr(7, Var, "s"))
MsgBox ("Line 3 : " & InStr(1, Var, "f", 1))
MsgBox ("Line 4 : " & InStr(1, Var, "t", 0))
MsgBox ("Line 5 : " & InStr(1, Var, "i"))
MsgBox ("Line 6 : " & InStr(7, Var, "i"))
MsgBox ("Line 7 : " & InStr(Var, "VB"))
End Sub
当你执行上面的函数时,它会产生下面的输出。
Line 1 : 6
Line 2 : 0
Line 3 : 8
Line 4 : 9
Line 5 : 2
Line 6 : 16
Line 7 : 11
byVal 和 byRef 区别
ByVal是by Value, 也就是值传递
ByRef是by Reference,也就是引用传递
在VBA中默认是ByRef的
byref ,被调用程序 按地址传递,传回主程序的参数,回调时会受影响。
按地址传递(ByRef),是指主程序直接将数据交给子过程(过程中定义传递方式),在过程中修改、调试、返回给主程序,主程序输出的是修改后的值。
VBA默认按地址传递,方便管理?
byval ,被调用程序 按值传递,传回主程序的参数,回调时会不受改变。
按值传递(Byval),是指将主程序的值(副本一份)给子过程,过程对副本操作,主程序输出的仍是原值。若想输出值传递后的值,可在子过程中设置输出。
Function Test1(ByVal a As Long) As Long
a = a + 1
Test1 = a
End Function Function Test2(ByRef a As Long) As Long
a = a + 1
Test2 = a
End Function Function Test3(a As Long) As Long
a = a + 1
Test3 = a
End Function Sub zz()
Dim i As Long
i = 10
MsgBox (Test1(i))
MsgBox (i)
MsgBox (Test2(i))
MsgBox (i)
MsgBox (Test3(i))
MsgBox (i)
End Sub 结果是 11, 10, 11, 11, 12, 12
数据类型与字符
Dim FirstName$
上面的声明和Dim FirstName As String是一样的。

Set 语句
conf_field(conf_no_构建表, 1) = "构建表"
vba for excel 随笔的更多相关文章
- VBA在Excel中的应用(一):改变符合条件单元格的背景颜色
在使用excel处理数据的时候,为了能更清晰的标示出满足特定条件的单元格,对单元格添加背景色是不错的选择.手工处理的方式简单快捷,但是当遇到大批量数据,就会特别的费时费力,而且不讨好(容易出错).通过 ...
- VBA取得EXCEL表格中的行数和列数
VBA取得EXCEL表格中的行数和列数 初学EXCEL宏的童鞋,总是很想知道表格中含有数据的行数和列数,尤其是行数和列数不确定的情况下.这样可以避免很多的错误,并且可以提高效率.但每次用到的时候到网上 ...
- 【VBA研究】用VBA取得EXCEL随意列有效行数
作者:iamlaosong 用VBA对Excel文件进行处理的时候,keyword段的列号编程时往往是不知道的.须要通过參数设定才干知道,因此.我们编程的时候,就不能用这种语句取有效行数: linen ...
- VBA在Excel中的应用(三)
目录 Chart Export Chart Format Chart Lengend Chart Protect Chart Title Chart Chart Export 1. 将Exce ...
- 利用VBA查找excel中一行某列第一次不为空与最后一列不为空的列数
昨日同事有需求,想知道每个商品第一次销售的月份,以及最后一次销售的月份. 本想通过什么excel函数来解决,但是找了半天也没找到合适的,最后还是通过VBA来解决吧. 使用方法: Excel工具-宏-V ...
- 使用VBA实现Excel自杀功能
曾经看到过一个“Excel-Home”出品的“关于Excel自杀功能”的视频教程,经认真学习后,我写下了自己的代码,分享于此. 实现思路: 使用VBA创建一个隐藏的名称,记录当前工作簿打开的次数,如果 ...
- vba实现excel多表合并
Excel多表合并之vba实现 需求 保留列名,复制每一个excel里的数据,合并到一个excel 操作步骤 将要合并的文件放在同一文件夹下,复制过来就好(ps:最好不要直接操作原数据文件,避免操作失 ...
- 使用VBA将Excel指定单元格数据、字符串或者图表对象插入到Word模板指定书签处
准备工作: 1.首先需要提供一个word模板,并且标记好您要插入书签的位置,定义书签的命名.如图 2.模拟您要插入的Excel原始数据和图表对象 插入代码如下: Private Sub Command ...
- 利用vba实现excel表格连接打印编号(一页两个编号),编号支持前缀
先看一下excel文件, 下图左边部分为文件签审单为要打印的内容, 要求一页需要打印两个文件签审单, NO需要根据打印页面连续编号, 右边部分为打印设置,以及vba部分代码展示, 打印设置可以设置打印 ...
- 【VBA】EXCEL通过VBA生成SQL,自动生成创建表结构SQL
原文:https://blog.csdn.net/zutsoft/article/details/45441343 编程往往与数据库密不可分,一个项目往往有很多的表,很多时候通过excel来维护表结构 ...
随机推荐
- 如何在不能求逆的时候做子集卷积 exp(即便能求逆也比常见方法优雅)
为什么要求逆?正常做子集卷积 exp 的时候递推求 \(G=\exp(F)\) 的系数时要用. 什么情况下不能求逆?模 \(2^{64}\),或者压根不取模. 我们可能会想,算出来肯定除得尽啊,因为组 ...
- dig 命令详解及使用示例
一.背景知识 CNAME CNAME 是 Canonical Name 的缩写,它是 DNS(域名系统)记录的一种类型.CNAME 记录用于将一个域名映射(别名)到另一个域名.换句话说,当你访问一个设 ...
- FLUTTER 中 Isolate 的一个例子.
isolate 起因 最近看了一点isolate的东西, 自己写了一个例子. 普通的的 consummer-producer例子是只有前后两端的,实际上,会把前后两端再进行包装. 我这里这个例子,是把 ...
- 【Zabbix】Zabbix5.0安装部署问题汇总
报错信息:No package 'oniguruma' found 解决方法:https://www.limstash.com/articles/202003/1563 报错信息: PHP bcmat ...
- Linux Mint操作系统安装
1,Linux 发行版 什么是Linux 发行版呢?这要从Linux 来源说起.Unix操作系统后期,开始收费和商业闭源了.一个叫Richard Stallman 的人就发起 GNU 计划,想模仿U ...
- 粗枝大叶记录一下java9模块化改造一个项目的过程(Jigsaw)
假设项目结构如下: 其中的依赖关系为 我实际用的jdk是17 1. common模块创建描述文件,在common的src/main/java下创建module-info.java, 内容默认 /** ...
- 如何巧妙使用some函数来优化性能
什么时候会用的array.some? 需要从数组里快速找到符合条件的某一项 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测. 如果没有满足条件的元素,则返回false ...
- 记一次使用python的selenium库爬取动态页面内容的经历
安装与配置selenium 安装selenium库 pip install selenium 配置浏览器驱动(本次使用Google Chrome) 打开Chrome,在浏览器的地址栏,输入chrome ...
- [Unity] Dreamteck Splines实现沿路径移动功能
Dreamteck Splines实现沿路径移动功能 最近有一个"让物体沿固定路径移动"的需求,因此接触到了Dreamteck Splines插件. Dreamteck Splin ...
- oeasy教您玩转vim - 24 - 自定颜色
自定颜色 回忆上节课内容 这次我们研究了配色方案 找到了 colors 的位置 下载并应用了颜色方案 制作了自己的配色方案 下面我想修改配色方案的颜色 是否能成功??? 首先得有自己的颜色方案 #找到 ...