对于Excel用的不大熟练的人,只会按左下角的方向箭头,然后用眼睛去查找,有的人为了让Excel显示多一些工作表名称,还会把右下角的滚动条拉的只剩一点点,造成操作Sheet都不方便。...当然也可以使用VBA来快速创建一个所有Sheet的目录: ?...rngout As Range On Error Resume Next Set rngout = Application.InputBox("请选择输出单元格", Default:=ActiveCell.Address...A1"")" 这个公式使用的是FormulaR1C1样式,要得到这个公式的文本,可以先在一个单元格中设置好公式,然后在立即窗口输入: ?...Activecell.FormulaR1C1 其实这里使用VBA直接在对应的单元格创建超链接更好,使用HYPERLINK是为了解VBA配合Excel函数的使用。
有合并工作表,自然也离不开拆分工作表,将一个总表,按照某一列的内容拆分为多个工作表,然后可以再结合前面的一个工作簿的工作表另存为工作簿功能,就可以生成多个工作簿进行分发了: ?...Range On Error Resume Next Set rng = Application.InputBox("请选择[标题行]、[拆分关键字列]所在的单元格", Default:=ActiveCell.Address...arr(i, 1)) If dic.Exists(strkey) Then '再次出现的关键字,合并 Set dic(strkey) = Excel.Union..., cols), dic(strkey)) Else '第一次出现的关键字,记录标题及当前行单元格 Set dic(strkey) = Excel.Union...(keys(i)) '注:这里没有去考虑sheet的名称是否合规,sheet名称是不能包含" / \ 等字符的" Worksheets.Add(After:=Worksheets
Excel 宏编程的常用代码 我们常用Excel统计一些数据,如果善用VBA,就能自动做出各种复杂的报表,懒人就是追求一劳永逸!...我有这样的感觉,就是每见到一个语句或函数,都会激发出偷懒的灵感来,哈哈,很自恋了,其实好玩而已。...————————————————————————- 用过VB的人都应该知道如何声明变量,在VBA中声明变量和VB中是完全一样的!...,执行该段代码,你就可以将连在一起的一片数据全部选中。...Dim my As Worksheet For Each my In Worksheets my.PrintPreview Next my 得到当前单元格的地址 msgbox ActiveCell.Address
图4 Microsoft Excel提供了生成相同结果的LEN函数。 字符、字符串和过程 将字符或字符串传递给过程 与普通值一样,可以将字符或字符串传递给过程。...同样,可以应用过程的任何功能,包括传递任意数量的参数,或者传递字符、字符串和其他类型参数的混合。还可以创建一个接收可选参数的过程。...要将字符、字符串或表达式转换为大写,可以调用VBA的UCase函数或Microsoft Excel的UPPER函数,这些函数接受一个参数作为要考虑的字符串或表达式。..." ActiveCell = UCase(ProgrammingEnvironment) End Sub 要将字符或字符串转换为小写,可以调用VBA的LCase函数或Microsoft Excel...String2参数是要查找的字符或子字符串。如果在String1中找到String2(作为String1的一部分),函数将返回第一个字符的位置。
其实,我们可以创建一个导航工作表,将工作簿中的所有工作表名称都放置到导航工作表中,并设置到工作表的链接,这样,我们只需要单击工作表名称,即可到达相对应的工作表。...同时,在每个工作表中,放置回到导航工作表的链接,这样单击该链接就可以迅速回到导航工作表。这样更方便快捷,如下图1所示。 ?...图 实现上述功能的VBA代码如下: Sub NavigateWorksheet() Dim wks As Worksheet Dim i As Integer i = 0 '...&ActiveCell.Address, _ ScreenTip:="返回到工作表:" & ActiveSheet.Name End With...End With ActiveCell.Offset(1, 0).Select Continue: Next wks End Sub '判断工作表是否存在 Function SheetExists
要创建工作簿的目录,其实就是遍历获取所有的文件,然后过滤一下,再增加超链接就可以: ?...rngout As Range On Error Resume Next Set rngout = Application.InputBox("请选择输出单元格", Default:=ActiveCell.Address...Dim pRow As Long pRow = 0 For i = 0 To UBound(RetFiles) flag = False '避免用Or将多个判断连接在一起...VBA.InStr(RetFiles(i), ".xls") Then flag = True ElseIf VBA.InStr(RetFiles(i), ".xlsx...1, 2).Value = result Set rngout = Nothing Erase result End Sub 如果是想要创建文件的目录,就不需要中间那些判断是否包含文件后缀就可以
标签:VBA,Shape对象 本文介绍使用VBA创建和操控形状的知识。 在Excel中,可以通过功能区“插入”选项卡“插图”组中的“形状”库按钮在工作表中插入形状。...可以使用形状来可视化数据、在形状中添加文本、作为执行宏代码的按钮,等等。 使用AddShape方法创建形状 要使用VBA在Excel中创建形状对象,必须调用AddShape方法。..._ ActiveCell.Top, 80, 27) End Sub 选择形状类型 VBA可以使用大量的形状类型,如下图1-图10所示。..., _ ActiveCell.Top, _ rng.Width, _ rng.Height) End Sub 方法2:可以手工按自己的意愿创建形状,然后使用VBA读取其宽度和高度...213, 181) '调整边框宽度 shp.Line.Weight = 2 '删除边框 shp.Line.Visible = False End Sub 改变形状类型 如果要更改现有形状的类型,可以将
学习Excel技术,关注微信公众号: excelperfect 在Excel中,我们可以使用“分列”功能(即“文本到列”),很容易地将单元格中带有特定分隔符的文本拆分到不同的列中。...图1 我们可以使用一段VBA代码来实现。 下面的VBA代码将当前单元格中以换行符分隔的文本拆分到其相邻单元格中,如下图2所示。..., Chr(10)) lngTotal = UBound(varSplit) Range(Cells(ActiveCell.Row,ActiveCell.Column + 1), _...Cells(ActiveCell.Row, ActiveCell.Column+ 1 + lngTotal)).Value = varSplit End Sub 代码中: 首先,使用Chr(10)作为分隔符拆分当前单元格中的内容...然后,将拆分的值放置到当前单元格相邻的单元格区域中。
上图前面介绍过的vba常用对象的层级关系,在对象模型中application主程序对象是起点,它代表excel程序本身。通过application主程序对象可以实现顶层需求。...比如activecell 和 activesheet等。 3、调用excel的内部函数。利用excel内置函数,可以减少代码的编写工作量。 本节主要复习下对象的引用,回顾下返回活动状态的对象。...程序,application主程序对象作为最顶层的通常可以省略。...1、activecell属性 activecell属性用来返回一个range对象,代表动动窗口或者指定窗口中的活动单元格。...(如果窗口中没有显示工作表,此属性无效) 2、activechart属性 activechart属性用于返回一个chart对象,代表活动图表(嵌入式图表或图表工作表)。
例如,如果指定参数值为directory,即输入公式: =INFO("DIRECTORY") 则返回当前目录或文件夹的路径,对于我的示例工作簿来说将返回: D:\01....Excel研究\06.2 VBA代码库\09\ 详细内容参见:Excel函数学习27:INFO函数 CELL函数回顾 CELL函数的语法如下: CELL(info_type,[reference]) 其中...此外,两个参数都声明为ByVal,确保在函数中的更改不会影响到传递给它的参数。函数返回Variant型的结果,表示指定的Target的This的名称。...代码开头的注释部分说明了参数This可以指定的值,可以使用数字或文本来指定。如果This指定为文本,则忽略大小写以及前导和结尾的空格。...A1或’[示例工作簿.xlsm]Sheet1’!A1。 如果在VBA中使用NameOf函数,那么参数Target必须是Range对象如Range(“A1”)或Cells(1)或ActiveCell。
它可以轻松地完成数据的各类数学运算,并用各种二维或三维图形形象地表示出来,从而大大简化了数据的处理工作。但若仅利用excel的常用功能来处理较复杂的数据,可能仍需进行大量的人工操作。...除此之外,使用 VBA语言还有如下优点:1、VBA是一种通用程序语言,通过它不仅可以共享Microsoft相关的各种软件(如excel、 word、access)……,而且随着其它的一些软件(如大名鼎鼎的...ChartObject代表工作表中的嵌入式图表,其作用是作为Chart对象的容器。利用ChartObject可以控制工作表上嵌入式图表的外观和尺寸。...如可以用Cells(1,1)、Cells(10,4)来引用”A1″、”D10″ 单元格。ActiveCell代表活动工作表的活动单元格,或指定工作表的活动单元格。...三)、处理单元格 1、直接赋值与引用 将变量、常量值直接赋给单元格、或将单元格的值直接赋给变量、常量,这是在excel中最简单的单元格赋值及引用方法。
在Excel应用程序中,经常使用类模块来创建自已的对象,用于: 1.封装VBA和Windows API代码,使之更易于使用或重用。 2.捕获事件。 3.引发事件。 4.创建自已的对象和对象模型。...在类模块中,所有的公共变量或属性过程都可作为对象的属性,所有的公有过程或函数均可作为对象的方法。...在实际应用中,基于过程的属性比基于公共变量的属性更好,因为可以更方便地控制给属性赋值和返回属性值。属性过程可以对传递给对象的数据进行检验并执行相应的操作,同时还可以根据需要设置属性为只读或者只写。...我们可以以函数形式创建方法,使其可以返回值。...例如,将CCell类模块中的Analyze方法转换成函数形式: Public Function Analyze() As String If IsEmpty(mrngCell) Then
正如您所期望的,有相似的命令来创建包含整个行的范围: objRange := objExcel.ActiveCell.EntireRow 如果您想要选择的行或列不同于带有活动单元格的行或列怎么办?...当您在 Excel 中对一些内容进行排序时,您必须依次指定所有的排序参数;如果您不使用参数,则将其保留为默认值(ComObjMissing() 表示该可选参数的默认值)。...其中参数的含义请参阅 Excel 帮助。...如果您想对 Excel 进行深入的学习以执行更多更高级的操作,可以将下面两种方法结合起来: 通过 VBA 帮助简单的熟悉 Excel 中的数据对象模型,并学习其中的例子; 通过 Excel 的宏功能录制手动进行的操作...在学习时主要的参考资料是 Excel 开发人员参考 (程序自带),由于某些时候可能安装精简版的去除了这个,可以到 MSDN 上查看,这里提供一个 Excel 2003 VBA 参考的下载链接。
消息框中的消息 Prompt参数是用户将看到在消息框上显示的字符串。作为一个字符串,可以用双引号将其显示,如“你的凭据已检查”。...如果需要,可以指定另一个按钮作为默认按钮。为此,可以使用或添加MsgBoxStyle枚举的另一个成员。...否则,要显示自己的标题栏,传递title参数。 标题作为字符串传递。...可以通过使用默认值填充文本框来解决此问题,并向用户提供示例。为此,InputBox函数提供了第三个参数。 要向用户提供示例或默认值,将第三个参数传递给InputBox函数。...输入框的返回值 当输入框显示时,输入值后,用户将单击其中一个按钮:确定或取消。如果用户单击“确定”,则应获取用户已键入的值,还应负责查明用户是否键入了有效值。
使用Range和Cells属性引用单元格区域 正如上面所提到的,可以组合Range和Cells属性来引用单元格区域,最简单的方法是使用Cells属性作为Range属性的参数。...Cells属性显示其有用性的最重要场景可能是使用变量而不是实际数字作为Cells属性的参数。实际上,可能经常会发现要处理这种情况(使用变量而不是硬编码的数字作为Cells属性的参数)。...当使用VBA执行某些工作时,Cells属性和将变量用作参数的功能非常有用,常见的情形就是这些工作要使用循环时。...“偏移行”是要偏移基准区域的行数,该值可以是正值(向下偏移)或负值(向上偏移)。“偏移列”是要偏移区域的列数,如果为正值,则向右偏移,为负值将向左偏移。...在某些情况下,可能希望创建一个相对引用,Range.Offset属性只需要移动一定数量的行或列(但不能同时移动行或列)就可以找到它应该返回的单元格。在这些情况下,可以忽略不相关的参数。
学习Excel技术,关注微信公众号: excelperfect Excel数据有效性(在Excel 2013及以上版本中改称数据验证)是一项很方便的功能,帮助我们让用户在单元格中输入规定的数据。...然而,将数据复制粘贴到设置了数据有效性的单元格时,会破坏掉数据有效性设置。 利用VBA代码,可以避免因粘贴数据而破坏单元格数据有效性设置。...(不能撤销),是否继续?"..._ & vbNewLine& "提示: 要想可以撤销粘贴, 使用命令栏中的粘贴值按钮....ActiveCell.Offset(, 1).Select Case xlToLeft ActiveCell.Offset(, -1).Select
标签:VBA 下面的自定义函数可以获取指定单元格所在的页码: Public Function PageNumber( _ Optional ByRef target As Excel.Range...: = PageNumber(Cell, Start) 其中, 参数Cell,指定一个单元格,程序将给出这个单元格所在的页码。...参数Start,指定起始页码,如果忽略则为1。...下面的测试代码调用该自定义函数获取当前单元格所在的页码: Sub test() MsgBox PageNumber(ActiveCell, 1) End Sub 注:本文的代码来源于mcgimpsey.com...,这个网站有些不错的VBA程序,有兴趣的朋友可以去看看。
本文介绍的VBA程序是一个自定义函数,整理自jkp-ads.com,很好地增强了内置的CallByName函数的适用性。...该函数接受单元格对象、代表该对象属性的字符串和属性值作为参数,返回满足属性值的所有单元格。...2.参数procname,必需,Variant型(String),代表对象的属性或方法名的字符串。...3.参数calltype,必需,一个vbCallType型的常量,代表被调用的过程的类型,可以是vbGet(返回属性)、vbLet(修改属性)、vbMethod(执行方法)、vbSet(设置对象)。...例如,如果想获取上图1所示的工作表单元格A2的背景色的值,可以使用下面的代码: Sub test() MsgBox CallByName(ActiveCell.Interior,"Colorindex
领取专属 10元无门槛券
手把手带您无忧上云