• cel).Value & "*" Then functionRetStr = functionRetStr & "," & ActiveSheet.Cells(rngTemp.Row, cel).Value End If Loop Until rngTemp Is Nothing Or rngTemp.Address = firstAddress End If Set rngTemp = ...
Function test(cel As Integer) As String
Dim functionRetStr As String '方法返回值
Dim currentValue As String '调用方法单元格第一列值
Dim totalRow As Long '总行
Dim rngTemp As Range '搜索
Dim rngA As Range
functionRetStr = ""
totalRow = ActiveSheet.[A65536].End(xlUp).Row
currentValue = Cells(Application.Caller.Row, 1).Value
Set rngA = Range("A1:A" & totalRow)
Set rngTemp = rngA.Find(what:=currentValue, LookAt:=xlWhole)
If Not rngTemp Is Nothing Then

If IsError(ActiveSheet.Cells(rngTemp.Row, cel)) = False Then
functionRetStr = ActiveSheet.Cells(rngTemp.Row, cel).Value
End If

Do
Set rngTemp = rngA.Find(what:=currentValue, LookAt:=xlWhole, after:=rngTemp)
If IsError(ActiveSheet.Cells(rngTemp.Row, cel)) = False Then
If Not functionRetStr Like "*" & ActiveSheet.Cells(rngTemp.Row, cel).Value & "*" Then
functionRetStr = functionRetStr & "," & ActiveSheet.Cells(rngTemp.Row, cel).Value
End If
End If
End If
Set rngTemp = Nothing
test = functionRetStr
End Function


展开全文
• 在一堆数据里查找某个数据,用find函数,要注意查找不到的情况 代码如下 Sub test() Dim rng As Range ...If Not rng Is Nothing Then '判断容器是否为空 Range("m3") = rng.Offset(0, 3) End If...
在一堆数据里查找某个数据,用find函数,要注意查找不到的情况 代码如下
Sub test() Dim rng As Range
Set rng = Range(“d:d”).Find(Range(“l3”)) '把查找的内容放到rng容器里
If Not rng Is Nothing Then
'判断容器是否为空
Range("m3") = rng.Offset(0, 3)
End If

End Sub

展开全文
• 在对excel宏调整的时候，发现以下一段代码，在网上查阅资料后，理解如下： ...If Not c Is Nothing Then s = c.Address source.Cells(c.Row, 7) = "yes" Set c = source.UsedRange.FindNext(c) Do W
在对excel宏调整的时候，发现以下一段代码，在网上查阅资料后，理解如下：

If Not c Is Nothing Then
source.Cells(c.Row, 7) = "yes"
Set c = source.UsedRange.FindNext(c)
Do While Not c Is Nothing And s <> c.Address
source.Cells(c.Row, 7) = "yes"
Set c = source.UsedRange.FindNext(c)
Loop
End If

1. 常用 算术 比较 逻辑运算符如下：
算术比较逻辑指数运算 (^)相等 (=)Not负数 (–)不等 (<>)And乘法和除法 (*、 /)小于 (<)Or整数除法 (\)大于 (>)Xor求模运算 (Mod)小于或相等 (<=)Eqv加法和减法 (+、 –)大于或相等 (>=)Imp字符串连接 (&) Like Is
2. if not c is nothing   先运算 is 比较运算符，再进行not 逻辑非运算。
比较运算符，即Is运算符，可用于判断两个对象变量是否指向同一个对象，其语法为：     结果=对象1 Is 对象2 如果对象1和对象2都指向同一个对象，其结果为True；否则，结果为False。 还可以用Is运算符来判断一个对象变量是否符合要求，例如，条件判断语句If c Is Nothing Then 表明，如果对象变量objVar没有对象引用，则为True，执行Then后面的语句。
Not 对一个表达式进行逻辑非运算，即如果表达式为True，则Not运算符使该表达式变成False；如果表达式为False，则Not运算符使该表达式变成True；如果表达式为Null，则Not运算符的结果仍然是Null。其语法为：     结果=Not 表达式                                      出处---------------《vba编程系列之运算符和表达式》

展开全文
• VBA常用的系统空值关键字：nothing ,empty ,null 1.1 三者区别 empty 有效的空值，如0 ""，比较常用 null 无效的控制，比如二选一之外的空 nothing 对象变量的空值, 语法是 object is nothing 而不是用 =...

一 VBA常用的系统空值关键字：nothing ,empty ,null
1.1 三者区别
empty        有效的空值，如0  ""，比较常用null            无效的控制，比如二选一之外的空nothing      对象变量的空值, 语法是  object is nothing  而不是用 =nothing

1.2 empty null  nothing 三者的区别
参考文章：https://www.cnblogs.com/lys_013/archive/2013/04/16/3024229.htmlEmpty、Null和Nothing都可为Variant变量赋值声明时系统会设Variant变量为Empty如果要将Variant变量设为无效数据可用Null如果不再使用对象变量就应尽快将之设成Nothing以利系统释放资源。

1.3 举例 因为range().find() 返回的是 对象，所以得用 is nothing
​
Sub test5032()
Dim a As Range
in1 = InputBox("请输入一个电影名")
Set a = Range("a1:a15").Find(in1)
If a Is Nothing Then
Range("A" & 1 + Range("a65536").End(xlUp).Row).Value = in1
Else
MsgBox "内容重复了"
End If
End Sub

​

二 VBA常用的系统空值关键字：err
2.1 err相关关键字
常用的报错处理相关的函数iserror()变量=err , 然后判断 err.number= int

2.2 和 false 没啥关系
而 true  false 是一对 bool值false和err没啥关系

2.3 err=err.bumber 的具体值
首先，err不是布尔值，并不是err=0  表示没错误， err=1 表示是出错err 其实是 err.numbererr=0 表示 err.number=0 没出出错err.number有很多出错数字

2.4 举例
使用查找，匹配函数时，要先进行错误处理但同时要对错误值和空值有区分，if err=0 如果需要处理错误值，则要可能要先加一个语句  on error resume next这里如果判断 if a=err 没啥意义
Sub aa31()
On Error Resume Next
in1 = Int(InputBox("请输入1个要查的数字"))
a = WorksheetFunction.Match(in1, Array(1, 2, 3, 4, 5), 0)

If Err = 0 Then
Debug.Print a
Else
Debug.Print "没找到!"
End If
End Sub


展开全文
• VBA中变量一般都是强类型的，即总声明成Integer，Long，Single，Double，String或Date等类型，这些强类型的值毋需考虑Empty、Null和Nothing。 有时我们需要定义一种能包含所有类型的变量，这种类型就是Variant，...
• =indirect() 引用的空单元格，会自动返回0 5 VBA里所谓的 “空值” 或者 " 置空变量" 具体是什么，则和变量类型有关 1 数值型的变量 默认 0 2 字符串 string 默认 “” 就是空。 3 Variant类型变量 默认用 null 但...
• 对象数组 将每个元素设为特定值 Nothing。 Empty：指尚未对 Variant 变量指定初始值。 用数值表示时，以 0 表示； Empty 变量，在字符串表示时，则以零长度字符串 ("") 表示它。 注：Erase 释放动态数组所使用的...
• ‘订单生成系统.xls ‘f6-第6列，f2-第2列 Private Sub Worksheet_Activate() On Error Resume Next Dim x As Object, yy As Object, sql... Set yy = Nothing Set x = Nothing End Sub 2，用ADO Connection对象查询
• VBA中执行Shell介绍，打开应用，执行python、bat、mysql；
• ## Vba菜鸟教程

万次阅读 多人点赞 2020-05-02 18:21:15
文章目录Vba菜鸟教程编辑器宏vba基本语法运算符变量语句简写语句sub语句调用语句退出语句分支语句循环语句判断语句公式与函数在单元格输入公式利用单元格公式返回值调用工作表函数利用vba函数自定义函数操作对象操作...
• 大家好。 只是定义了数组，但由于把数组赋值时放到了if语句里，导致可能由于没有符合if语句的情况而没有给数组具体赋值，然后对数组进行其他操作（比如进行数组内数值排序）就会报错。 我想问下，怎么判断通过...
• 大家好，我们今日讲解“VBA信息获取与处理”教程中第九个专题“利用IE抓取网络数据”的第三节“利用IE，抓取解禁股票数据”，这个专题是非常有用的知识点，希望大家掌握。第四节 利用IE，抓取解禁股票数据大家好，这...
• VBA集合Collection创建集合集合常用属性和方法添加集合大小读取集合特定元素内容集合删除办法 创建集合 Dim c As New Collection 集合常用属性和方法 添加 语法：Collection.Add (item,key,before,after) item：...
• Here is another topic that comes up every... MS Excel via VBA? I’ll try to give an introduction into that subject in this document. I will only discuss the basics, but I’m open for suggestions about wh
• VBA过程里面作决定的最简单的方法就是使用If…Then语句。假使你想要基于某个条件选择一个行动，那么你可以使用下述结构： If 条件Then 语句1 语句2 语句N End If 如何使用On Error GoTo标志语句来绕过循环...
• VBA中启动其它程序前言VBA自带的Shell方法语法示例参数返回值WshShell对象WshShell对象的Run()方法语法：示例:参数:返回值:WshShell对象的exec()方法语法:示例:参数返回值Run()方法与Exec()方法的差异 前言 在程序...
• vba if vba7 描述 隐秘术是将信息隐藏在清晰的视野中的行为。 隐写术的工作原理 一种流行的实现方式是获取现有的图像文件并操纵这些位以隐藏消息，而不会显着更改图像或增大大小。 它通过获取代表像素中颜色的每个...
• ## VBA字典(dictionary)

万次阅读 多人点赞 2017-06-25 22:19:29
这是我看到的最简单明了的Excel VBA字典(dictionary)的教程，把字典的应用，用短短几百字，全部道尽，简！但精彩！原文如下： 当年我(原作者：彭希仁)向LDY版主求教字典的时候，他老人家总结了一句话“呼之即来，挥...
• ## VBA常用代码合集

千次阅读 多人点赞 2020-12-19 11:13:11
VBA常用代码模版Tp0️⃣—零零散散小功能（持续更新）Tp1️⃣—输出活动页面筛选后的行数Tp2️⃣—创建数组存放数据Tp2-1 静态数组Tp2-2 动态数组Tp3️⃣ 创建字典存放数据Tp4️⃣ 优化代码运行速度 Tp0️⃣—零零散...
• 8 1 概述 VBA使用编程的方式操作Excel的工作簿，工作表sheet，行row，列column，区域range，单元格cells等的值与属性。 2 基本语法 2.1 字母打头，由字母、数字和下划线组成 2.2 数据类型 包括String，Byte，...
• ## VBA基本语法整理

千次阅读 2019-03-02 12:16:28
VBA基本语法整理 作者：Zjmainstay 最近为了一个调货程序，边学边用，终于是写出来了一个Excel VBA程序，其中学会了不少使用方法，借此整理出来，希望能够给后来的新人有所帮助。 1. VBA 局部变量和全局变量 1....
• findfile findfile 就是打开一个问题如果打卡成功，则返回为true Sub b() a = Application.FindFile MsgBox a If a = True Then MsgBox "dd" Else MsgBox "tt" End If ...这个函数和findfile有点不一样，这个函数是不会...
• Private Sub class_initialize() Set head = emptyNode Set last = emptyNode n = 0 End Sub Public Function isEmpty() As Boolean isEmpty = head.getNext Is Nothing End Function Public Property Get size() As...
• ## VBA基础知识

千次阅读 2019-11-12 14:18:36
VBA入门学习笔记本关键词：VB、VBA、Microsoft office、excel、access、PowerPoint1.VBA的基本概念2 数据类型2.1 VBA基本数据类型2.2 VBA自定义的数据类型3 VBA常量3.1 VBA系统定义常量3.2 VBA固有常量3.2 VBA符号...
• 大家好，今日内容仍是和大家分享VBA编程中常用的简单“积木”过程代码，这些内容大多是取至我编写的“VBA代码解决方案”教程中内容。NO.183-NO.184内容是：NO. 183：在VBA中使用MoveFile方法将示例文件移动NO. 184：...
• Excel VBA 处理图形图表详解
• ## VBA发送email

千次阅读 2019-11-06 22:05:12
通过VBA代码发送邮件 Sub SendEmail() Dim App As Object Dim Email As Object Set App = CreateObject("Outlook.Application") Set Email = App.CreateItem(0) With Email .Subject = "M...
• 编写该代码的目的：初衷该代码最初用于我自己弄得一个用于批量化写word报告的东西，因为我原来需要写一堆格式化的报告，不同报告间除了数据发生了变化，其他几乎一模一样，我想偷懒（主要是我容易写错）,就使用VBA写...

...