精华内容
下载资源
问答
  • VBA findNext nothing 问题

    2020-04-19 17:59:03
    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
            
            firstAddress = rngTemp.Address
            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
            Loop Until rngTemp Is Nothing Or rngTemp.Address = firstAddress
       End If
       Set rngTemp = Nothing
       test = functionRetStr
    End Function
    

     

    展开全文
  • 辨析Empty,Null和NothingVBA中变量一般都是强类型的,即总声明成Integer,Long,Single,Double,String或Date等类型,这些强类型的值毋需考虑Empty、Null和Nothing。有时我们需要定义一种能包含所有类型的变量,...

    辨析Empty,Null和Nothing

    在VBA中变量一般都是强类型的,即总声明成Integer,Long,Single,Double,String或Date等类型,这些强类型的值毋需考虑Empty、Null和Nothing。

    有时我们需要定义一种能包含所有类型的变量,这种类型就是Variant,它是一种特殊的数据类型,可以包含数值、字符串或日期数据,还包含自定义类型、对象(Object)和特殊数值Empty、Nothing和Null。对所有变量,如果没有明确声明它们是其它数据类型,则它们都变成 Variant 数据类型。因此Empty和Null只有对Variant变量才有意义。

    对于Empty、Nothing和Null,你都要知道,他们都是值,可以赋给Variant变量

    作为声明为Variant变量,如

    Dim vnt as Variant

    vnt只进行了声明未赋值,其值就是Empty(由系统自动赋予),表示vnt只是声明了但尚未初始化(即尚未通过程序赋值)。这是因为Variant可以是任何类型的值,但在初始化前无法确定实际的类型而不能给出符合类型的形式(如数值型的0或字符串型的"")。

    对于赋予Empty的Variant型变量,Empty是个有效数据(可以称为万能值),因为如果你认为这是数值型则值是0,认为是字符串型则值是""(空串)。所以以下的比较将是为真的

    If vnt = 0 Then  或 if vnt = "" Then 或 If IsEmpty(vnt) Then

    上面所述的数值、字符串或Empty都是有效数据,而当你将Null赋予vnt,如

    vnt = null

    则表示vnt不包含有效数据。对于值为Null的数据只是通过IsNull函数来判断。那什么时候要用Null呢?比如对于性别,有效数据只能是男或女,但没填算什么,就是无效数据嘛!可以用Null来表示。

    声明为Variant变量有一种叫对象变量。Nothing就是为对象变量赋值的,如

    Set vnt = Nothing

    对象变量使用时总指向一个对象,对象需要占用较大的内存资源,用完应该尽快释放。将对象变量设为Nothing就是通知系统对象变量不再使用那个对象,当那个对象没有任何对象变量再使用它后,系统便会释放该对象所占的内存资源。

    总结

    ----

    Empty、Null和Nothing都可为Variant变量赋值,声明时系统会设Variant变量为Empty,如果要将Variant变量设为无效数据可用Null,如果不再使用对象变量就应尽快将之设成Nothing以利系统释放资源。

    展开全文
  • VBA中变量一般都是强类型的,即总声明成Integer,Long,Single,Double,String或Date等类型,这些强类型的值毋需考虑Empty、Null和Nothing。 有时我们需要定义一种能包含所有类型的变量,这种类型就是Variant,...

    辨析Empty,Null和Nothing

    在VBA中变量一般都是强类型的,即总声明成Integer,Long,Single,Double,String或Date等类型,这些强类型的值毋需考虑Empty、Null和Nothing。

    有时我们需要定义一种能包含所有类型的变量,这种类型就是Variant,它是一种特殊的数据类型,可以包含数值、字符串或日期数据,还包含自定义类型、对象(Object)和特殊数值Empty、Nothing和Null。对所有变量,如果没有明确声明它们是其它数据类型,则它们都变成 Variant 数据类型。因此Empty和Null只有对Variant变量才有意义。

    对于Empty、Nothing和Null,你都要知道,他们都是值,可以赋给Variant变量

    作为声明为Variant变量,如

     Dim vnt as Variant

    vnt只进行了声明未赋值,其值就是Empty(由系统自动赋予),表示vnt只是声明了但尚未初始化(即尚未通过程序赋值)。这是因为Variant可以是任何类型的值,但在初始化前无法确定实际的类型而不能给出符合类型的形式(如数值型的0或字符串型的"")。

    对于赋予Empty的Variant型变量,Empty是个有效数据(可以称为万能值),因为如果你认为这是数值型则值是0,认为是字符串型则值是""(空串)。所以以下的比较将是为真的

     If vnt = 0 Then  或 if vnt = "" Then 或 If IsEmpty(vnt) Then

    上面所述的数值、字符串或Empty都是有效数据,而当你将Null赋予vnt,如

     vnt = null

    则表示vnt不包含有效数据。对于值为Null的数据只是通过IsNull函数来判断。那什么时候要用Null呢?比如对于性别,有效数据只能是男或女,但没填算什么,就是无效数据嘛!可以用Null来表示。

    声明为Variant变量有一种叫对象变量。Nothing就是为对象变量赋值的,如

     Set vnt = Nothing

    对象变量使用时总指向一个对象,对象需要占用较大的内存资源,用完应该尽快释放。将对象变量设为Nothing就是通知系统对象变量不再使用那个对象,当那个对象没有任何对象变量再使用它后,系统便会释放该对象所占的内存资源。

    总结
    ----
    Empty、Null和Nothing都可为Variant变量赋值,声明时系统会设Variant变量为Empty,如果要将Variant变量设为无效数据可用Null,如果不再使用对象变量就应尽快将之设成Nothing以利系统释放资源。

    转载于:https://www.cnblogs.com/lys_013/archive/2013/04/16/3024229.html

    展开全文
  • 在对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
            s = c.Address
                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编程系列之运算符和表达式》

     

    展开全文
  • 时 间:2017-08-02 09:37:28作 者:摘 要:关于VBA的0、""(空字符串)、Null、Empty、与Nothing的区别正 文:给某人讲Is Nothing 与 Null 及 “”的区别,说了之后感觉不够完整,百度了一下。从CSDN抄了一段,献给...
  • VBA常用的系统空值关键字:nothing ,empty ,null 1.1 三者区别 empty 有效的空值,如0 "",比较常用 null 无效的控制,比如二选一之外的空 nothing 对象变量的空值, 语法是 object is nothing 而不是用 =...
  • 答:请看下方代码和运行效果:'A 等于 Empty, 因为尚未初始化的“不定型变量”都等于 Empty。'但如果检测 A = "" 或 A = 0, 也都可以得到 True 值。 'B 等于 "", 未初始化或初始... 'D 等于 Nothing, 尚未初始...
  • Excel VBA 教程

    2018-12-17 19:47:00
    https://www.w3cschool.cn/excelvba/Excel VBA 编程教程 ...http://www.accessoft.com/article-show.asp?id=16502 关于VBA的0、""(空字符串)、Null、Empty、与 Nothing 的区别 转载于:http...
  • =indirect() 引用的空单元格,会自动返回0 5 VBA里所谓的 “空值” 或者 " 置空变量" 具体是什么,则和变量类型有关 1 数值型的变量 默认 0 2 字符串 string 默认 “” 就是空。 3 Variant类型变量 默认用 null 但...
  • vba ADO

    2014-03-30 22:36:00
    Function GetCon(DataSource As String, Optional WithTitle As Boolean = True, Optional Password As String = "") As Connection If DataSource = "" Then ... Set GetCon = Nothing Exit F...
  • Sub 添加标注参考图() ' On Error Resume Next 'Set rngTemp = Application.InputBox(&quot;图片插入区域:&quot;, &quot;选择单元格&... Set p = Nothing '用相对路径,有...
  • VBA编程实例

    2012-09-14 01:01:59
    OfficeTips Home || VBA Section || General Section || Download Section || Privacy Policy ... Set oView = Nothing End With End Sub Copyright 1999-2011 (c) Shyam Pillai. All rights reserved.
  • 1. Find方法的作用Find方法用来在指定...若未发现相匹配的数据(无匹配的单元格对象),则返回Nothing。2. Find方法的语法[语法].Find (What,[After],[LookIn],[LookAt],[SearchOrder],[SearchDirection],[Match...
  • 我想要做的就是使用VBA将某些查询的结果转换为Excel工作簿 . 主要问题是openRecordSet方法似乎无法正常工作 . 每当我尝试调试它时,我都会看到记录集(rcset)是Nothing . 当我只运行查询以便在Access查看器中查看时,...
  • Sub RunAccessMacro() Dim myAccess As Object mydata = ThisWorkbook.path & "\Database1.accdb" Set myAccess = CreateObject(mydata) myAccess.Visible = False ... Set myAccess = Nothing End Sub ...
  • VBA读excel写xml

    2018-01-29 18:13:00
    VBA ◆写文件Dim sFile As Object, fso As ObjectSet fso = CreateObject("Scripting.FileSystemObject") sFile.WriteLine (String(8, " ") & "<Request>") sFile.CloseSet sFile = NothingSet fso = ...
  • VBA 下载文件

    千次阅读 2012-07-24 15:39:53
    Function GetWebCode(ByVal strUrl As String) As String Dim H Set H = CreateObject("microsoft.XMLHTTP") H.Open "get", strUrl, False H.send GetWebCode = H.responseText Set H = Nothing End Function Sub B
  • VBA-正则表达式

    2021-01-06 11:23:40
    Function extract_chinese(i As String) As String '保留中文 Dim a As Object Set a = CreateObject("VBscript.REGEXP") a.Pattern = "[^\u4e00-\u9fa5]" ...Set a = Nothing End Function Function extrac
  • Building VBA-M on CentOS

    2020-11-30 02:56:54
    <p>Building vba-m on CentOS. <h3>Actual behavior <p>Running <strong>installdeps</strong> seems to do nothing, no output. <h3>Steps to reproduce the behavior <p>On CentOS 7, clone project from github ...
  • 在Excel VBA中union方法可以连接多个range单元格对象,在批量重复操作中非常实用。 例如,需要指定位置批量删除、批量插入单元格,可以union(range1,range2,range3,..... If rg Is Nothing Then Set rg = Cells(i, 1)
  • After adding a vbaProject.bin binary (previously extracted with vba_extract.py), the VBA does nothing ("Hello World" should be printed in a message box when clicking around on any cell). <p>...
  • in the test explorer nothing happens. I don't have any experience with the frame work and don't understand what the issue is. My code is: <pre><code> ''function below can be used to ...
  • 代码有的是来自网络,包括csdn...Dim xlApp As Excel.ApplicationDim xlBook As Excel.WorkbookDim xlSheet As Excel.Worksheetdim XXXSet xlApp = CreateObject("Excel.Application")Set xlBook = NothingSet xlSheet
  • vb/vba 引用excel对象后通过 xlapp.quit set xlapp=nothing 无法关掉excel进程的解决方法
  • 具体程序如下(Win7+Powerpoint VBA环境下通过):Public Sub s()Dim obj As ObjectSet obj = CreateObject("SAPI.SpVoice")'创建语音对象obj.Speak "This is a book. 这是一本书。"Set obj = NothingEnd Sub以上只能....
  • VBA 数据库链接之ADODB

    2016-02-01 14:45:57
    Public gpgDB As ADODB.Connection Function DbConnect(ip As String, db As String, user As String, password As String) As Boolean On Error GoTo ThisEnd ... Set gpgDB = Nothing  Set gpgDB = Ne...

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 208
精华内容 83
关键字:

nothingvba