精华内容
下载资源
问答
  • 本文档中有VBA常用的部分函数,及常用woorkbook、worksheet、单元格操作示例代码
  • vba对象属性大全

    2015-11-09 22:20:33
    vba对象属性大全
  • VBA对象属性方法查询集 VBA对象属性方法查询集
  • WPS软件vba对象属性大全,开发文档;VBA属性
  • VBA简述①(对象属性方法)

    千次阅读 2021-02-26 13:27:17
    何为VBA的对象 作为在进入基本语法之前必须知道的...Range("{对象名}").{对象属性名} Range("A1").Value 示例:获取“A1”单元格的内容 如何设置对象的值 Range("{对象名}").{对象属性名}={值} Range(

    何为VBA的对象

    作为在进入基本语法之前必须知道的事情,VBA有“对象”的概念。“对象”是指在指示操作时,作为操作对象的“物”。在Excel的情况下,“工作簿”、“单元格”、“工作表”、“图表”、“表单”等都是适用的。在掌握了“对象”概念的地方,让我们来介绍一下VBA的基本语法。

    获取对象值时的写法

    Range("{对象名}").{对象属性名}

    Range("A1").Value
    

    示例:获取“A1”单元格的内容

    如何设置对象的值

    Range("{对象名}").{对象属性名}={值}

    Range("A1").Value=10
    

    示例:将“A1”单元格的内容设置为“10”

    如何指示对象的行为

    Range("{对象名}").{动作名}

    Range("A1").Select
    

    示例:选择“A1”单元格

    何为VBA的属性

    “属性”是为每个对象设置的“属性信息”。换句话说,就是“表示对象性格的数据”。当为对象的属性设置值时,对象的外观和形状会发生变化。

    属性名概要
    Value为单元格设置值或获取单元格的值
    Row单元格的行号(纵轴从上到下1、2、3……表示)
    Column单元格的列号(横轴从左到右1、2、3……表示)

    属性值的获取

    例如,在“获取A1单元的内容”中写如下。

    Dim {放入值的变量} As Integer
    {放入值的变量} = Range("A1").Value
    

    “Range(”A1“)”是表示A1单元格的对象。Value是表示单元格内容的属性。因此,单元A1的值被存储在{放入值的变量}中。

    “Dim”的意思是“声明变量”。

    属性值的设定

    例如,在“A1”单元格中设定“XXX”的值如下所述。

    Range("A1").Value="XXX"
    

    何为VBA的方法

    “方法”是指“命令”、“操作”、“动作”、“动作”等意思。换句话说,就是“通过对象自身的动作返回的结果的手续”。

    • 单元格方法
    方法名概述
    Select表示工作表中单元格的选择
    Delete删除目标单元格
    Insert在目标单元格中插入相同大小的空白单元格

    指定“参数”以执行命令

    此外,还可以使用“参数”详细指示命令的内容。要指定参数,请在方法名称之后输入半角空格以描述内容。例如,“按升序对A2~A5的单元格的数值进行排序”如下所述。

    Range("A2:A5").Sort Key1:=Range("A2")
    

    Range(“A2:A5”)是表示A2~A5范围的单元格的对象,Sort是进行“排序”的方法。
    “Key1”是表示指定作为分类基准的密钥的意思的“参数”,“Range(”A2“)”是“自变量”。
    将在“:=”中为参数指定参数。上述程序意味着“在键中指定单元的‘A2’来重新排列A2~A5的范围单元”。

    指定多个参数执行命令

    此外,还可以指定多个参数。

    WorkSheets.Add(Before,After,Count,Type)
    

    Before是第一个参数,After是第二个参数,Count是第三个参数,Type是第四个参数。
    Before和After指定其中之一。你可以想同时指定它。

    例如,如果要在“通讯录”座席后面添加四张工作表,则写如下:

    WorkSheets.Add After:=WorkSheets("住所録"),Count:=4
    

    VBA可指定的主要对象和集合

    对象以指定Excel本身的Application对象为最高层,由层次结构构成
    在这里插入图片描述
    作为记述例子,要指定“Book1.xlsx”文件的“通讯录”表的单元格“A1”,如下所述。

    Workbooks("Book1.xlsx").Worksheets("住所録").Range("A1").Select
    
    展开全文
  • Excel VBA 对象属性函数参考,比较全面,excel vba编程必备帮助文档。
  • 程序中调用对象的任一方法或改变它的属性之前,必须先声明对象。下图是Excel中的4个主要对象及其层次关系。对象集合对象集合是一个包含几个子对象的集合。例如,在Excel中的Workbooks 对象包含了所有已打开的...

    对象代表应用程序中的元素,类似于汽车中的轮子、发动机等。Excel中也有许多对象,例如:工作簿、工作表、单元格、图表、窗体,或是一份报告。程序中调用对象的任一方法或改变它的属性之前,必须先声明对象。

    下图是Excel中的4个主要对象及其层次关系。

    v2-ab2d7054493da36ebb168ced61e97b96_b.jpg

    对象集合

    对象集合是一个包含几个子对象的集合。例如,在Excel中的Workbooks 对象包含了所有已打开的Workbook(工作簿)对象,Worksheets对象集合包含了某个工作簿中的所有工作表Worksheet。

    集合中的项目可以通过索引号或名称来做识别。例如,在下面的过程中 Workbooks(1) 会关闭索引号是1的工作簿对象。

    Sub CloseFirst()
    Workbooks(1).Close
    End Sub

    下面的过程先定义一个工作表对象wkSheet,再将名称为“test”的工作表赋值给对象wkSheet,然后对工作表wkSheet中的单元格进行操作。

    Sub Sample233()
    Dim wkSheet As Worksheet '定义工作表对象
    '将当前工作簿(ch2.3.xlsm)的"test"工作表对象赋值给wkSheet
    'Worksheets是工作表集合,"test"工作表是其中的一个子集
    Set wkSheet = ThisWorkbook.Worksheets("test")
    '另一种赋值的方法,将"ch2.3.xlsm"工作簿的"test"工作表对象赋值给wkSheet
    'Workbooks是工作簿集合,"ch2.3.xlsm"是其中的一个子集
    Set wkSheet = Workbooks("ch2.3.xlsm").Worksheets("test")
    'Range对象是已定义完毕wkSheet对象的子对象
    wkSheet.Range("a2").value = "this is a test"
    '将wkSheet释放
    Set wkSheet = Nothing
    End Sub

    对象的方法

    方法指的是对象能执行的动作。例如,Add是下拉列表控件ComboBox对象的一个方法,因为它会增加一个新项目到下拉式列表框中。

    下面的程序调用 Add 方法,增加一个新的项目到下拉列表控件“Combo1”项目中。

    Sub AddEntry(newEntry as String) ' newEntry作为过程的参数被传入过程AddEntry
    Combo1.Add newEntry ' newEntry作为一个项目增加到下拉列表框中
    End Sub

    如果对象共享共同的方法,则可以操作整个对象集合。例如,下列的过程会预览本工作簿所有的工作表。

    Sub Sample243()
    ThisWorkbook.Worksheets.PrintPreview
    End Sub

    对象的事件

    事件是一个对象可以辨认的动作,像单击鼠标或按某键等,在系统捕捉到对象的事件后,执行该事件对应的程序代码,从而实现相应控制。

    不同的对象具有不同的事件,例如工作簿拥有的事件:Open、Activate、BeforeClose、BeforePrint、BeforeSave、NewSheet、SheetChange等,工作表拥有的事件:SelectionChange、Change、Activate等。

    当打开工作簿时初始化系统、显示个性工具栏等都需要在工作簿的Open事件中添加相应程序代码。如果单元格内容被修改后,需要提示用户,那么在工作表的SelectionChange事件中添加代码即可。

    简要示例如下:

    Private Sub Workbook_Open()
    MsgBox "您打开了当前的工作簿!"
    End Sub

    对象的属性

    一个对象的属性定义了对象的特征,诸如大小、颜色或屏幕位置,或某一方面的行为,诸如对象是否激活或是否可见。可以通过修改对象的属性值来改变对象的特性。

    若要设置属性值,则在对象的引用后面加上一个表达式,它是由属性名加上等号(=) 以及属性值所组成的。例如,下面的过程通过设置“test”工作表的名称而改变工作表的标签名称。

    Sub Sample245()
    ThisWorkbook.Worksheets("test").Name = "test11"
    End Sub

    有些属性并不能设置,只能读取。通过检索每属性的帮助主题,可以看到是否可以设置此属性(读与写),或只能读取此属性(只读),还是只能写入此属性(只写)。

    可以通过属性的返回值,来检索对象的信息。下列的过程使用一个消息框来显示标题,它显示在当前活动窗体顶部。

    Sub GetWindowName()
    Dim WindowName As String
    '将活动窗口的标题赋值给变量WindowName
    WindowName = Application.ActiveWindow.Caption
    '显示该变量值
    MsgBox WindowName
    End Sub

    展开全文
  • 微软Excel VBA手册,Excel VBA 对象属性方法及使用示例。Excel VBA 对象属性方法及使用示例。
  • VBA对象属性方法事件[收集].pdf
  • VBA,Application对象的常用属性方法

    千次阅读 2020-02-01 12:22:05
    1.0对象管理器里可以查看application的所有属性方法 Dim i As cell 错误,没有这种类型定义 只能 dim i as range dim sh as sheet dim wb as workbook 1.1 Application的常见属性 Application....

    1 Application 对象的常见属性

    1.0对象管理器里可以查看application的所有属性,方法

     

    • Dim i As cell  错误,没有这种类型定义
    • 只能
    • dim i as range
    • dim sh as sheet
    • dim wb as workbook

     

    1.1 Application的常见属性

    • Application.screenupdating = False
    • Application.EnableEvents = False
    • Application.DisplayAlerts = False

     

    • Application.DisplayFullScreen = True     ‘设置EXCEL为全屏模式
    • Application.Visible = False                    ‘隐藏excel应用
    • Application.Interactive = False              '禁止用户干预宏代码的执行(禁止所有的输入和鼠标操作)
    •  键盘输入??

     

    1.2  Application的常见方法

    • Application.Undo   '注意和workbook_sheetchange() 事件配合时要慎用
    • Application.getopenfilename
    • applicaiton.wait 
    • applicaiton.Wait (Now + TimeValue("00:00:02"))
    • application.ontime()

     

    2 Application的属性虽然多数是过程级的,但sub结尾需要重置回来

    2.1 Application.screenupdating = False 只能过程sub 或函数中

    2.1.1 只能写在sub过程中,是过程级的变化

    • Application.screenupdating = False 只能过程sub 或函数中
    • 我感觉这是过程级的,过程结束就释放,重置了吧

     

    2.1.2 sub过程结尾还是要把 application属性重置回来

    • sub结束,这个Application.ScreenUpdating = False 生命周期自然失效,所以感觉不需要=true,好像是无所谓的
    • 但是有下面这个例子
    • Application.EnableEvents = True  '结尾如果没这句话,会反复触发,导致EXCEL不刷新了

     

    3  Application.screenupdating = False

    3.1 作用

    • 关闭 “过程中运行时” 屏幕即时刷新,sub 执行完毕后再刷新(sub结束后,此语句设置失效,必然会刷新)
    • 代码1:第1行数字赋值会马上刷新,而第2行会等待几秒
    • 代码2:第1行数字和第2行数字,会等待几秒后一起刷新出来(也就是sub结束时)
    Sub test601()
    
    Range("a5:g5") = 101
    Debug.Print "a5: g5已修改"
    Application.Wait (Now + TimeValue("00:00:05"))
    Range("a6:g6") = 102
    Debug.Print "a6: g6已修改"
    
    End Sub
    

     

    Sub test602()
    
    Application.ScreenUpdating = False
    
    Range("a5:g5") = 101
    Debug.Print "a5: g5已修改"
    Application.Wait (Now + TimeValue("00:00:05"))
    Range("a6:g6") = 102
    Debug.Print "a6: g6已修改"
    
    
    Application.ScreenUpdating = True
    
    End Sub

     

    4  Application.EnableEvents = False

    4.1 Application.EnableEvents=false  非常重要

    • 这个非常重要,避免死循环,避免其他事件打断造成影响
    • 因为  application.undos是吧用户修改继续重置,但是又触发了 workbook_sheetchange()
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    
    Application.EnableEvents = False
    MsgBox "本工作簿不允许修改"
    Application.Undo
    Application.EnableEvents = True
    End Sub

     

    4.2 Application.EnableEvents = True  

    结尾如果没这句话,会导致EXCEL不刷新了

    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    
    Application.EnableEvents = False
    MsgBox "本工作簿不允许修改"
    Application.Undo
    'Application.EnableEvents = True  '结尾如果没这句话,会反复触发,导致EXCEL不刷新了
    End Sub

     

    5 Application.DisplayAlerts = False

    5.1 基本语法

    • Application.DisplayAlerts 属性 ,显示各种 displayalerts 窗口
    • 注意语法 复数  displayAlerts
    • 如果宏运行时 Microsoft Excel 显示特定的警告和消息,则该属性值为 True。Boolean 类型,可读写。
    • 语法
    • 表达式.DisplayAlerts
    • 表达式   一个代表 Application 对象的变量。
    • 默认值为 True。将此属性设置为 False 可在宏运行时禁止显示提示和警告消息;当出现需要用户应答的消息时,Microsoft Excel 将选择默认应答。
    • 如果将该属性设置为 False,则在代码运行结束后,Microsoft Excel 会将该属性设置为 True,除非运行的是跨进程代码。

     

    5.2 代码改进

    正确1, 不用循环, worksheet变量名写死

    Sub test_sh2()
    Application.DisplayAlerts = False
    
    For i = 1 To 3
       Worksheets.Add
       ActiveSheet.Name = i & "月"
    Next
    
       Worksheets("1月").Delete
       Worksheets("2月").Delete
       Worksheets("3月").Delete
       '有没有worksheet 名称用变量合成的办法?
    
    Application.DisplayAlerts = True
    
    End Sub

     

    • For i = 1 To Worksheets.Count   '默认的是thisworkbook
    • 有没有worksheet 名称用变量合成的办法?--变量名是可以合成的  Worksheets(i & "月").Delete
    Sub test_sh2()
    Application.DisplayAlerts = False
    
    For i = 1 To 3
       Worksheets.Add
       ActiveSheet.Name = i & "月"
    Next
    
    
    '有没有worksheet 名称用变量合成的办法?--可以
    For i = 1 To 3
       Worksheets(i & "月").Delete
    Next
    
    Application.DisplayAlerts = True
    
    End Sub

     

    错误代码

    • 为啥3个表都删了,还问我下标越界?因为循环写错了
    Sub test_sh2()
    Application.DisplayAlerts = False
    
    For i = 1 To 3
       Worksheets.Add
       ActiveSheet.Name = i & "月"
    Next
    
    '为啥3个表都删了,还问我下标越界?--因为这是错误代码
    For i = 1 To Worksheets.Count   '默认的是thisworkbook
       Worksheets("1月").Delete
       Worksheets("2月").Delete
       Worksheets("3月").Delete
       '有没有worksheet 名称用变量合成的办法?
       
    Next
    
    
    Application.DisplayAlerts = True
    
    End Sub
    

     

    6 application.activecell()  却不能与 workbook  worksheet连用。

     

    • Window.ActiveCell 属性 
    • 返回一个 Range 对象,它代表活动窗口(最上方的窗口)或指定窗口中的活动单元格。如果窗口中没有显示工作表,此属性无效。只读。
    • 语法
    • 表达式.ActiveCell
    • 表达式   一个代表 Window 对象的变量。
    • 说明
    • 如果不指定对象识别符,此属性返回活动窗口中的活动单元格。
    • 请仔细区分活动单元格和选定区域。活动单元格为选定区域内部的一个单元格。而选定区域可以包含多个单元格,但只有一个单元格为活动单元格。
    • 下列表达式都是返回活动单元格,并且都是等效的。
    • Visual Basic for Applications 
    1. ActiveCell
    2. Application.ActiveCell
    3. ActiveWindow.ActiveCell
    4. Application.ActiveWindow.ActiveCell 

     

    Sub test_sh2()
    
    Debug.Print "activecell只能单独使用,不要和sh wb混用连用"
    Application.ActiveCell.Value = 22
    ActiveCell = 11
    ActiveWindow.ActiveCell = 55
    Application.ActiveWindow.ActiveCell = 66
    
    '而以下全部都是错误的,不知道为啥
    'Application.ThisWorkbook.ActiveSheet.ActiveCell.Value = 33
    'ThisWorkbook.ActiveSheet.ActiveCell.Value = 33
    'ActiveSheet.ActiveCell.Value = 33
    'Worksheets("sheet3").ActiveCell = 777
    
    Debug.Print "结合sh,wb使用cell,好像只能用cells() range() 不能用activecell()"
    Worksheets("sheet3").Cells(14, 2) = 555
    
    
    End Sub

     

    7 application.wait 等待时间后执行

     

    Sub tt5()
    
    Debug.Print Time
    Debug.Print Format(Now, "yyyy/mm/dd")
    Debug.Print Format(Now, "yy/m/d")   '可以试试写成"yy/m/d"
    Debug.Print Format(Now, "y/m/d")   '可以试试写成"y/m/d"
    Debug.Print Format(Now, "hh/mm/ss")
    Debug.Print Format(Now, "h/m/s")
    
    t1 = Time
    Application.Wait (Now + TimeValue("00:00:05"))
    Debug.Print Format(Time - t1, "hh/mm/ss")
    
    
    End Sub

     

    8  application.ontime 定时执行

    8.1 application.ontime 语法

    • 安排一个过程在将来的特定时间运行(既可以是具体指定的某个时间,也可以是指定的一段时间之后)。
    • 语法
    • 表达式.OnTime(EarliestTimeProcedureLatestTimeSchedule)
    • 表达式   一个代表 Application 对象的变量。
    • 参数
    名称必选/可选数据类型说明
    EarliestTime必选Variant希望此过程运行的时间。
    Procedure必选String要运行的过程名。
    LatestTime可选Variant过程开始运行的最晚时间。例如,如果 LatestTime 参数设置为 EarliestTime + 30,且当到达EarliestTime 时间时,由于其他过程处于运行状态而导致 Microsoft Excel 不能处于“就绪”、“复制”、“剪切”或“查找”模式,则 Microsoft Excel 将等待 30 秒让第一个过程先完成。如果 Microsoft Excel 不能在 30 秒内回到“就绪”模式,则不运行此过程。如果省略该参数,Microsoft Excel 将一直等待到可以运行该过程为止。
    Schedule可选Variant如果为 True,则预定一个新的 OnTime 过程。如果为 False,则清除先前设置的过程。默认值为True

     

    1 Application.OnTime 使用时的局限性

    • Application.OnTime
    • 局限性1 不再一个模块内的 过程/函数 不能被找到
    • 局限性2 一个神奇BUG,如果 过程/函数名字带数字,直接双引号会报找不到宏,需要里面再加一层单引号 如"'t7'"
    • 问题3,函数的调用好像比sub 快一些

     

    8.1 延后执行

     

     

     

    2 application.ontime 调用其他sub /function 时,显示无法执行宏的解决办法,需要里面再加一层单引号 如"'t7'"

    • 下面这2种写法,正常都是正确,但都会报错
    • Application.OnTime Now + TimeValue("00:00:02"), procedure:="t7"
    • Application.OnTime Now + TimeValue("00:00:02"), procedure:="t7()"
    • 需要里面再加一层单引号 如"'t7'" 就可以找到对应 sub /function  不会报错
    Sub t6()
    
    Debug.Print "开始调用"
    Application.OnTime Now + TimeValue("00:00:02"), procedure:="'t7'"
    Application.OnTime Now + TimeValue("00:00:02"), "'t8'"
    Debug.Print "继续往下执行,不等待外部调用"
    
    End Sub
    
    
    Public Sub t7()
       Debug.Print "hello world1"
    End Sub
    
    
    Function t8()
        Debug.Print "hello world2"
    
    End Function

     

     

     

    VBA 中,不接收参数的子例程或函数不需要圆括号。否则,在声明中需要圆括号。

    在VBA编辑器的模块中运行如下代码

    Sub showTime()
    Application.Caption = Now()
    Application.OnTime(Now() + TimeValue("00:00:01"), "showTime")
    End Sub

    会出现 编译错误 缺少:=

    原因:
    Application.OnTime(Now() + TimeValue("00:00:01"), "showTime")
    不需要返回值,所以Application.OnTime函数不用加括号,去掉括号即可,改成如下代码

    Sub showTime()
    Application.Caption = Now()
    Application.OnTime Now() + TimeValue("00:00:01"), "showTime"
    End Sub

     

     

     

    8.2 定时运行

     

     

    Sub ta()
    
    Debug.Print "ok"
    Application.OnTime TimeValue("12:53:02"), procedure:="tb"
    
    End Sub
    
    
    Public Sub tb()
       Debug.Print "hello world1 "
    End Sub
    
    

     

     

     

    局限性1 不再一个模块内的 过程/函数 不能被找到

    问题3,函数的调用好像比sub 快一些
    Debug.Print "开始倒计时 秒?"
    Debug.Print "继续往下执行,不等待外部调用"

    End Sub

    '4个参数

     

    https://blog.csdn.net/znyang/article/details/12201459

    https://blog.csdn.net/huzhizhewudi/article/details/84497476

     

     

     

     

    https://jingyan.baidu.com/article/fa4125aceabbf528ac709287.html

    http://club.excelhome.net/thread-848141-1-1.html

    http://club.excelhome.net/thread-1148787-1-1.html

    https://zhidao.baidu.com/question/559892540.html

    http://m.reader8.cn/show-2191445.html

    http://club.excelhome.net/forum.php?mod=viewthread&tid=941375&highlight=

    https://zhidao.baidu.com/question/447345258.html

    http://club.excelhome.net/thread-784974-1-1.html

     

     

    以下代码有问题,需要用变量传递时间?

    http://club.excelhome.net/thread-986364-1-1.htm

    VBA ontime 作用于application对象失败

     

     

    Sub ta()
    
    'On Error Resume Next
    
    Debug.Print "准备调用"
    Application.OnTime earliesttime:=Now + TimeValue("00:00:02"), procedure:="tb", schedule:=False
    Debug.Print "继续执行"
    
    'procedure:="tb", schedule:=False
    'latesttime:=TimeValue("12:53:02") + TimeValue("00:00:59")
    End Sub
     
     
    Public Sub tb()
       Debug.Print "hello world1 "
    End Sub
     

     


     

     

     

     

    9 application.onkey 

    展开全文
  • Excel VBA方法属性大全

    2009-08-31 13:35:14
    按字母顺序提供了Excel工作簿各对象属性方法,方便查找。
  • ExcelVBA方法属性大全

    2014-08-26 16:06:32
    ExcelVBA方法属性大全.rar
  • ACAD VBA对象方法属性.xlsx
  • 1 EXCEL对象 EXCEL对象逐层级拆解可以分为多层次的对象 1.1 MSDN官网资料 详细见MSDN官网 https://docs.microsoft.com/zh-cn/office/vba...2 常用excel对象属性方法,事件举例 对象集合 workbooks 对象 wo...

    1 EXCEL对象

    • EXCEL对象逐层级拆解可以分为多层次的对象

    1.1 MSDN官网资料

     

    1.2 VBE编辑器里,选择对象管理器,也可以打开和查询

     

     

    2  常用excel对象的属性,方法,事件举例

    • 对象集合 workbooks

     

    • 对象       workbook,一般都是指各种 excel  对象

     

    • 属性
    • 对象的属性,可能本身也是对象
    • 如workbook下的worksheet 是属性也是对象

     

    • 方法(VBA内置方法)
    • 方法是对象的动作,并且需要主动调用

     

    • 事件(VBA内置事件),事件,是被外在条件激活的,是被动的;而方法,却是主动的。
    • 事件,一般只在 workbook, worksheet,等以下的对象层次才有
    • 事件是触发性的
    • 在VBE里,先选择对象,然后在 事件选择器里 选择事件 后,会自动生成 对应的过程名,不能自己修改

     

     

    3 工作簿 workbooks

    https://docs.microsoft.com/zh-cn/office/vba/api/excel.worksheet.change

     

    3.1 workbooks属性             变量=对象.属性

    • 变量 = 对象.属性
    • 需要给变量赋值
    • V1= workbooks.application
    • V1= workbooks.count
    • V1= workbooks.creator
    • V1= workbooks.item()     '定义为wb 对象
    • V1= workbooks.parent
    Sub t7()
    
    Debug.Print Workbooks.Application   '很显然是excel
    Debug.Print Workbooks.Count         '这是你现在已经打开的 EXCEL表--内存中的
    Debug.Print Workbooks.Creator       '?
    Set a = Workbooks.Item("cs11.xlsm")  '对对象的赋值,赋值后也是对象
    Debug.Print a.Name                   '这里不能debug.print a
    rem 直接这样不行,必须先定义为对象! Debug.Print Workbooks.Item(cs11.xlsm).Name
    rem set a as object
    Debug.Print Workbooks.Parent        '很显然也是excel
    
    End Sub
    

     

     

    3.2 workbooks方法             对象.方法

    • 对象.方法
    • 方法是操作,动作等等,不需要给变量赋值
    • workbooks.add
    • workbooks.open
    • workbooks.close          '一般情况下,都是同时打开多个sheet 同时关闭的。打开1个workbook
    • workbooks.checkout
    •  workbooks.opentext     '用来打开txt文件
    • 还有很多
    Sub t7()
    
    Rem Workbooks.Add ("cs100.xlsm")  '默认会去,默认路径去找文件做为范本,可以改路径把? C:\Users\pc\Documents
    Workbooks.Add                     '不能带括号 workbooks.add()是错误的
    Workbooks.Add (xlWBATWorksheet)   '有几种参数
    
    
    End Sub

     

    Sub t7()
    
    Rem Workbooks.Open "cs100.xlsm"    '语法要求必须"" workbooks.open()这样不行!并且有1堆复杂参数
    Rem Workbooks.Close                 '必须全部关闭,不能只关闭特定表?
    Workbooks.OpenText "cs100.txt"      '打开txt文件
    
    
    End Sub
    

     

    4 工作表 worksheets 

    • worksheets的事件,方法,属性都特别多

     

    4.2 worksheet  的属性(具体在代码窗口敲了对象worksheet. 看)

    • worksheets().name    或worksheet1.name
    • worksheets().index
    • worksheets().codename

     

    4.3 worksheets  的方法(具体在代码窗口敲了对象worksheet. 看)

    • EXCEL里没有 worksheet的 open  close 这种奇怪操作
    • worksheets.add
    • worksheets.delete
    • worksheet.active

     

    4.4 worksheets 的事件(具体在VBE里查看)

    • worksheets.active
    • worksheets.change

     

    5  表 sheets

    • sheets 包括 worksheets charts window 等等?
    • 这3种写法是等效的
    Sub test1002()
    
    Debug.Print Sheet1.Name
    Debug.Print Sheet1.Index
    Debug.Print Sheet1.CodeName & vbCrLf
    
    Debug.Print Sheets(1).Name
    Debug.Print Sheets(1).Index
    Debug.Print Sheets(1).CodeName & vbCrLf
    
    
    Debug.Print Sheets("range").Name
    Debug.Print Sheets("range").Index
    Debug.Print Sheets("range").CodeName & vbCrLf
    
    
    
    End Sub
    

     

    6 range 和  cells(一般 range 和 cells是等价的)

    6.1 属性 

    • range.value        ----返回或设置单元格中的值
    • range.formula     ---返回或设置 A1 样式表示法和宏语言中的对象的公式。String 类型,可读写。
    • range.font           ---返回一个font对象,可以设置字体的特征
    • range.interior.      设置背景

     

    6.2 方法 (具体在代码窗口敲了对象worksheet. 看)

    • range.select ----选中单元格
    • range.clear ----清楚单元格中的值
    • range.copy ----复制单元格中的值
    • range.resize----重新设置区域大小,也是以左上角为准。
    • range.offset----偏移 (cells/range 会整体偏移) 是根据当前range偏移 找另外一个区域
    • range.delete   删除

     

    6.3 具体方法介绍

    • range.resize
    • Resize(,)  resize(:=rows,:=columns)

     

    • range.offset()
    • Cells().offset(4,0)
    • Range().offset(4,0) 是根据当前range偏移 找另外一个区域

     

    • cells(3,3).delete    '只能向左边或上面整体移动
    • 不带参数时,默认参数先是 xlup,如果下方无内容,则默认参数为xltoleft
    • 或者指定参数
    • cells(3,3).delete(xlup )
    • cells(3,3).delete(xltoleft )

     

    • 但是下面2种写法是错误的
    • cells(3,3).delete shift:xldown    或者  cells(3,3).delete(xldown )
    • cells(3,3).delete shift:xltoright  或者  cells(3,3).delete(xltoright)

     

     

    • delete 方法执行的时候
    • 居然是先删除下方的有值的单元格,逐个删除
    • 然后删除右边的有值得单元格,逐个删除
    • 可以试试   cells(3,3).delete  就可以看到这个奇妙现象。。。。。。。。。。
    • 所以我理解了,为啥这几个会报错
    • cells(3,3).delete shift:xldown
    • cells(3,3).delete shift:xltoright
    • 因为单元格总是基于设定在左上角的规则,所以只能是  右边的所有单元格往左移动,或者下面往上移动
    • 所以只有  shift:=xlup 和  上 shift:= xltoleft 好用

     

    6.3 事件 (具体在VBE里查看)

    range或 cells有事件吗?

     

    7  属性的两种写法格式

    7.1 与其他语言的区别:属性的特殊写法

    •     属性:= 属性值
    •     而其他语言一般写法就是 = 

     

    7.2 VBA本身属性有两种写法 (可能有问题)

    方法(参数)

    方法 空格  参数

    举例 cells().delete(xlup)

    • cells(3,3).delete shift:xlup    或者  cells(3,3).delete(xlup)
    • cells(3,3).delete shift:xltoleft 或者  cells(3,3).delete(xltoleft)

     

    参考文档和继续

     

    展开全文
  • VBA常用的对象一般包括application/workbook/worksheet/range/window/chart/commandbar/filesystemobject等对象属性,亦指对象的特征。属性有可读和可写之分 属性还可能有参数。一般的属性格式可以是...
  • excel-vba方法属性

    2018-08-02 15:44:14
    一部超级工具书-Excel对象属性方法,每个均有配套实例,如果把其中超过1000个的对象属性方法搞精通了,估计至少达到中级水平了吧
  • VBA对象 VBA中的对象其实就是我们操作的具有方法属性的Office中支持的对象Excel中的几个常用对象表示方法1、工作簿 ' Workbooks 代表工作簿集合,所有的工作簿,Workbooks(N),表示已打开的第N个工作簿 ' Workbooks...
  • VBA语句对象方法属性
  • 【视频】Excel精讲专题-VBA语句对象方法属性
  • VBA方法属性大全.rar

    2009-05-05 19:08:26
    VBA方法属性大全 方便查询,包括适用对象,描述和示例
  • 【应用示例】Excel精讲专题-VBA语句对象方法属性
  • 在ppt中vba属性,类,方法 1.Application对象对象代表PowerPoint应用程序,通过该对象可访问PowerPoint中的其他所有对象。 (1)Active属性:返回指定窗格是否被激活。 (2)ActivePresentation属性:返回...
  • 解决解决对象不支持此属性方法工具,当运行弄个程序,提示对象不支持此属性,即可以使用该工具
  • 1 与range对象位置有关的属性 (1)range.row : 该Range左上角单元格的行号 (2)range.column:该range左上角单元格的列号 (3)range.address : 该range各个对角顶点的绝对引用地址$ 注意:当range包含多个矩形...
  • 兰色幻想 VBA80集第02集:VBA中的语句、对象方法属性
  • End Sub (三)方法 方法:实际上就是对对象的操作,它是一种动作,一种行为。 VBA程序示例: Sub 选中() Range(“a1:a10”).select '选中a1到a10单元格。注:如果单元格区域前没有写工作表名,则默认为活动工作...
  • ExcelVBA方法属性大全(大量实例)
  • VBA对象属性方法查询集[汇编].pdf
  • 对象/属性/方法/事件(Object/Attribute/ Method/Event) 描述(Description) GammaDist 返回 γ 分布函数值。可以使用此函数来研究具有偏态分布的变量。γ 分布通常用于队列分析。 GammaInv 返回 γ 累积分布函数...
  • 字典对象用于保存两个相关联的一维数组,分别为关键字Key组成的关键字...使用字典对象的Add方法可以将一组关联的关键字与条目添加到字典对象中,其语法格式如下。 Object.Add Key, Item Key和Item两个参数都是必需...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,860
精华内容 2,744
关键字:

vba对象属性方法大全