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来维护表结构 ...
随机推荐
- 【译】Visual Studio 2022 - 17.10 性能增强
我们很高兴地宣布 Visual Studio 2022 的最新更新,它为您带来了 IDE 各个领域的一系列性能增强.在这篇博客中,我们将重点介绍17.10版本中一些最显著的改进,比如更快的 Windo ...
- Kubernetes(三)实战入门
实战入门 本章介绍如何在kubernetes集群中部署一个nginx服务,并能够对其进行访问. 1. Namespace Namespace主要作用是实现多套环境的资源隔离或者多租户的资源隔离. 默认 ...
- “古剑山”初赛Misc 幸运饼干
"古剑山"初赛Misc 幸运饼干 考点:Chrome的Cookies解密 赛中思路 bandzip极限压缩hint.jpg后打明文攻击 压缩包密码:sv@1v3z ┌──(root ...
- c# 对DataTable数据筛选后进行修改操作
记录一次对DataTable中的数据筛选去重后,然后对数据进行修改! foreach (DataRow dr in dt.Rows) // 便利dt { if (StringUtil.isNotNul ...
- 存储器与CPU的连接
存储器与CPU连接分主要看前五步 1.首先根据给出的地址范围写出二进制码 2.确定芯片的类型和数量 3.确定地址线 4.确定片选信号 要注意MREQ是低电平有效,要连到138译码器的低电平
- <el-table-column prop="item_no" label="料号"/>设置最小宽度
可以通过min-width属性来设置el-table-column的最小宽度.以下是一个示例: <template> <el-table :data="tableData& ...
- Java学习_重置版一:Java语言基础之数据和标识符等
第一:关键字 (1)被Java语言赋予特定含义的单词 (2)特点:全部小写. (3)注意事项: A:goto和const作为保留字存在. B:类似于Notepad++这 ...
- AI时代你应聚焦的领域在哪里
1. 每个人都应该拥抱AI 随着AI的飞速发展,把我们带到了一个全新的时代.在这个时代,AI将逐步渗透到各个方面,比如:自动驾驶.智能家居.医疗诊断.大模型等等.每个人都应该积极拥抱AI,让AI给我们 ...
- Centos7下安装配置最新版本Jenkins(2.452.3)
1.基础环境配置 1.1 服务器下载Jenkins安装包 下载地址:https://www.jenkins.io/download/ 下载命令:wget https://get.jenkins.io/ ...
- python+selenium基础之XPATH定位(第一篇)
世界上最远的距离大概就是明明看到一个页面元素站在那里,但是我却定位不到!! selenium定位元素的方法有很多种,像是通过id.name.class_name.tag_name.link_text等 ...