VBA用按钮查找B列空值?

笔记摘抄自EXCEL精英培训-蓝色幻想



1 表示一个单元格(a1)

2 表示相邻单元格区域

3 表示不相邻的单元格区域

(1) 判断是否为空单元格

(2) 判断是否为数字

(3) 判断是否为文本

(4) 判断是否为汉字

2.设置单元格自定义格式

3.按指定格式从单元格返回数值

Format函数语法(和工作表数Text用法基本一致)

五、设置Excel中的颜色

Excel中的颜色可以用两种方式获取,一种是EXCEL内置颜色,另一种是利用QBCOLOR函数返回

2.合并区域的返回信息

3.判断是否含合并单元格

(2)插入行并复制公式

(3)如不相同,则插入一行

(4)相同部门插入小计汇总

1 使用循环查找 (在单元格中查找效率太低)

Sub c1() 判断是否存在,并查找所在行数
 MsgBox "该入库单号码已经存在,请不要重复录入"

4 返回最下一行非空行的行数

 Sub c3() 返回最下一行非空行的行数 
MsgBox "该单据号码已经存在!,请不要重复录入"

1、什么是VBA数组呢?

VBA数组就是储存一组数据的数据空间?数据类型可以数字,可以是文本,可以是对象,也可以是VBA数组.

2 VBA数组存在形态

VBA数组是以变量形式存放的一个空间,它也有行有列,也可以是三维空间。

1)按编号(标)写入和读取

Sub t2() 向二维数组写入数据和读取

在内存中读取后用于继续运算,直接用下面的格式

数组是用编号排序的,那么如何获得一个数组的大小呢

Lbound(数组) 可以获取数组的最小下标(编号)
Ubound(数组) 可以获取数组的最大上标(编号)
Ubound(数组,1) 可以获得数组的行方面(第1维)最大上标
Ubound(数组,2) 可以获得数组的列方向(第2维)的最大上标

2、动态数组的动态扩充

如果一个数组无法或不方便计算出总的大小,而在一些特殊情况下又不允许有空位。这时我们就需要用动态的导入方法

ReDim Preserve arr() 可以声明一个动态大小的数组,而且可以保留原来的数值,就相当于厂房小了,可以改扩建增大,但是它只能 让最未维实现动态,如果是一维不存在最未维,只有一维

清空数组使用erase语句

四、可以生成数组的函数

按分隔符把字符串截取成VBA数组,该数组是一维数组,编号从0开始

2、Filter函数:只能模糊匹配

按条件筛选符合条件的值组成一个新的数组

注:如果是(true)则返回包含的数组,如果否则返回非包含的数组

调用该工作表函数可以把二维数组的某一列或某一行截取出来,构成一个新的数组。

Vlookup函数的第一个参数可以用VBA数组,返回的也是一个VBA数组

Countif和sumif函数的第二个参数都可以使用数组,所以也可以返回一个VBA数组,如:

1.金额大于500填上红色

'数组也可以设置格式?
'数组除了数字类型外,当然没有颜色、字体等格式,但是别忘了range对象可以表示多个连续或不连续的单元格区域
'利用上述特点,我们就是要数组构造单元格地址串,然后批量对单元格进行格式设置。
'注意,单元格地址串不能>255,所以如果单元格操作过多,我们还需要分次分批设置单元格格式

counta和count函数可以统计VBA数组的数字个数及所有已填充内容的个数

 '按分隔符把字符串截取成VBA数组,该数组是一维数组,编号从0开始
 '按条件筛选符合条件的值组成一个新的数组
 
 '注:如果是(true)则返回包含的数组,如果否则返回非包含的数组
'调用该工作表函数可以把二维数组的某一列或某一行截取出来,构成一个新的数组。
 'Vlookup函数的第一个参数可以用VBA数组,返回的也是一个VBA数组
 'Countif和sumif函数的第二个参数都可以使用数组,所以也可以返回一个VBA数组,如:
Sub 插入排序单元格演示() Sub 希尔排序单元格演示() Sub 选择排序单元格演示()

1 什么是VBA字典?
字典(dictionary)是一个储存数据的小仓库。共有两列。
第一列叫key , 不允许有重复的元素。
第二列是item,每一个key对应一个item,本列允许为重复

2 即然有数组,为什么还要学字典?
原因:提速,具体表现在
1) A列只能装入非重复的元素,利用这个特点可以很方便的提取不重复的值
2) 每一个key对应一个唯一的item,只要指点key的值,就可以马上返回其对应的item,利用字典可以实现快速的查找

字典只有两列,如果要处理多列的数据,还需要通过字符串的组合和拆分来实现。
字典调用会耗费一定时间,如果是数据量不大,字典的优势就无法体现出来。

 Sub 提取不重复的产品()
 Sub 下棋法之多列汇总()
 Sub 下棋法之多条件多列汇总()
 Sub 下棋法之数据透视表式汇总()
 
  • 1.1 VBA是什么 直到90年代早期,使应用程序自动化还是充满挑战性的领域.对每个需要自动化的应用程序,人们不得...

  • 自从2014年开通[完美Excel]微信公众号以来,坚持分享已经学习到的Excel和VBA知识和心得,目前已分享文...

  • PHP常用函数大全 usleep() 函数延迟代码执行若干微秒。 unpack() 函数从二进制字符串对数据进行解...

  • 自千峰之巅掉落凡尘 以峰尖的昙花幻来单薄躯体 一滴泪下 蕊作心 万象浊世,堆砌情囚 暗把相思作酒酬 梦尽盏中酒 你...

  • 严格模式对正常的Javacript语义做了一些更改:1.严格模式消除了一些 JavaScript的静默错误,通过改...

}

有时我们需要向含有VBA代码的Excel写入数据,但又不能影响正常的VBA代码执行,起初我使用python的openpyxl模块中函数将数据写入xlsm文件中,写入数据后发现执行VBA代码的按钮消失不见了,于是通过查找原因发现是由于openpyxl对VBA支持并不友好,而对VBA支持友好是xlwings模块。

二、简单介绍下xlwings模块

默认情况下,带有数字的单元格被读取为float,带有日期单元格被读取为datetime.datetime,空单元格转化为None;数据读取可以通过option操作指定格式读取。


  

2、另一种取值单元格值得方式


  

三、将数据写入Excel

 

到此这篇关于python兼容VBA的用法详解的文章就介绍到这了,更多相关python兼容VBA的用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

}

《第8课VBA输入语句Box》由会员分享,可在线阅读,更多相关《第8课VBA输入语句Box(10页珍藏版)》请在人人文库网上搜索。

1、第八课 输入语句Inputbox上一节课讲述了输出语句Msgbox,它可以将某些信息输出到屏幕上。本节课讲述与之对应的输入语句。输入语句主要Inputbox函数和Application.Inputbox方法,它们功能相近,不过后者更强大。第8.1节 Inputbox函数Inputbox函数是VBA中用于录入数据的函数,它可在屏幕上创建一个输入框,等待用户输入字符。当按下“确定”或者“取消”按钮后可返回用户录入的String类型的文本或者空文本(当按下“取消”键时是空文本)。Inputbox可为用户提供数据录入窗口,然后根据用户录入的字符决定下一步的操作。例如下图中,用户的录入信息决定程序的计算

述Prompt作为对话框消息出现的字符串表达式。prompt 的最大长度大约是 1024 个字符,由所用字符的宽度决定Title显示对话框标题栏中的字符串表达式。如果省略 title,则把应用程序名放入标题栏中Defa

3、ult显示文本框中的字符串表达式,在没有其他输入时作为默认值Xpos数值表达式,成对出现,指定对话框的左边与屏幕左边的水平距离。如果省略 xpos,则对话框会在水平方向居中Ypos数值表达式,成对出现,指定对话框的上边与屏幕上边的距离。如果省略 ypos,则对话框被放置在屏幕垂直方向距下边大约三分之一的位置Helpfile字符串表达式,识别帮助文件,用该文件为对话框提供上下文相关的帮助Context数值表达式,由帮助文件的作者指定给某个帮助主题的帮助上下文编号其中最重要的是前面三个参数,包括提示信息、对话框标题和默认值。在特殊情况下,第四、第五参数也具有其实用价值强制指定对话框的显示位置,从而

4、防止对话框挡住当前窗口。8.1.2 案例应用从以下案例中,可以加深对Inputbox的认识。1.定制“另存为”对话框设计一个用于文件另存的对话框,固定保存在C盘下,用户可以随意定制文件名,默认名称为当前日期。代码如下:Sub 工作簿另存() Dim FileName As String 声明变量 弹出一个录入框,让用户指定文件名,默认值为当前日期 FileName =

5、 当前工作簿另存到C盘中, 文件名为用户指定字符 ThisWorkbook.SaveAs c: & FileNameEnd Sub执行以上代码时,将弹出一个“另存为”对话框供用户录入新名称,其默认值为当前日期,如下图所示: 图 2 定制的“另存为”对话框关于以上代码,补充八点:(1)Inputbox的返回值总是文本,如果要求返回值不是文本尽量改用application.Inputbox。本例中用变量FileName来保存Inputbox的值,所以变量FileName的数据类型也用String。(2)date语句用户于获取当前的系统日期,默认的日期格式受控制面板所影响,分隔符有可能是“-”也可能

6、是“/”,而“/”不能作为文件名称,所以本例采用Format函数将它格式化,强制使用“-”作分隔符。(3)Format函数类似于工作表函数text,可以将数值、日期按需求转换格式。而且text函数能用的格式绝大多数都能用于Format中。(4) InputBox函数的第4、第5参数分别使用10,表示输入框显示在屏幕左上角,离幕屏的上边缘和左边缘的距离都是10。原点是屏幕左上角,而不是Excel应用程序的左上角,当改变Excel的窗口大小可以看出差异。(5) InputBox函数允许用户随意录入字符,也提供默认值。默认值由函数的第三参数决定。(6)按下“取消”按钮时,函数的返回值是空文本,其长度

7、为0。由于文件的名字不可能长度为0,所以为了防错,加入“Exit Sub”,表示用户不指定文件名称就结束过程,不再执行后面的代码。(7) ThisWorkbook表示VBA代码所在工作簿,例如代码写在Book1中,那么ThisWorkbook代表Book1,代码写在Book2中那么ThisWorkbook代表Book2。(8) Workbook.SaveAs方法表示将工作簿另存,可以使用关键字“Workbook.SaveAs方法”在帮助中搜索到它的详细说明。它的参数是文件路径,查例采用的“c: & FileName”。2.根据指定月份批量创建工作表要求:用户指定一个月份,程序创建以该月每日日期

8、命名的工作表。代码如下:Sub 新建工作表() 批量建立新表,个数等于本月天数,同时对日期命名,并建立目录 Dim i As Byte, months As Byte 声明变量 弹出一个对话框,让用户指定月份,默认显示当前月 months = InputBox(请输入月份,程序将建立该月每日日期命名的工作表, 确定月份, Month(Date)

输入月份(默认值是当前月的月份)录入月份后可以得到以下结果:图 4 以指定月中每日日期命名的工作表针对以上代码需要补充五点:(1)代码中“Dim i As Byte, months As Byte”用于声明变量和变量的数据

10、类型,这是下一节课的讲述重点。本课时稍有了解即可。数据类型Byte的范围是0-255,因为月份和日期的范围是1-12和1-31,所以宜用Byte型变量。(2) Month函数用于计算日期值的月份。由于Date表示当前系统日期,所以Month(Date)的计算结果是本月月份。(3)由于要创建等于整月天数的工作表,而工作簿中已经在若干个工作表,可能1个也可能3个,所以本例采用的办法是整月的天数减去现有的工作表数量(WorkSheets.Count)。Worksheets.Add方法表示创建工作表,其语法如下:Worksheets.Add(Before,

}

我要回帖

更多关于 vba判断数组是否为空 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信