当前位置:主页 > Office办公 > Excel专区 > Excel函数

最新发布

Excel VBA中的Date类型的匹配问题
Excel VBA中的Date类型的匹配问题

VBA的Date类型比较奇怪。测试:1. 新建一个空白的Excel文档,在A1单元格输入2009-11-12。2. 打开VBA编辑器,插入模块,增加下面这个宏Sub test() MsgBox #11/12/2009# = Range("A1").Value ' true MsgBox VarType(#11/12/2009#) = VarType(Range("A1").Value) ' true MsgBox Application.WorksheetFunction.Match(#11/12/2009#, Range("A1"), 0) ' errorEnd Sub 3. 按F5运行test宏,可以看到Range("A1")的类型和值都和#11/12/2009#一致(通过对range("A1")的监视也可以看出这一点),都是Date类型,但是如果用match去匹配的话,却出现错误。解决方法,在匹配中将要匹配的Date类型的数据强制转换成Long类型去匹配。MsgBox Application.WorksheetFunction.Match(CLng(#11/12/2009#), Range("A1"), 0) 对其原理还是不清楚,不知道有没有看到的高手来做一下解释。

135 次浏览
Excel批量导入图片的方法实例教程
Excel批量导入图片的方法实例教程

excel批量导入图片一般是使用VBA代码实现,因为excel功能的局限性,插入——图片,尽管可以批量导入图片,但不能自动排版。  文章总结几个excel批量导入图片相关的案例,分享给大家。excel批量导入图片案例一:  如下图所示:A列是姓名,D列需要批量导入A列姓名对应的照片,当单击“图片导入”按钮,即可批量导入图片。  下面的代码实现的功能是:批量导入图片,然后按照原比例缩放以填充单元格,如果单元格高宽改变,再次单击“图片导入”按钮即可。  说明:对应的图片命名需要和姓名一致,图片文件夹和excel源文件放在同一路径之下。  下面是具体的代码:Sub 批量导入图片()‘将图片导入。‘图片按照原比例存储,按照原比例存储On Error Resume NextDim R&Dim Pic As Object‘先删除所有可能存在的图片For Each Pic In Sheet1.ShapesIf Pic.Name <> Sheet1.Shapes("按钮 97").Name ThenPic.DeleteEnd IfNextFor R = 2 To Range("A65536").End(xlUp).Row‘插入图片Set Pic = Sheet1.Pictures.Insert(ThisWorkbook.Path & "\pic\" & Cells(R, 1) & ".jpg")‘锁定高宽比Pic.ShapeRange.LockAspectRatio = True‘看高宽比。如果图片高宽比高,那么调整到单元格高度,否则调整到单元格宽度‘我们看到的右键格式菜单里的东西都是针对ShapeRange而言的,所以要用ShapeRange来设定With Pic.ShapeRange‘如果图片高宽比比单元格大,说明图片太高,只需调整图片高度If .Height / .Width > Cells(R, 4).Height / Cells(R, 4).Width Then.Height = Cells(R, 4).Height‘调整位置.Top = Cells(R, 4).Top.Left = Cells(R, 4).Left + (Cells(R, 4).Width – .Width) / 2‘如果图片高宽比比单元格小,说明图片太宽,只需调整图片宽度Else.Width = Cells(R, 4).Width‘调整位置.Left = Cells(R, 4).Left.Top = Cells(R, 4).Top + (Cells(R, 4).Height – .Height) / 2End IfEnd WithNext REnd Sub  我们在excel对图片进行排版时,可以选中图片,勾选对齐网格,以及在插入图片或控件时,按住Alt键并拖动对象的边框,可以快速调整尺寸适应单元格大小。

241 次浏览
Excel VBA中让你意想不到的陷阱
Excel VBA中让你意想不到的陷阱

VBA代码由于简单实用,大家都很喜欢,但有些代码怎么看都没有问题,调试时却总是出错?究竟是为什么呢,其实代码本身没有错,在正常情况下都没有问题,错在运行环境本身出了问题,下面举例予以说明:1、微软在定义属性时,进行了长度限制比如:区域的Address属性,虽然是字符串,却是定长字符串,不能超过256个字符。如果用它来获取单元格地址,只能获取前256个字符。(一般情况下不会出问题,但如果单元格区域是很零散的单元格区域,就可能出错)2、VBA中属性解释与实际不符比如:Cells.SpecialCells(xlCellTypeLastCell),微软帮助中:用于获取“已用区域中的最后一个单元格”,但实际上是获取“已用区域中的最后一个可见单元格”,如果已用区域最后一个单元格正好被隐藏,就与该属性的定义产生偏差,导致代码达不到预期效果。3、兼容32位环境的限制在VB环境中,长整型变量是long,最大支持 2,147,483,647,约21亿,似乎很大了,在excel2000/2003没有问题,但在excel2007及以上版本中就可能出问题,如果你执行这一句:MsgBox Cells.Count,肯定会出错,因为现在支持1048576行*16384列,已经21亿,超过了长整型的限制。而且Rows.count*Columns.count也会出错,其原因也是一样,虽然单个都没有超上限,但结果超长整型上限也不行。4、VBA代码在VSTO中,由于环境变化,也会出现异常比如:ActiveSheet.HPageBreaks.add,在VBA、COM中都正常,在VSTO中会导致下一行内容丢失。因此,在编写代码时预先考虑到以上等情况,可以减少你调试的难度,避免走弯路。

118 次浏览
Excel删除数字保留文本的两种方法
Excel删除数字保留文本的两种方法

本文介绍excel删除数字保留文本的两种方法,通过使用VBA代码和word替换法来删除数字。excel删除数字方法一:  Excel工作表中删除数字只保留文本,是一个比较常见的例子。  如下图所示,A列的源数据有一些数字,而且这些数字在单元格中的位置是无序不固定的。如何删除数字,达到的效果如C列所示。   在excel中数字与文字共存的情况下,如果有规律,可以使用公式来分离字母、汉字、数字;如果没有规律,比较理想的还是是用VBA来解决。  下面是具体的excel删除数字操作步骤:  按ALT+F11,打开VBE编辑器,单击插入——模块,复制下面的代码,然后按F5键运行,excel会自动将A列所有的内容删除数字之后的结果提取放在C列。Sub excel删除数字()Dim reg As Object ‘定义reg为一个对象Dim arr ‘定义一个动态数组Dim i As Long, j As Long ‘分别定义i,j为长整型i = Range("A65536").End(xlUp).Row ‘把A列非空的最后行数赋予给iColumns("C").ClearContents ‘清空C列arr = Range("A1:A" & i) ‘把A列的数据赋予给数组arrSet reg = CreateObject("VBscript.RegExp") ‘调用正则表达式With reg ‘定义表达式.Global = True ‘匹配所有搜索项.ignorecase = True ‘不区分大小写.Pattern = "[0-9]" ‘数字的表达式End WithFor j = 1 To i ‘循环该区域Range("C" & j) = reg.Replace(arr(j, 1), "") ‘进行根据模板替换字符串为空值NextEnd Subexcel删除数字方法二:WORD替换法

370 次浏览
excel表格矩阵函数怎么用
excel表格矩阵函数怎么用

矩阵函数:定义域和值域都属于方阵的函数称为矩阵函数,它有多种定义方法。当用方阵幂级数的和函数来定义矩阵函数时,方阵函数f(a)=,其中自变量a和函数值f(a)都是n阶方阵,Ck是常系数。下面给大家分享excel表格矩阵函数的使用方法。  excel表格矩阵函数的使用方法  基本使用:  其中,选择G4:H5,输入公式:  =MMULT(A4:B5,D4:E5)  按Ctrl+Shift+Enter键,即输入数组公式。  选择A9:B10,输入公式:  =MINVERSE(A4:B5)  按Ctrl+Shift+Enter键,即输入数组公式。  选择单元格D9,输入公式:

195 次浏览
如何停止Excel屏幕刷新
如何停止Excel屏幕刷新

在Excel VBA中,如果需要停止Excel屏幕刷新以方便用户的操作体验,可通过VBA停止Excel屏幕刷新。Excel2007可通过VBA宏停止Excel屏幕刷新。停止Excel屏幕刷新的方法:首先按“Alt+F11”组合键,Excel2007打开代码编辑器,单击“插入”菜单-“模块”,双击插入的模块,在右侧的代码窗口中输入:Sub Excel_Partner()Application.ScreenUpdating = FalseMsgBox "Excel屏幕刷新已停止,下面将开启Excel屏幕刷新!"Application.ScreenUpdating = TrueEnd Sub按F5运行键运行程序,即可停止Excel屏幕刷新。

199 次浏览
Excel VBA单元格的引用方法
Excel VBA单元格的引用方法

在VBA中经常需要引用单元格或单元格区域区域,主要有以下几种方法。  使用Range属性  VBA中可以使用Range属性返回单元格或单元格区域,如下面的代码所示。  00.00.#001 Sub RngSelect()  00.#002 Sheet1.Range("A3:F6, B1:C5").Select  00.#003 End Sub  普通浏览复制代码保存代码打印代码  01.#001 Sub RngSelect()  02.#002 Sheet1.Range("A3:F6, B1:C5").Select  03.#003 End Sub#001 Sub RngSelect() <br />  #002 Sheet1.Range("A3:F6, B1:C5").Select<br />  #003 End Sub  代码解析:  RangeSelect过程使用Select方法选中A3:F6,B1:C5单元格区域。  Range属性返回一个Range对象,该对象代表一个单元格或单元格区域,语法如下:  Range(Cell1, Cell2)  参数Cell1是必需的,必须为 A1 样式引用的宏语言,可包括区域操作符(冒号)、相交区域操作符(空格)或合并区域操作符(逗号)。也可包括美元符号(即绝对地址,如“$A$1”)。可在区域中任一部分使用局部定义名称,如Range("B2:LastCell"),其中LastCell为已定义的单元格区域名称。  参数Cell2是可选的,区域左上角和右下角的单元格。  运行RangeSelect过程,选中A3:F6, B1:C5单元格区域

115 次浏览
Excel for VBA:对象枚举循环For each
Excel for VBA:对象枚举循环For each

分享下所学的VBA。下面代码很适合财务童鞋做报表。首先假定你的工作簿打开就是3个工作表的打开Excel,按alt+F11,进入编辑器,然后插入模块。框里输入Sub addchange() ‘添加9个然后统一改名为1-12月Worksheets.Add Count:=9 ‘添加12-3个工作表,对象.方法(setting) For Each tsheet In ActiveWorkbook.Worksheets’tsheet代表this sheet i = i + 1’i从0开始 tsheet.Name = i & "月"’改名工作表的名称。 NextEnd Sub最后效果点绿色按钮运行的。是不是很神奇,一点按钮就实现了3个表变成12个,还改名1-12月。肯定很多财务童鞋说大爱呀,哈哈。

131 次浏览
如何隐藏Excel常用工具栏
如何隐藏Excel常用工具栏

在Excel VBA中,如果需要隐藏Excel常用工具栏以方便用户的操作体验,可通过VBA设置Excel常用工具栏的显示状态隐藏Excel常用工具栏。Excel2003可通过VBA宏隐藏Excel常用工具栏。隐藏Excel常用工具栏的方法:首先按“Alt+F11”组合键,Excel2003打开代码编辑器,单击“插入”菜单-“模块”,双击插入的模块,在右侧的代码窗口中输入:Sub Excel_Partner()Application.CommandBars("Standard").Visible = FalseIf MsgBox("常用工具栏被隐藏!" & vbCrLf & "是否重新显示常用工具栏?", _vbQuestion + vbYesNo) = vbNo Then Exit SubApplication.CommandBars("Standard").Visible = TrueEnd Sub按F5运行键运行程序,即可隐藏Excel常用工具栏。Excel常用工具栏可通过单击“视图”菜单-“工具栏”子菜单-“常用”菜单项隐藏Excel常用工具栏,再次单击,显示Excel常用工具栏。

122 次浏览
如何在Excel表格中编辑“宏”
如何在Excel表格中编辑“宏”

操作步骤如果大家对VBA程序语言比较熟悉,可以直接在Excel中编辑宏会更方便,宏代码也更简单。 执行“工具→宏→Visual Basic编辑器”命令,进入“Visual Basic编辑器”窗口。 在左侧“工程资源管理器”窗口中,选中保存宏的工作簿,然后执行“插入→模块”命令,插入一个新模块(模块1)。 将相关宏代码输入或复制、粘贴到右侧的编辑窗口中。注意:宏的结构是:Sub 宏名称()相关代码End Sub 输入完成后,关闭“Visual Basic编辑器”窗口返回即可。本例我们直接编辑的宏,可以删除当前行前4列的单元格,而系统并不给出相关的提示。我们运行一下看看效果。

144 次浏览
共计5766条记录 上一页 1.. 72 73 74 75 76 77 78 ..577 下一页