精华内容
下载资源
问答
  • VBA中数据类型转换

    千次阅读 2020-11-24 23:47:38
    VBA中数据类型转换  在VBE打开对象浏览器,按照下图操作: 找到VBA库并输入Conversion(转换)找到该模块,里面提供了数据转换函数。  VBA提供了两套内置的数据类型转换函数,第一组包含Int、 CVDate和Str,这是...

    VBA中的数据类型转换

     在VBE中打开对象浏览器,按照下图操作:
    在这里插入图片描述
    找到VBA库并输入Conversion(转换)找到该模块,里面提供了数据转换函数。
     VBA提供了两套内置的数据类型转换函数,第一组包含Int、 CVDate和Str,这是早期版本,只是向后兼容而保留。第二组函数都是以字母“C”开头,编程中使用第二组。
    每个转换函数的语法基本相同,例如:
    在这里插入图片描述
    Expression是输入参数,然后转换为相应的数据类型。

    VBA支持数据类型转换的功能有:

    VBA.Conversion.CBool(Expression) as Boolean

     将变量Expression转换为Boolean数据类型,expression可以是任何数值类型或任何能够转换为数值类型的字符串,如果expression = 0 or “0” 返回 False,否则返回True(-1)。

    VBA.Conversion.CByte(Expression) as Byte

     将变量expression转换为Byte数据类型,expression可以是任何数值类型或任何能够转换为数值类型的字符串。Expression的范围0-255,如果exp超出范围将显示错误。如果exp是浮点数,那么在转换为byte之前,先四舍五入,再转换。

    VBA.Conversion.CDec(exp)

     将exp转换为Decimal子类型。Exp可以是任何Decimal范围内的数值或字符串。在VBA中这个函数是唯一能生产Decimal数据类。

    VBA.Conversion.CDate(exp) as Date

     将exp转换为 Date/Time数据类型。exp 是日期数字和表示日期的字符串并将其转换为电脑表示的日期格式。例如:在设置为美国格式mm/dd/yy的电脑上,如果将英国日期格dd/mm/yy且使用CDate进行转换,则转换为美国日期格式。

    VBA.Conversion.CCur(exp) as Currency

     将exp转换为货币数据类型,exp 可是可以转换的数值和字符串,该函数根据电脑语言环境对十分位和千分位进行编码。

    VBA.Conversion.CInt(exp) as Integer

     将exp 转换为 Integer类型,exp 可以是Interger表示范围的任何数值和字符串。

    VBA.Conversion.CLng(exp) as Long

     将exp 转换为Long类型,exp 可以是Long表示范围内的数值和字符串。

    VBA.Conversion.CSng(exp) as Single

     将exp 转换为Single类型,exp 可以是Single表示范围内的数值和字符串。

    VBA.Conversion.CStr(exp) as String

     将exp 转换为String类型,exp 可以任何数据类型

    VBA.Conversion.CVar(exp) as Variant

     将exp 转换为Variant类型,exp 可以任何数据类型

    Variant变体数据类型

     VBA中包含一种特殊的数据类型即Variant(变体)类型。它允许与VBA中任何数据类型使用并自动计算出赋值类型最接近的数据类型,只是性能和代码的阅读收到影响。

    Variant特殊的子类型

     Variant可以表示所有的内置数据类型外,该变体还支持以下特殊数据类型。

    Empty

     在声明Variant新变量并没有赋值前,Empty子类型将自动赋值给变量。
    在这里插入图片描述
     var1的子类型为 Empty,在var2没有赋值前也为Empty。可以显示赋空值。
    在这里插入图片描述

    Null

     Null是一种特殊的子类型,表示变量不包含任何有效的数据,为了类型为Null,变量必须显示的赋Null。
    在这里插入图片描述

    Error

     错误子类型用于存储错误编号,错误编号由VBA自动生成,然后供错误处理程序使用。

    确定Variant表示的具体数据类型

     让变量Variant来代替所有的数据类型很好,但是有时候要确定储存到变量里真实的数据类型,VBA提供两个函数:VBA.Information.VarType 返回整数来确定具体的数据类型。VBA.Information.TypeName 返回具体数据类型的字符串。
    在这里插入图片描述

    VarType

    语法:
     VBA.Information.VarType(exp) as VBA.VbVarType
     Exp 需要确定子类型的变量,下面是其返回的具体子类型

    返回值子类型枚举符号
    0EmptyvbEmpty
    1NullvbNull
    2IntegervbInteger
    3LongvbLong
    4SinglevbSingle
    5DoublevbDouble
    6CurrencyvbCurrency
    7DatevbDate
    8StringvbString
    9OLE Automation objectvbObject
    10ErrorvbError
    11BooleanvbBoolean
    12Array of VariantvbVariant
    13Data access objectvbDataObject
    14DecimalvbDecimal
    17BytevbByte
    36User-defined TypevbUserDefinedType
    8192ArrayvbArray

     实际,VarType函数不会返回8192,如上表所述,当传递数组变量时,VarType返回8192以及数组具体类型值的和。
    在这里插入图片描述

    TypeName

     该函数返回具体数据类型的字符串形式。
    在这里插入图片描述

    Variant和强类型

     Variant可以满足所有的数据类型需求,但是性能会下降。对比确定的数据类型处理速度要慢30%左右。

    返回Variant和强类型的函数

     VBA语言包含许多字符串处理函数,它们有两个版本,一个返回Variant,另一个返回字符串。返回字符串的函数名以美元符号结尾。通过对比发现,返回Variant的函数执行速度,比返回字符串的函数要慢30%左右。强烈建议使用$结尾的函数。
    在这里插入图片描述
     上面便是VBA数据类型转换的基本情况,如感兴趣加群:794568082互相讨论学习。

    展开全文
  • 每天一篇Excel技术图文微信公众号:Excel星球NO.79-什么是数据类型?作者:看见星光微博:EXCELers / 知识星球:Excel嗨,大家好,我是星光,今天咱们来继续学习VBA编程。在零基础学Excel的入门教程里咱们讲过,...
    3d8a34a03a6ee2ec6ff469d69198594e.png 每天一篇Excel技术图文 微信公众号:Excel星球 NO.79-什么是数据类型? 作者:看见星光  微博:EXCELers / 知识星球:Excel

    嗨,大家好,我是星光,今天咱们来继续学习VBA编程。

    在零基础学Excel的入门教程里咱们讲过,Excel是一款用来管理和分析数据的软件。VBA作为Excel的高级功能之一,主要作用当然也是数据管理和分析。既然是数据管理,自然需要着重了解数据的类型。这就好比优秀的厨师总需要格外了解食材的分类和品性,才能做出美味佳肴。那么什么是数据类型?VBA里又都有哪些数据类型呢?

    什么是数据类型


    数据类型,顾名思义,指的是具有共同特征的数据所形成的种类。在普通的Excel表格中我们将数据分为了5大类(参考【零基础学Excel】什么是数据类型?),分别是数值、日期、文本值、逻辑值和错误值。VBA编程中的数据类型划分与之相比,框架是相似的,只是种类更加细化,细化的目的是为了更合理的使用内存空间。
    VBA的数据类型被划分为字节型、整数型、长整数型、单精度浮点型、双精度浮点型、货币型、小数型、字符串型、对象型、变体型、日期型、自定义型等等…… 是不是看得头大?哄你哩,吃空饷不干事的家伙很多,继续向下看,结局很简单。
    ……也许你还记得,也许你已不记得,在计算机课上咱们曾经学过,凡是进入电脑的信息,不论是图片、文本、数字或者其它形式,都是由0和1组成的。每一个0和1被称为 位(bit)——阁下可曾听闻大明湖畔32位和64位系统?——每8个位组成一个单元,也就是字节(Byte)。字节是计算机处理信息的最小单位。
    在VBA中,数据是在内存中保存和运行的,不同的数据类型所使用的字节数不一样,占据的内存空间大小也就不一样。比如同样是数值类型,有的只用1个字节,有的却用4个字节,还有的甚至用14个字节等等——所以,显而易见,优化数据的划分类型,可以合理使用内存空间,提高代码的运算效率。
    咳~了解了VBA数据类型细化的原始意义,下面进入 剧情反转时刻 。
    ……和谐社会你我共建,扫黑除恶你我有责,时代在飞速进步,科技在快速发展,计算机的水平日新月异,内存空间在扩张,内存机制在优化——因此对于当今的计算机而言,VBA细化的数据类型其意义已经十分有限,以至于我们基本可以置若罔闻。
    这就好比你曾经蜗居一房没有厅,自然十分珍惜每一寸空间的使用问题;但现在你发达了,乔迁别墅了,有院有庭有厅有楼了,还需要斤斤计较每一寸空间怎么用吗?——当然啦,计较也是可以的,只是那般活着岂不是很不巴适?嘿!送你一段广告放松一下吧。
    打个响指,如果去除掉烦琐的历史遗留渐趋无用的细枝分类,VBA编程中真正常用的数据类型都有哪些呢? 常用的数据类型
    VBA常用的数据类型基本可以分为六类。数值、日期、文本值、布尔值、对象和变体。这就和教程【零基础学Excel】什么是数据类型讲的十分相似了。我还是很建议你们重读一下那篇教程,一方面,它把工作表中每个数据类型的特点写的比较全,另一方面,和这篇教程两下对比阅读,可以了解更多工作表数据和VBA数据的差异。 整数Long
    数值即数字,数字可以分为整数和小数。在VBA编程中整数又被分为了字节型(Byte)、整数型(Integer)、长整数型(Long)。其中字节型是0~255之间的整数(1个字节);整数型是-32768~32767之间的整数(2个字节)。这俩货的范围都偏小,扩展性差,数据化时代已然很不好用。咱们可以直接忘记它们的存在,只要记得长整数型Long(4个字节)就好。
    事实上,尽管长整型Long占用了4个字节,但在当前计算机环境下,它的转换效率更优,以至于其最终运算效率也是优胜Integer的。不过长整型也有范围,是-2147483648~2147483647之间的整数,这个范围大部分情况下够用了,但特殊情况下也会不够用,不够用怎么办?请往下看。 浮点数Double
    浮点数即小数,在VBA中又被划分为了单精度浮点型、双精度浮点型、货币型、小数型;数据范围各有不同,能够保留的小数点位数也不一样——但我们只需要记得双精度浮点型(Double)就行了( 这也是VBA读取单元格内数值时默认使用的数据类型 ),其它的都当是空气。
    双精度浮点型能保留小数点后14位小数,数据范围是:
    在表示负数时:-1.79769313486231E308 ~ -4.94065645841247E-324在表示正数时:4.94065645841247E-324 ~ 1.79769313486231E308

    需要说明的是,这里的浮点数并非只能是小数,也包含了其范围内的整数,所以,咱们上面说的那个问题,如果Long不够用怎么办?——请用Double。 字符串String
    字符串(string)即文本值,是 有序的字符 组合。字符是计算机可以显示的任意符号,包括字母、标点和数字等。字符串可以很短,比如只有一个字符,也可以很长,比如一段话。字符串也可以由纯数字构成,比如电话号码、身份证号码等等,这种字符串咱们也习惯的称为文本型数值。
    我们上面有句话字符串是有序的字符组合。这句话怎么理解呢?我举个例子。有一个字符串你爱我,它有三个字符 你 、 爱 、 我 按顺序构成;我们就不能把这个顺序打乱,比如打乱成我爱你。这是不行的,因为我是有妇之夫。这就是字符串的有序性。 日期Date
    VBA的日期和Excel工作表的日期略有不同。相同之处是都以一种特殊的被称为 序列值 的数值形式储存;不同之处是工作表的日期范围1900年1月1日至9999年12月31日;而VBA的日期范围是 100年1月1日 至9999年12月31日。
    工作表日期的序列值基准日是1900年1月1日,VBA的序列值的基准日是1899年12月31日。也就是说VBA把1899年12月31日的序列值记为1;此后的日期以此递增,比如1900年1月15日的序列值是16;此前的日期以此递减,比如1899年12月20日的序列值是 -10 。
    由于日期是以数值的形式储存的,所以它可以直接参与加减乘除的数值运算,如果我们要计算两个日期之间相差的天数,直接相减就可以了。比如计算2019年有多少天:
    Sub 日期差()    MsgBox #12/31/2019# - #12/31/2018#End Sub

    说完了日期,再说下时间。对于日期来说,1天的数值单位是1,1天有24小时,那么1小时就可以表述为1/24。同理,1分钟可以表述为1/24/60。也就是说,一天中的每一个时刻都可以由小数形式的序列值来表示。比如,中午12点也就是0.5(1天的一半:1/2)。
    同日期一样,时间也可以直接参与加减乘除的数值运算。
    例如一个人凌晨6点28分开始加班,早晨9点56分下班,他加班的时长是多少呢?
    Sub 时间差()    MsgBox Format(#9:56:00 AM# - #6:28:00 AM#, "hh:mm")End Sub
    0162051b1b59393fcc0d24ea259634bb.png
    此外,想必你已经注意到了,在VBA中日期和时间是用#包起来的。
    布尔值
    布尔值即逻辑值,只有True(真)和False(假)两种。逻辑值也能参与数学运算;其中 True为-1 (注意是负一),False为0。运行以下代码可见结果。
    Sub 逻辑值数学运算()    MsgBox True + 0    MsgBox False + 0End Sub
    对象Object
    什么是对象,咱们上节课讲过了,这里没啥补充的。 变体Variant
    变体Variant是Excel默认的数据类型,一个全能的数据类型,一个可以根据数据的大小自动 设置 自身数据类型的智能存在。当我们在代码中输入一个数据,而没有指定数据的类型时,系统就默认它为变体型,然后自动设置该数据的实际类型。
    比如,我们输入数据"看见星光",系统会自动调整为字符串类型;输入数值1,系统会自动调整为整型,输入#2019-12-1#,系统会自动调整为日期类型,并修改为标准的日期格式。
    ——但是,系统对变体型数据的这种自我调正并不能保证绝对正确。
    举一个典型的小例子,运行以下代码系统会提示溢出。
    Sub 变体不够聪明()    MsgBox 30000 + 30000End Sub
    284bd549817f394a63641ca6f01745d2.png
    有朋友会想,不是吧?VBA连30000+30000都不会算?这么弱鸡,不学也罢……
    ……呃……这位道友请留步! afb9b71df49195914056de25a8f8fbb5.png
    误会,都是误会,并不是VBA算不了加减乘除,VBA算30000+300000000都没问题,只是30000+30000有些特别……
    怎么个特别法?这个说起来有点儿尴尬。VBA先读了第1个30000,将该值保存为整数型(整数型Integer的范围是-32768~32767之间的整数,一个历史遗留的早该被淘汰的数据类型),然后再加上另一个30000,也是整数型, 两个整数型相加 ……VBA天真的认为一家人不说两家话,同类型数据相加就没必要修改结果值的数据类型了,但事实上60000明显就超出了整数型的范围,于是最后系统只好提示溢出,意思就是数太大,我放不下,溢出了……这真是尴尬溢出屏幕……
    这个例子同时告诫我们,在编程中尽量不要直接输入无谓的常数,而是使用变量或常量。什么是变量?什么是常量? 变体Variant 的优点和劣处还有哪些?我们下节课再撩,不贱不散。 ▎系统学习Excel
    推荐加入我的Excel社群 ▎ 3f3dd8e65e94a21223838d78851dcb64.png 扩展阅读 a8a4ef9b50c6be6d23f17d937297050d.png ad9110346f1f1f334c6a695882c2e143.png f30dcfb1a0331bf978f9f16227e27b10.png
    展开全文
  • Excel VBA(07)数据类型和转换

    千次阅读 2020-04-29 12:27:28
    一、vba 数据类型 1、基本数据类型 整数类型:byte、integer、long、long long 小数类型:single、double 布尔类型:boolean 字符型:string 万能类型:variant 其他类型:date、object 2、...

    数据类型和转换

    • 定义合适的数据类型就是节省内存空间,提高程序运行的效率
    • 直接全部变量都定义为 variant 也是可以的,效率差点而已

    一、vba 数据类型

    1、基本数据类型

    • 整数类型:byte、integer、long、long long
    • 小数类型:single、double
    • 布尔类型:boolean
    • 字符型:string
    • 万能类型:variant
    • 其他类型:date、object

    2、类型检查

    • 检查为空:vba.isEmpty() typeName()
    • 检查数字:vba.isNumeric() application.isNumber() typeName()
    • 检查文本:application.isText
    • 检查错误值:vba.isError typeName
    • 检查数组:vba.isArray
    • 检查日期:vba.isDate

    typeName基本是一个通用的方法

    二、类型转换

    1、类型转换函数

    • 就是各种C开头的函数:Cstr、Cint、Clng、Cdbl、Cdate
    Sub test()
        Dim b As String
        b = "2012-12-12"
        Debug.Print TypeName(CDate(b))
    End Sub
    

    2、Format函数

    • 就是格式化数字和文本的,基本和excel里面的format是一样的作用
    Sub test()
        Dim a As Integer
        a = 123
        Dim b
        b = 12304
        Debug.Print Format(a, "0000.00")
        Debug.Print Format(a, "\价格\ 0000.00")
        Debug.Print Format(b, "yyyy-mm-dd")
    End Sub
    'output
    0123.00
    价格 0123.00
    1933-09-07
    

    日期和时间

    一、时间日期获取

    1、返回当前日期和时间

    • 其中 timer 是返回0点到现在时间的秒数,常用来计算时间差
    Sub test()
        Debug.Print Date
        Debug.Print Time
        Debug.Print Now
        Debug.Print Timer
    End Sub
    'output:
    04.09 
    15:31:01 
    04.09 15:31:01 
     55861.21 
    

    2、格式化日期

    Sub test()
        Debug.Print Format(Now, "aaa")
        Debug.Print Format(Now, "aaaa")
        Debug.Print Format(Now, "ddd")
        Debug.Print Format(Now, "dddd")
        Debug.Print Format(Now, "yy-mm-dd")
    End Sub
    'output
    周四
    星期四
    Thu
    Thursday
    20-04-09
    

    2、时间日期设定

    Sub test()
        Debug.Print DateSerial(2021, 12, 12)
        Debug.Print TimeSerial(15, 12, 12)
    End Sub
    

    2、获取时间的部分

    Sub test()
        Debug.Print Year(Now)
        Debug.Print Month(Now)
        Debug.Print Day(Now)
        Debug.Print Hour(Now)
        Debug.Print Minute(Now)
        Debug.Print Second(Now)
    End Sub
    

    二、时间日期计算

    1、两日期相隔年月日等

    Sub test()
        Dim a, b As Date
        a = #12/12/2020#
        b = "2020-12-31"
        Debug.Print "相隔" & (b - a) & "天"
        Debug.Print "相隔" & DateDiff("d", a, b) & "天"
        Debug.Print "相隔" & DateDiff("q", a, b) & "季"
        Debug.Print "相隔" & DateDiff("w", a, b) & "周"
        Debug.Print "相隔" & DateDiff("n", a, b) & "分"
    End Sub
    

    2、日期加减

    Sub test()
        Dim a, b As Date
        a = #12/12/2020#
        b = "2020-12-31"
        Debug.Print DateAdd("d", 1, b) & "天"
        Debug.Print DateAdd("q", 1, b) & "季"
        Debug.Print DateAdd("n", 120, b) & "分"
    End Sub
    

    三、计时器

    • OnTime 无法使用带参数的过程
    • 代码中的 k 一定要定义在模块的最顶端
    Dim k As Boolean
    Sub test()
        If k Then
            k = False
            Exit Sub
        End If
        Range("a1") = Format(Now, "hh:mm:ss")
        Application.OnTime Now + TimeValue("00:00:01"), "test"
    End Sub
    Sub stop1()
       k = True
    End Sub
    

    图片图形处理

    • 图片图形处理可能涉及到很多的对象、属性和方法,无法完全去记忆
    • 最好的方法就是通过录制宏得到相应的代码,然后根据自己的需要进行调整
    • 批量插入复选框示例代码如下
    Sub hah()
        Dim rg As Range
        Set rg = Range("b1:b10")
        For Each r In rg
            With ActiveSheet.CheckBoxes.Add(r.Left, r.Top, r.Width, r.Height)
                .Characters.Text = "是"
                .Value = xlOff
                .LinkedCell = r.Address
                .Display3DShading = False
            End With
        Next r
    End Sub
    

    关于 shape 对象

    Set myDocument = Worksheets(1) 
    With myDocument.Shapes.AddShape(msoShapeRectangle, _ 
     144, 144, 72, 72) 
     .Name = "Red Square" 
     .Fill.ForeColor.RGB = RGB(255, 0, 0) 
     .Line.DashStyle = msoLineDashDot 
    End With
    

    随机抽取

    • 基本的原理就是生成特定范围内的随机数,去匹配数据的行数或者列数,取出相应的数据
    • 取出的数据和当前的范围内的最后一个元素进行互换,然后减去最后一个元素得到当前的有效取数范围
    • 再重复最上面的步骤,这样不停重复就可以将全部元素随机排序(抽取出来)不会重复
    Sub hr()
        Dim rg
        Dim num As Integer
        rg = Range("a1:a12")
        For i = 1 To 12
            If i = 12 Then
                Cells(i, 3) = Cells(1, 1)
                Cells(1, 1).Interior.ColorIndex = 3
                Exit Sub
            End If
            num = (Rnd() * (UBound(rg) - 1) + 1) \ 1
            Range("c" & i) = rg(num, 1)
            tmp = Cells(num, 1)
            Cells(num, 1) = Cells(UBound(rg), 1)
            Cells(UBound(rg), 1) = tmp
            Cells(UBound(rg), 1).Interior.ColorIndex = 3
            rg = Range("a1:a" & (UBound(rg) - 1))
        Next i
    End Sub
    
    • 十分重要的提示!!!下面的这两种写法是有很大不同的,加了 set 得到的是一个单元格区域对象,可以通过rg(1,1) = 12等方法直接对单元格进行操作,下面没有加 set 得到仅仅就是一个取单元格区域的数组,通过rg2(1,1) = 12仅仅对数组有效对单元格不会有任何影响
    set rg = range("a1:a12")
    rg2 = range("a1:a12")
    

    递归算法和程序优化

    一、递归算法(略)

    二、程序优化

    • 减少对象的使用,不用之后要及时释放,对象耗费的资源是比较多的
    • 循环之中减少计算次数,如果循环的次数多,二次每次的循环中都有复杂计算的话,效率会比较低
    • 禁止闪屏,就我们在进行工作表的切换等操作的时候,禁止闪屏可以提高运行效率
    application.screenupdating = false
    
    • 使用变量前最好先声明,并且最好指明变量的类型,这样程序的效率会比较高
    • 减少使用 vba 和工作表函数,实际上这些函数效率比较低,但是还是很方便
    • 尽量使用静态数组,静态数组的效率比动态数组好
    • 填充单元格数据之前先清空,这样可以提升一定的效率,虽然不是那么高
    • 用批量代替个体就是我们有时进行操作的时候,对一个一个的元素进行操作,远不如我们使用数组等组合整体的效率高
    • 减少循环次数,这个就需要算法的优化了
    • 使用 FillDown 填充公式的效率,比我们一个一个去填充公式的效率更高

    文件操作(略)

    展开全文
  • VBA数据类型

    2020-05-18 00:50:52
    布尔数据类型 (–1或0) 使用布尔... 字节数据类型 (0到255) 字节是VBA最小的数字数据类型,并具有0到255之间的数字值。此数据类型不包含任何负值。 如果您尝试分配一个,VBA将返回错误。 货币数据类型 使用“...

    布尔数据类型 (–1或0)

    使用布尔数值数据类型来存储仅包含两个值的逻辑数据:打开和关闭,true和false,yes和no,等等。 关键字True和False是预定义的常量,可以分别与值–1和0互换。


    字节数据类型 (0到255)

    字节是VBA最小的数字数据类型,并具有0到255之间的数字值。此数据类型不包含任何负值。 如果您尝试分配一个,VBA将返回错误。


    货币数据类型

    使用“货币”数字数据类型存储从–922,337,203,477.5808到922,337,203,685,477.5807的货币值。


    日期数据类型

    Date数据类型存储特殊格式的

    代表日期和时间的数值 。 您不必同时存储日期和时间值。 Date数据类型接受日期或时间,或两者都接受。 可能的值范围是100年1月1日到9999 12月31日。小数数据类型

    Decimal数据类型是Variant的子类型,并不是一个真正独立的数据类型,如果该值不包含小数位,则可容纳从–79,228,162,514,264,337,593,543,950,335到79,228,162,514,264,337,593,543,950,335,335的值。 数据类型的精度最高可保留28个小数位,其值从–7.9228162514264337593543950335到7.9228162514264337593543950950335。

    双重数据类型

    使用Double数据类型存储从–1.79769313486232E308到–4.94065645841247E-324或1.79769313486232E308到4.94065645841247E-324的精确浮点数。


    整数数据类型

    除了字符串之外,这可能是最常用的数据类型。 使用此数据类型仅存储范围为–32,768至32,767的整数。

    长数据类型

    Long数据类型也是仅存储整数的Integer数据类型,但是范围比传统的Integer数据类型大得多。 使用Long存储从–2,147,483,648到2,147,483,647的值。

    对象数据类型

    Object变量实际上是对Access对象(例如表单,报表或控件)的引用。 或者,数据类型可以引用ActiveX组件或在类模块中创建的类对象。

    单一数据类型

    单一数据类型存储精度数字,即带小数位或小数的数字。 数据类型类似于Double,但是范围较小。 使用此数据类型存储从–3402823E38到–1.401298E–45或从1.401298E–45到3.402823E38的值。

    字符串数据类型

    字符串是另一种非常常见的数据类型。 它存储值或数字,但将其视为文本。 有两种:固定的和可变的。 固定字符串可以处理1到65,400个字符。 声明一个

    固定字符串,请使用Dim变量名形式的Dim语句As String * stringlength

    相反,

    变量 String数据类型根据需要增加和缩小以适合其存储值。 默认情况下,所有String变量都是此类型。 要声明此类型,请使用以下形式的Dim语句
    Dim变量名As字符串 变量数据类型

    Variant数据类型存储数字和非数字值。 此数据类型是最灵活的,因为它存储几乎任何类型的非常大的值(与Double数值数据类型匹配)。 仅在不确定数据类型或容纳外部数据并且不确定数据类型的规格时才使用它。

    Variant数据类型是VBA的默认值,因此以下代码将varValue解释为Variant:

    昏暗的varValue

    尽管Variant数据类型很灵活,但是VBA处理这些数据类型的速度要慢一些,因为它必须为分配的值确定最准确的数据类型。 但是,很可能您永远不会注意到性能下降。

    最大的缺点是数据类型缺乏可读性。 那样的话,我们意味着您无法通过查看代码轻松确定合适的数据类型,这可能是一个问题。

    注意:

    请参阅

    Matthew的帖子 ,提供有关VBA7中64位算术和指针兼容性的更新信息

    From: https://bytes.com/topic/access/insights/601315-vba-data-types

    展开全文
  • VBA数据类型和类型转换函数

    万次阅读 2017-07-10 23:41:07
    一、数据类型 1、Boolean--2字节--0~255 2、Byte--1字节--True或False 3、Integer--2字节--32768~32767(注意范围) 4、Long--4字节--2147483648~2147483647(推荐) 5、Single--4字节---3.402823E38~-1....
  • VBA基础知识整理(数据类型

    千次阅读 2019-05-13 19:52:35
    '在VBA中数据类型有整数、文本、对象等类型。这些不同的类型有着特定的作用,在进行运算时也会占用 '不同大小的内存,所以我们在编写程序时为了提高运行效率,一般都要定义数据的类型。 '2 数据类型对程序运行的...
  • Boolean 数据类型 Boolean 变量存储为 16 位(2 个字节)的数值形式,但只能是 True 或是 False。Boolean 变量的值显示为 True 或 False(在使用 Print 的时候),或者 #TRUE# 或 #FALSE#(在使用 Write # 的时候)...
  • 每天一篇Excel技术图文微信公众号:Excel星球NO.79-什么是数据类型?作者:看见星光微博:EXCELers / 知识星球:Excel嗨,大家好,我是星光,今天咱们来继续学习VBA编程。在零基础学Excel的入门教程里咱们讲过,...
  • VBA入门之数据类型

    千次阅读 2018-07-23 15:36:02
    Dim X 的dim代表申明变量的函数,Dim 变量名 As 数据类型 Dim i as Integer i = 7   VBA中使用 & 来连接字符串,注意字符串与字符串之间要有空格 使用MsgBox函数的格式: 变量 = MsgBox("...
  • 你已选中了添加链接的内容蓝字关注,加微信NZ9668获资料信息VBA解决方案 系列丛书作者头条百家平台 VBA...代码存储在模块,在VBA中提供了三种类型的模块:窗体模块、标准模块和类模块。一 各个模块的分工我们在...
  • 可以直接获得不同对象的 数据类型 如下的例子 Private Sub CommandButton3_Click() '增加记录按钮,输入 Range("B15") = TextBox1.Text Range("B16") = TextBox1.Value Range("B17") = TextBox1 Debug.Pr...
  • vba判断数据类型函数

    万次阅读 2014-07-02 19:10:49
    判断变量的值是否为日期 isnull 判断变量的值是否包含任何有效数据 isempty 判断变量的值是否为空 IsArray 判断出变量是否为一个数组。 IsError 判断变量是否返回的是一个错误值 IsObject 判断变量是否表示对象...
  • VBA研究】VBA数据类型定义与效果

    千次阅读 2015-08-07 11:55:27
    VBA里的数据类型有:字节型(Byte),整数型(Integer),长整数型(Long),单精度浮点型(Single),双精度浮点型(Double),货币型(Currency),小数型(Decimal),字符串型(文本型)(String),日期型(Date...
  • 输入数据:声明(定义)数据,赋初值---声明变量的数据类型,赋初值等就是第一部分,定义和输入数据! 处理数据 输出数据(返回结果) 1.2 常量和变量严格声明 默认是不强制声明 在模块的开头写上 opti...
  • 判断数据类型函数 函数 功能 备注 TypeName() 判断变量类型 适用于不知道什么类型的情况 IsNumeric() 判断变量是否为数值 可能存在VBA自动类型转换的情况 IsDate() 判断变量是否为日期 ...
  • VBA 数据类型

    千次阅读 2017-01-02 11:05:09
    VBA 数据类型 数据类型 注释 占用空间 简写 数值范围 Byte 字节 1字节 0–255 Boolean 布尔 2字节 True 或 False Integer 整数 2字节 % -32,768 至 32,767 Long 长整型 4 字节 & -2,147,...
  • Excel VBA高级编程 -根据日期查找数据

    千次阅读 2020-08-11 22:43:20
    打印出货单的时候,经常会需要从数据库查询一段时间内的所有数据 本工作表使用VBA实现了如下功能: 1、实时统计重复项 2、重复项数据自动求和 附上代码 Sub lqxs() Dim Cnn As Object, SQL$, shnm$, arr...
  • VBA基础 - 数据类型

    2019-09-29 23:52:29
    学习一种新语言, 数据类型和关键字是第一步. 数据类型 常用的数据类型如下: 类型 存储空间 范围 Boolean 2 bytes True 或者 False Byte 1 byte 0 ~ 255 Integer 2 bytes -32768 ~ 32768 Long 4 bytes -...
  •  vba是编程语言,宏是用vba代码保存下来的程序。录制的宏是vba里最简单的程序,正因为如此,录制宏存在许多缺陷:如无法进行判断和循环,不能显示用户窗体,不能进行人机交互……  解决录制宏的这些问题,需要...
  • 数据类型判断、转化,对话框(弹框输入、提示,返回文件路径、文件夹),空的一些情况,正则表达式语法,其他常用语句。
  • 每天一篇原创Excel图文微信公众号:Excel星球NO.81-什么是变量?作者:看见星光微博:EXCELers / 知识星球:Excel哈罗,大家好,我是星光,今天给大家聊一下编程一个非常重要的概念——变量。变量这个词有些朋友...
  • VBA学习笔记3-数据结构类型SortedList

    千次阅读 2019-12-29 11:00:02
    VBA学习笔记3-数据结构类型SortedList一、SortedList是干什么的?二、创建方法1,前期绑定2,后期绑定三、常用方法和属性1,Add添加方法2,item的添加办法3,得到集合的大小4,判断key键和Item是否存在4.1,Contains...
  • 他山之石——VBA中数据类型转换

    千次阅读 2018-06-26 00:14:43
    发现这节的内容相比正则表达式... '在VBA中数据类型有整数、文本、对象等类型。这些不同的类型有着特定的作用,在进行运算时也会占用 '不同大小的内存,所以我们在编写程序时为了提高运行效率,一般都要定义数据...
  • VBA学习_1:数据类型

    2018-10-25 18:17:00
    VBA数据类型 布尔型Boolean 整数:整数型Integer、字节型Byte、长整数型Long 小数:小数型Decimal、单精度浮点型Single、双精度浮点型Double、货币型Currency 字符串型Sting(定长和不定长) 日期型Date ...
  • Excel VBA——数据类型

    2018-10-23 21:00:00
    一、什么是VBA Visual Basic for Applications(VBA)是visual basic的一种宏语言,是微软开发出来在其桌面应用程序执行通用的自动化任务的编程语言,主要用来拓展windows的应用程序功能,特别是Office软件,也...
  • 直接上代码 Private Sub Worksheet_SelectionChange(ByVal Target As Range) ... MST = "日期" End Select MsgBox MST End Sub 其实就是监测SelectionChange事件。然后用对应的检测方法去检测就好了。
  • VBA中日期和时间相关的计算

    千次阅读 2019-09-18 05:53:22
    VBA中取当前日期的函数是Date,当前时间的函数是Time,当前日期和时间一起取是Now。日期转换成年月的函数分别是:Year、Month、Day,参数可以用Date或Now取出的值。时间转换成时分秒的函数分别是:Hour、Minute、...
  • 代码如下: Function sheettype(sheet As range) Select Case True Case Application.WorksheetFunction.IsText(sheet) ...Case Application....sheettype = "日期" End Select End Function
  • (五)数据类型 VBA中的常见数据类型: 类型 简写 占用内存 Integer 整型 % 2Byte Single 单精度 ! 4Byte Double 双精度 # 8Byte Long 长整型 & 4Byte String 字符型 $ 定长或变长 Currency 货币型 @ 8Byte Sub ...
  • excel-vba的常用功能普通功能变量定义日期计算插入链接与图片如何插入一段漂亮的代码片生成一个...如果不定义变量,默认变量的数据类型是Variant格式,这样会占据大量的内存空间。 变量的几种分类: Date、String、In

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,132
精华内容 1,252
关键字:

vba中日期是什么数据类型