精华内容
下载资源
问答
  • VBAActivate方法和Select方法的区别

    千次阅读 2017-07-06 16:12:15
    VBA中的Activate方法和Select方法看起来似乎相同,其实二者是有区别的。Activate方法的作用是激活,而Select方法的作用是选择。其区别如下:  1.对于“Sheets”对象  Sheets.Select可以同时选择多个工作表,而...

      VBA中的Activate方法和Select方法看起来似乎相同,其实二者是有区别的。Activate方法的作用是激活,而Select方法的作用是选择。其区别如下:

        1.对于“Sheets”对象

        Sheets.Select可以同时选择多个工作表,而Sheets.Active不能同时激活多个工作表。如下面的语句:

        Sub Test1()
           ActiveWorkbook.Sheets(Array(1, 2, 3)).Select '可以同时选择3个工作表
        End Sub
        Sub Test2()
           ActiveWorkbook.Sheets(Array(1, 2, 3)).Activate  '不能同时激活3个工作表,出现错误
        End Sub

        另外,对于隐藏的工作表,Sheets.Select方法不能选择隐藏的工作表,而Sheets.Activate方法可以激活隐藏的工作表。如下面的代码:

        Sub Test3()
           ActiveWorkbook.Sheets(2).Visible = False '隐藏工作表
           ActiveWorkbook.Sheets(2).Select          '无法选择隐藏的工作表,产生错误
        End Sub
        Sub Test4()
           ActiveWorkbook.Sheets(2).Visible = False  '隐藏工作表
           ActiveWorkbook.Sheets(2).Activate         '可以激活隐藏的工作表
        End Sub

        2.对于“Range”对象

        首先说明一下活动单元格和选定区域:

        某个选定的区域中只能有一个活动单元格,通常活动单元格位于所选区域的左上角。如下图我们选择了A1:G10区域,A1单元格是高亮显示的,A1单元格就是活动单元格。当我们用键盘进行输入的时候,键入的内容将被输入到活动单元格中。


    如果我们要让区域中的其他单元格变成活动单元格,可以按Tab键,将使区域中当前活动单元格右方的单元格变为活动单元格,而按Shift+Tab则方向相反;或按Enter键,将使区域中当前活动单元格下方的单元格变为活动单元格,而按Shift+Enter则方向相反。

      “Range”对象的的Select方法可以选择一个或多个单元格,而Activate方法可以指定某一个单元格为活动单元格。 如果我们用下面的代码试图激活某个区域:

        Range("d4:e5").Activate

        Excel将仅仅激活D4单元格,但同时选择了D4:E5区域。下面的代码首先选择A1:E10区域,同时激活D4单元格:

        Sub test()
           Range("a1:e10").Select
           Range("d4:e5").Activate
        End Sub

        而对于下面的代码:

        Sub test()
           Range("a1:e10").Select
           Range("f11:g15").Activate
        End Sub

        由于区域A1:E10和F11:G15没有公共区域,将最终选择F11:G15,并激活F11单元格。

        由上可见,当我们要选择某个区域时最好用Select方法,而不用Activate方法,否则可能会出现意想不到的错误。

     

    • 大小: 17.7 KB
    展开全文
  • VBA中,系统会自动将工作表、工作簿创建相应的实例。而窗体则需要在显示时创建,类模块则需要开发者自行编写代码创建实例。 如:在某个工作表中编写了一段事件代码,并创建了该工作表的一个模板。在VBE的设计模式...

    目录

    示例

    实现代码1

    工作表(Worksheet)对象的Select方法

    实现代码2

    附件:显示所有工作表

    目录工作表中加入事件

    其它工作表中加入事件

    实现代码3

    工作簿事件

    类模块和Me变量


    示例

        如图所示,该表为某公司报表总目录,其余所有的报表均存储在同一工作簿中,且报表的名称与目录中定义的名称相同。如何实现双击目录中的某个单元格时即可转入相应的报表,但同时隐藏其他报表(即工作表标签中仅含有当前显示的报表及目录工作表)?

    编号目录
    1井架
    2套管扶正台
    3天车、游车
    4钻井绞车
    5钻井绞车盘刹液压站
    6钻井绞车盘刹装置
    7钻井绞车辅助刹车(伊顿刹车)
    8钻井绞车水冷装置
    9防碰天车
    10游车
    11死绳固定器
    12液压猫头
    13液压鼠洞
    14液压大钳

    实现代码1

        本例所要解决的有两个问题:①建立双击时的超链接;②动态隐藏工作表。对于超链接的建立,由于需要双击单元格时转入相应的工作表,因而可以使用目录工作表的双击事件(BeforeDoubleClick),然后使用工作表的Activate方法激活相应的工作表。动态隐藏工作表则可以使用多种方法将工作表隐藏。

    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
        Dim sht As Worksheet
        '判断双击的单元格是否为第2列,非标题行,并且单元格非空
        If Target.Column = 2 And Target.Row > 1 And Target.Value <> "" Then
            '遍历工作表
            For Each sht In Worksheets
                '判断工作表
                If sht.Name <> Target.Value And sht.Name <> Sheet1.Name Then
                    '当工作表不为目录工作表,也不为目标工作表,将其隐藏
                    sht.Visible = xlSheetHidden
                Else
                    '当工作表为目录工作表或为目标工作时,将其显示
                    sht.Visible = xlSheetVisible
                End If
            Next
            '选中目标工作表
            Worksheets(Target.Value).Select
        End If
    End Sub
    

    工作表(Worksheet)对象的Select方法

    工作表(Worksheet)对象的Select方法可以用于选择工作表,其语法为

    Worksheet.Select(Replace)

    其中,Worksheet表示工作表对象。
        参数Replace表示是否取消选择当前已经选择的工作表。该参数默认为True,表示当使用该方法选择工作表时,则放弃当前已经选中的工作表的选择。当该参数为False时,表示多选工组表,除了当前选中的工作表之外,继续选择所指定的工作表。当该参数为False时,相当于按住【Ctrl】键进行工作表的选择。
        在使用Select方法之前,必须保证工作表对象是非隐藏的,否则将出现如图所示的错误。

    实现代码2

    附件:显示所有工作表

    Option Explicit
    
    Sub 显示所有工作()
        Dim sht As Worksheet
        For Each sht In Worksheets
            sht.Visible = xlSheetVisible
        Next
    End Sub
    

        在每个工作表中加入工作表的激活事件(Activate),当工作表被激活时,则隐藏除其本身以及目录外的其他工作表。

    目录工作表中加入事件

    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
        Dim sht As Worksheet
        '判断双击的单元格是否为第2列,非标题行,并且单元格非空
        If Target.Column = 2 And Target.Row > 1 And Target.Value <> "" Then
            '取消默认双击事件
            Cancel = True
            '显示目标工作表
            Worksheets(Target.Value).Visible = xlSheetVisible
            '选中目标工作表
            Worksheets(Target.Value).Select
        End If
    End Sub
    

    其它工作表中加入事件

    Private Sub Worksheet_Activate()
        Dim sht As Worksheet
        For Each sht In Worksheets
            If sht.Name <> Me.Name And sht.Name <> Sheet1.Name Then
                sht.Visible = xlSheetHidden
            End If
        Next
    End Sub
    

    工作表激活事件(Activate)和失去激活状态事件(Deactivate)

        所谓激活的工作表,就是当前用户正在操作的工作表。当用户从某张工作表转入另一张工作表操作时,后一个工作表的激活事件(Activate)被触发,而前一个工作表的失去激活状态事件(Deactivate)也被触发。这两个事件的语法如下:

    Private  Sub Worksheet Activate ()
    End Sub
    Private  Sub Worksheet  Deactivate ()
    End Sub

       在每个工作表中均设置激活事件程序,当单击超链接实现从某一张表的激活状态进入另一张表时,即运行该事件程序,以隐藏除当前表格和目录表格外的所有工作表。

    实现代码3

        在当前工作簿中添加表格激活事件(SheetActivate)程序,使当工作簿中某个工作表被激活时,隐藏除其本身以及目录表格之外的所有表格。

    Option Explicit
    
    Private Sub Workbook_SheetActivate(ByVal Sh As Object)
        Dim sht As Worksheet
        Dim shtActivate As Worksheet
        
        Set shtActivate = Sh
        Application.ScreenUpdating = False
        For Each sht In Worksheets
            If sht.Name <> Sheet1.Name And sht.Name <> shtActivate.Name Then
                sht.Visible = xlSheetHidden
            End If
        Next
        
        Application.ScreenUpdating = True
    End Sub
    
    Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
        Dim shtActivate As Worksheet
        Application.ScreenUpdating = False
        
        Set shtActivate = Sh
        '判断当前工作表是否为目录工作
        If shtActivate.Name = Sheet1.Name Then
            '判断双击单元格是否为第2列,非标题行,单元格非空
            If Target.Column = 2 And Target.Row > 1 And Target.Value <> "" Then
                '取消默认的双击事件
                Cancel = True
                '显示目标工作表
                Worksheets(Target.Value).Visible = xlSheetVisible
                '选中目标工作
                Worksheets(Target.Value).Select
            End If
        End If
        
        Application.ScreenUpdating = True
    End Sub
    

    工作簿事件

        与工作表事件对应,工作簿中也有许多事件程序供开发者使用。在工作簿事件中,除了与工作簿本身相关的事件外,还包括所有的工作表事件。当需要为工作簿中所有的工作表设置相同的事件程序时,可以使用工作簿事件中关于工作表的事件。这些事件与工作表事件的使用方法相同,仅仅是事件名称在原有的事件之前加入了Sheet,并且在事件程序的参数中添加了关于工作表对象的参数,以标识触发事件的工作表,见下表。

        事  件

        事件程序

    工作表激活

    Worksheet_Activate()

    Workbook_SheetActivate(ByVal Sh As Object)

    双击单元格

    Worksheet_BeforeDoubleClick(ByVal Target As Range,Cancel As Boolean)

    Workbook_SheetBeforeDoubleClick(ByVal Sh As Object,ByVal Target As Range,Cancel As Boolean)

    鼠标右击单元格

    Worksheet_BeforeRightClick(ByVal Target As Range7,CancelAs Boolean)

    Workbook_SheetBeforeRightClick(ByVal Sh As Object,ByYal Target As Range,Cancel As Boolean)

    工作表计算

    Worksheet_Calculate0

    Workbook_SheetCalculate(ByVal Sh As Object)

    工作表的值改变

    Worksheet_Change(ByVal Target As Range)

    Workbook_SheetChange(ByVal Sh As Object,ByVal target As Range)

    失去激活状态

    Worksheet_Deactivate()

    Workbook_SheetDeactivate(ByVal Sh As Object)

    单击超链接

    Worksheet_FollowHypertink(ByVal Target As Hyperlink)

    Workbook_SheetFollowHypeTlink(ByVal Sh As Object,ByVal Target As Hyperlink)

    数据透视表更新

     

    Worksheet_PivotTableUpdate(ByVal Target As PivotTable)

    Workbook  SheetPivotTableUpdate(ByVal Sh As Object,ByVal Target As PivotTable)

    选择区域变化

     

    Worksheet SelectionChange(ByVal target As Range)

    Workbook  SheetSelectionChange(ByVal Sh As Object,ByVal rarget As Range)

        本例中,使用了工作簿中的工作表激活事件。如此设置之后,无须在每个工作表中单独设置事件程序,而只需在工作簿中设置事件程序即可。设置工作簿事件是将代码添加至“工程资源浏览器”中的工作簿对象(默认是ThisWorkbook)中即可。

    类模块和Me变量

        除了标准模块外,在VBE的“工程资源浏览器”中显示的各个对象包括窗体、工作表、工作簿以及类模块,其实质都是类模块。类模块不等同于真正的对象,它可以看作是一个设计模式,是以该设计模式而创建的。开发者可以在VBE中对各个类模块进行设计,当程序真正运行时,需要创建类模块的实例才能够使用相应的对象。在VBA中,系统会自动将工作表、工作簿创建相应的实例。而窗体则需要在显示时创建,类模块则需要开发者自行编写代码创建实例。
        如:在某个工作表中编写了一段事件代码,并创建了该工作表的一个模板。在VBE的设计模式下,该代码不具有任何实际的意义。当在工作表界面中进行操作时,系统实际上是以开发者在VBE中创建的模板套用至该工作表中,而这个模板中定义了某个事件的运行,从而可以触发该事件。
        在类模块中,可以使用Me关键字表示该类模块所指的实例对象。比如,在工作表的代码窗口中使用Me,则表示该工作表对象;在工作簿代码中使用Me,表示该工作簿对象;而在窗体的代码中使用Me,则表示窗体对象。因而,在类模块中一般使用Me表示该对象。
      本例中,在单独的工作表事件中使用了Me表示当前的工作表。
     

     

     

     

     

    展开全文
  • 在代码中用format函数取现在的时间,VBA 的 Format 函数与工作表函数 TEXT 用法基本相同,但功能更加强大,许多格式只能用于VBA 的 Format 函数,而不能用于工作表函数 TEXT 。 Format(Now, "yyyymmddhhmm") 把...
  • Worksheets(1).Activate 可以激活Worksheet(1) Worksheets(1).Select 会报错 如果没有隐藏工作表 Worksheets.Select 可以选择到该workbook里所有的工作表 Worksheets.Activate Activate的话,根本选不...

    如果工作表1隐藏

    Worksheets(1).Activate

    可以激活Worksheet(1)

    Worksheets(1).Select

    会报错

    如果没有隐藏工作表

    Worksheets.Select

    可以选择到该workbook里所有的工作表

    Worksheets.Activate

    Activate的话,根本选不到全部的工作表

    总结一下,激活可以激活 显示或隐藏 的单张表

    选取,只能选取看的见的表,可以选单也可以全选

    展开全文
  • Layer.Activate 属性用来激活图层,使其成为激活层,调用 ActiveLayer 将返回该激活层。 VBA参考代码 下面的VBA代码,将当前活动页面中图层名称为 Layer 1 的图层激活。 ActivePage.Layers("Layer 1")....

    Layer.Activate 属性用来激活图层,使其成为激活层,调用 ActiveLayer 将返回该激活层。

    VBA参考代码

    下面的VBA代码,将当前活动页面中图层名称为 Layer 1 的图层激活。

    ActivePage.Layers("Layer 1").Activate
    

    原创声明:本文首发于 《CorelDRAW VBA探秘》 独立站点,请尊重文章版权。
    转载请注明原文链接:http://www.cdrvba.com/coreldraw-vba-layer-activate


    CorelDRAW VBA - CSDN文章专栏https://blog.csdn.net/column/details/27356.html

    展开全文
  • https://docs.microsoft.com/zh-cn/office/vba/language/reference/user-interface-help/appactivate-statement AppActivate 语句语法具有下列命名参数: title 必需。 时间 可选。 毫秒? 特点: 这个是激活已经...
  • 从Java调用VBA代码

    2021-07-17 02:39:27
    I have an Excel file with a large set of VBA code. There are 4 public subroutines that take no parameters that can be called by the user when the document is opened in Excel, these manipulate the ...
  • VBA做日报

    千次阅读 多人点赞 2019-01-22 21:45:57
    前言:有个同事需要每天做日报,但是电脑又因为种种原因用不了power query,所以就用VBA帮他写了一段代码 报表成品如下图: 其实东西并不多,只有8列数据,用power query大概也就15分钟的时间,可是VBA我写了...
  • VBA常用技巧

    2014-12-21 16:39:28
    2-2 使用Activate方法 12 2-3 使用Goto方法 12 技巧3 获得指定行、列中的最后一个非空单元格 12 技巧4 定位单元格 12 技巧5 查找单元格 12 5-1 使用Find方法 12 5-2 使用Like运算符 12 技巧6 替换单元格内字符串 12 ...
  • 库存分析 概述:VBA股票分析项目 股票是代表公司的股份或部分所有权的投资。 股票是积累财富的最好方法之一。 在这个项目中,我们在excel中有一个数据集,...Worksheets( "DQAnalysis" ).Activate Range( "A1" ).Value
  • Private Sub Worksheet_Activate() On Error Resume Next Dim x As Object, yy As Object, sql As String Set x = CreateObject("ADODB.Connection") x.Open "Provider=Microsoft.Jet.OLEDB.4.0;Extended ...
  • VBA 图表的基本操作(二)

    千次阅读 2020-08-13 23:26:06
    今天继续讲讲VBA图表的相关操作 一、在图表工作表上创建图表(看起来有点拗口,也就是在Chart上创建一个图表) 插入图表的方式:打开工作簿后,对着sheet点一下右键——插入——选择图表。 ①昨天主要是讲了...
  • 此时,我的逗比同事要去抖音给我搜教程……在不借助第三方工具的情况下,使用Excel内置的VBA即可实现功能。首先,打开VBA编辑器:菜单栏开发工具→Visual Basic若菜单栏没有开发工具,则在菜单栏下方的功能区右键,...
  • Excel VBA使用总结

    2021-11-23 08:20:43
    Excel VBA1.入门 都说世界上最好的语言就是PPT,工作报告,年度总结。。。。 到处都有它的身影,更是被高手设计的惟妙惟肖。 今天,我们不争第一,勇夺第二。 还在为设计报表而发愁吗,还在为统计数据而苦恼吗,今天...
  • vba常用英文

    2014-10-26 17:02:30
    (11) Workbooks(“book1.xls”).Activate '激活名为book1的工作簿 (12) ThisWorkbook.Save '保存工作簿 (13) ThisWorkbook.close '关闭当前工作簿 (14) ActiveWorkbook.Sheets.Count '获取活动工作薄中工作表数
  • VBA做的小工具,将指定文件夹下文件放入匹配名字的文件夹内,文件属于复制移动
  • Vba菜鸟教程

    万次阅读 多人点赞 2020-05-02 18:21:15
    文章目录Vba菜鸟教程编辑器宏vba基本语法运算符变量语句简写语句sub语句调用语句退出语句分支语句循环语句判断语句公式与函数在单元格输入公式利用单元格公式返回值调用工作表函数利用vba函数自定义函数操作对象操作...
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼2011-11-08vba 读写文件,utf-8编码格式2010-07-28 22:33 780人阅读 评论(0) 收藏 举报这是一个转换UTF-8格式文本文件的示例,包括读取和写入,需要用到两个API函数:...
  • VBA &金融

    2021-05-25 16:01:31
    G:\py\210523finance\VBA专题12-课程需用材料 Sub Macro1() Dim ws As Worksheet Dim i As Integer For i = 1 To 20 Set ws = Sheets.Add '不要忘记sheet复数 ws.Name = "部门 " & i Workbooks.Open ("G:\py\...
  • 4、Activate 方法的语法 5、Set 语句 3 6、MsgBox 函数的语法 7、选项语句的语法 8、AddressOf 运算符 9、了解变体 10、写赋值语句 11、写可执行的语句 12、Public 语句 13、Private 语句 14、使用数组 15、使用常数...
  • VBA

    2020-06-10 21:48:02
    wsCompareResult.Activate 'wsCompareResult.Name = sheetname If sheetname = "Disclaimer" Then Exit For End If wsOld.Activate oRow = wsOld.UsedRange.Rows.Count oColumn = wsOld.UsedRange.Columns.Count ...
  • vba操作规划求解

    2021-09-22 10:28:13
    vba操作规划求解要前期引用用到的函数1,SolverReset2,SolverOk 函数3,SolverAdd 函数4,SolverFinish 函数5,SolverSolve 函数一个简单案例 要前期引用 要使用vba操作规划求解,需要添加引用Solver Program Files...
  • VBA GetOpenFilename 方法

    2021-08-02 10:54:42
    VBA中 GetOpenFilename 方法
  • vba 代码

    2019-11-27 11:11:27
    Excel vba 快捷运行F5 逐条运行F8 MsgBox 弹框 Debug.Print 在立即窗口打印 Sub 随机1() '定义i取1到20 For i = 1 To 20 ' 随机取1到200数 Range("a" & i) = Application.RandBetween(1, 200) ' 随机取颜色1到...
  • VBA实现进度条的显示

    2010-06-27 07:36:12
    VBA实现进度条的显示 Sub Test() ' The UserForm1_Activate sub calls Main UserForm1.LabelProgress.Width = 0 UserForm1.Show End Sub Private Sub UserForm_activate() Call Main End Sub Sub Main() ' ...
  • VBA基础学习之1.11事件

    2020-03-07 23:05:49
    VBA基础学习之事件 在VBA中,要手动更改单元格或单元格值范围时,可以触发事件驱动的编程。 更改事件可能会使事情变得更容易,但您可以非常快速地结束一个完整的格式化页面。VBA中有两种事件 - 工作表事件 工作簿...
  • Excel VBA编程

    万次阅读 多人点赞 2019-04-11 16:45:51
    文章目录如何创建VBAVBA语法规则声明变量给变量赋值让变量存储的数据参与运算关于声明变量的其他知识变量的作用域特殊的变量——数组声明多维数组声明动态数组其他创建数组的方法数组函数利用UBound求数组的最大索引...
  • 目录 ActiveX控件 Excel中常用的ActiveX控件 编辑ActiveX控件 通过代码访问ActiveX控件 工作表中窗体(表单)控件和ActiveX控件的区别 ... ActiveX控件是自动化组件对象,该对象可通过嵌入的方式添加至其他应用...
  • VBA常用代码合集

    千次阅读 多人点赞 2020-12-19 11:13:11
    VBA常用代码模版Tp0️⃣—零零散散小功能(持续更新)Tp1️⃣—输出活动页面筛选后的行数Tp2️⃣—创建数组存放数据Tp2-1 静态数组Tp2-2 动态数组Tp3️⃣ 创建字典存放数据Tp4️⃣ 优化代码运行速度 Tp0️⃣—零零散...

空空如也

空空如也

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

activatevba