q1: excel 没有vba入口

1. 快捷键:Alt + F11

2.调出开发工具

  1. 1. 打开文件后,依次点击菜单项【文件】-【选项】;
  2. 2、在“Excel”选项界面中点击左侧的【自定义功能区】;
  3. 3、在自定义功能区主选项卡下,找到【开发工具】,打上钩,然后确定;

range, cells

表示单元格时:range("A1")表示第一行第一列的单元格,实质上于cells(1,1)效果一样。

表示连续的区域:第一是range("起始单元格","结束单元格"),第二是range("起始单元格:结束单元格")

  1. Range("a1", "b4").Select
  2.  
  3. Range("a2:b4").Select

表示不连续的区域:range("起始单元格1:结束单元格1,起始单元格2:结束单元格2")

  1. Range("a1:b2,c3:d4").Select

表示行和列:例如,我想选择第一行,则可以这样range("1:1"),如果想表示第一列range("a:a")

  1. Range("1:1").Select

  2. Range("a:a").Select

for each

  1. Dim cell As Range
  2. For Each cell In Sheet2.Range("a1:b3")
  3. MsgBox cell.value
  4. 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 比较运算符

  1. | S / N | 运算符 | 说明 | 范例 | 输出 |
  2. | 1 | = | 相等:检查两个值是否相等。 它也用作赋值运算符 | 如果 x = z | 如果它们相等则返回 true,否则返回 false |
  3. | 2 | < | 小于:此运算符用于减去数字 | 如果 x < z | 如果 x 小于 z,则返回 true,否则返回 false |
  4. | 3 | > | 大于:此运算符用于将数字相乘 | 如果 x > z | 如果 x 大于 z,则返回 true,否则返回 false |
  5. | 4 | < > | 不等于:此运算符用于除数 | 如果 x < > z | 如果它们不相等,则返回 true,否则返回 false |
  6. | 5 | < = | 小于或等于: | 如果 x < = z | 如果 x 小于或等于 z,则返回 true,否则返回 false |
  7. | 6 | > = | 大于或等于: | 如果 x > =则 | Returns true if x is greater than z, else it returns false |

array

数组清零:erase

InStr

InStr()函数返回一个字符串第一次出现在一个字符串,从左到右搜索。返回搜索到的字符索引位置。

语法

  1. InStr([start,]string1,string2[,compare])
参数说明
  • Start - 一个可选参数。指定搜索的起始位置。搜索从第一个位置开始,从左到右。
  • String1 - 必需的参数。要搜索的字符串。
  • String2 - 必需的参数。要在String1中搜索的字符串。
  • Compare - 一个可选参数。指定要使用的字符串比较。它可以采取以下提到的值:
    • 0 = vbBinaryCompare - 执行二进制比较(默认)
    • 1 = vbTextCompare - 执行文本比较

示例

参考以下代码 -

  1. Private Sub Constant_demo_Click()
  2. Dim Var As Variant
  3. Var = "Microsoft VBScript"
  4. MsgBox ("Line 1 : " & InStr(1, Var, "s"))
  5. MsgBox ("Line 2 : " & InStr(7, Var, "s"))
  6. MsgBox ("Line 3 : " & InStr(1, Var, "f", 1))
  7. MsgBox ("Line 4 : " & InStr(1, Var, "t", 0))
  8. MsgBox ("Line 5 : " & InStr(1, Var, "i"))
  9. MsgBox ("Line 6 : " & InStr(7, Var, "i"))
  10. MsgBox ("Line 7 : " & InStr(Var, "VB"))
  11. End Sub

当你执行上面的函数时,它会产生下面的输出。

  1. Line 1 : 6
  2. Line 2 : 0
  3. Line 3 : 8
  4. Line 4 : 9
  5. Line 5 : 2
  6. Line 6 : 16
  7. Line 7 : 11
 
 

byVal 和 byRef 区别

ByVal是by Value, 也就是值传递

ByRef是by Reference,也就是引用传递

在VBA中默认是ByRef的

byref ,被调用程序 按地址传递,传回主程序的参数,回调时会受影响。

按地址传递(ByRef),是指主程序直接将数据交给子过程(过程中定义传递方式),在过程中修改、调试、返回给主程序,主程序输出的是修改后的值。

VBA默认按地址传递,方便管理?

byval  ,被调用程序 按值传递,传回主程序的参数,回调时会不受改变。

按值传递(Byval),是指将主程序的值(副本一份)给子过程,过程对副本操作,主程序输出的仍是原值。若想输出值传递后的值,可在子过程中设置输出。

  1. Function Test1(ByVal a As Long) As Long
  2.     a = a + 1
  3.     Test1 = a
  4. End Function
  5.  
  6. Function Test2(ByRef a As Long) As Long
  7.     a = a + 1
  8.     Test2 = a
  9. End Function
  10.  
  11. Function Test3(a As Long) As Long
  12.     a = a + 1
  13.     Test3 = a
  14. End Function
  15.  
  16. Sub zz()
  17.     Dim i As Long
  18.     i = 10
  19.     MsgBox (Test1(i))
  20.     MsgBox (i)
  21.     MsgBox (Test2(i))
  22.     MsgBox (i)
  23.     MsgBox (Test3(i))
  24.     MsgBox (i)
  25. End Sub
  26.  
  27. 结果是 11 10 11 11 12 12

数据类型与字符

Dim FirstName$

上面的声明和Dim FirstName As String是一样的。

Set 语句

将对象引用分配给变量属性

conf_field(conf_no_构建表, 1) = "构建表"

vba for excel 随笔的更多相关文章

  1. VBA在Excel中的应用(一):改变符合条件单元格的背景颜色

    在使用excel处理数据的时候,为了能更清晰的标示出满足特定条件的单元格,对单元格添加背景色是不错的选择.手工处理的方式简单快捷,但是当遇到大批量数据,就会特别的费时费力,而且不讨好(容易出错).通过 ...

  2. VBA取得EXCEL表格中的行数和列数

    VBA取得EXCEL表格中的行数和列数 初学EXCEL宏的童鞋,总是很想知道表格中含有数据的行数和列数,尤其是行数和列数不确定的情况下.这样可以避免很多的错误,并且可以提高效率.但每次用到的时候到网上 ...

  3. 【VBA研究】用VBA取得EXCEL随意列有效行数

    作者:iamlaosong 用VBA对Excel文件进行处理的时候,keyword段的列号编程时往往是不知道的.须要通过參数设定才干知道,因此.我们编程的时候,就不能用这种语句取有效行数: linen ...

  4. VBA在Excel中的应用(三)

    目录  Chart Export Chart Format Chart Lengend  Chart Protect  Chart Title  Chart Chart Export 1. 将Exce ...

  5. 利用VBA查找excel中一行某列第一次不为空与最后一列不为空的列数

    昨日同事有需求,想知道每个商品第一次销售的月份,以及最后一次销售的月份. 本想通过什么excel函数来解决,但是找了半天也没找到合适的,最后还是通过VBA来解决吧. 使用方法: Excel工具-宏-V ...

  6. 使用VBA实现Excel自杀功能

    曾经看到过一个“Excel-Home”出品的“关于Excel自杀功能”的视频教程,经认真学习后,我写下了自己的代码,分享于此. 实现思路: 使用VBA创建一个隐藏的名称,记录当前工作簿打开的次数,如果 ...

  7. vba实现excel多表合并

    Excel多表合并之vba实现 需求 保留列名,复制每一个excel里的数据,合并到一个excel 操作步骤 将要合并的文件放在同一文件夹下,复制过来就好(ps:最好不要直接操作原数据文件,避免操作失 ...

  8. 使用VBA将Excel指定单元格数据、字符串或者图表对象插入到Word模板指定书签处

    准备工作: 1.首先需要提供一个word模板,并且标记好您要插入书签的位置,定义书签的命名.如图 2.模拟您要插入的Excel原始数据和图表对象 插入代码如下: Private Sub Command ...

  9. 利用vba实现excel表格连接打印编号(一页两个编号),编号支持前缀

    先看一下excel文件, 下图左边部分为文件签审单为要打印的内容, 要求一页需要打印两个文件签审单, NO需要根据打印页面连续编号, 右边部分为打印设置,以及vba部分代码展示, 打印设置可以设置打印 ...

  10. 【VBA】EXCEL通过VBA生成SQL,自动生成创建表结构SQL

    原文:https://blog.csdn.net/zutsoft/article/details/45441343 编程往往与数据库密不可分,一个项目往往有很多的表,很多时候通过excel来维护表结构 ...

随机推荐

  1. NLP与深度学习(三)Seq2Seq模型与Attention机制

    1.   Attention与Transformer模型 Attention机制与Transformer模型,以及基于Transformer模型的预训练模型BERT的出现,对NLP领域产生了变革性提升 ...

  2. Netty(三)Netty模型

    1. Netty模型 Netty主要基于主从Reactor多线程模型做了一定的改进,其中主从Reactor多线程模型有多个Reactor. 简版图: 说明: BossGroup线程维护Selector ...

  3. NXP i.MX 8M Plus工业核心板规格书(四核ARM Cortex-A53 + 单核ARM Cortex-M7,主频1.6GHz)

      1 核心板简介 创龙科技SOM-TLIMX8MP是一款基于NXP i.MX 8M Plus的四核ARM Cortex-A53 + 单核ARM Cortex-M7异构多核处理器设计的高端工业核心板, ...

  4. [UG 二次开发 python ] 截图,并用 opencv 显示出来

    需要 numpy,cv2 截图,去除背景,只显示主要部分 # nx: threaded from typing import Dict import NXOpen import numpy as np ...

  5. 详解Web应用安全系列(8)不足的日志记录和监控

    在Web安全领域,不足的日志记录和监控是一个重要的安全隐患,它可能导致攻击者能够更隐蔽地进行攻击,同时增加了攻击被检测和响应的难度.以下是对Web攻击中不足的日志记录和监控漏洞的详细介绍. 一.日志记 ...

  6. Spark3学习【基于Java】1. Spark-Sql入门程序

    spark-sql是用来处理结构化数据的模块,是入门spark的首要模块. 技术的学习无非就是去了解它的API,但是Spark有点难,因为它的例子和网上能搜到的基本都是Scala写的.我们这里使用Ja ...

  7. Notepad++ 搭建简单Java编译运行环境

    简介 有时候使用Eclips进行Java相关方法的测试和验证太繁琐,经过查询实践,使用了Notepad++和JDK搭建了一个简单的编译运行环境. 搭建过程 在电脑上安装Java环境(网上教程很多,此过 ...

  8. SpringBoot快速插入Mysql 1000万条数据

    导读 有时候为了验证系统瓶颈,需要往数据库表中插入大量数据,可以写sheel脚本插入,前几天为了插入100万条数据,走的sheel脚本(点我直达),插入速度简直无法直视,花了3小时,才插入了10万条, ...

  9. mybatis 逆行工程 附源码

    导读 逆向工程说白了,就可以简化开发工作量,自动生成一些死板的东西,比如POJO.映射文件等等,然后在将代码拷贝至实际工程,直接拿来用! 项目结构 GeneratorSqlMap.java impor ...

  10. Curve 替换 Ceph 在网易云音乐的实践

    Curve 块存储已在生产环境上线使用近三年,经受住了各种异常和极端场景的考验,性能和稳定性均超出核心业务需求预期 网易云音乐背景 网易云音乐是中国领先的在线音乐平台之一,为音乐爱好者提供互动的内容社 ...