VBA程序开发
amulee
这个作者很懒,什么都没留下…
展开
-
利用正则表达式提取汉字
利用正则表达式,可以编写自定义函数来提取汉字。 在Excel界面按Alt+F11,然后插入一个模块,添加如下代码。 Function Hanzi(rng As Range) As String 正则表达式 With CreateObject("VBSCRIPT.REGEXP") .Global = True .Pattern = "[原创 2010-03-08 12:08:00 · 2111 阅读 · 0 评论 -
用Mid语句来实现字符串替换
Mid不仅可以作为函数提取字符串,还可以作为语句来替换字符串。本文就以Mid语句为例来说明Mid的作用。相对来说,用Mid来替换字符串,速度非常快。原创 2010-08-02 09:19:00 · 1300 阅读 · 0 评论 -
批量删除满足条件的行和行中的图片
批量删除满足条件的行和行中的图片,而不会影响其他按钮和控件。这一技巧在许多情形下都非常有用。原创 2010-08-02 09:53:00 · 772 阅读 · 0 评论 -
根据工资实发数倒算应发数的自定义函数
有些福利比较好的公司会为员工承担部分工资或者奖金的个人所得税,即保证员工到手拿到多少工资,然后公司来交税。也就是通过员工的实发数来倒算应发数。本文就介绍这样一个自定义函数,来减轻人事工作的负担。原创 2010-08-02 10:00:00 · 4549 阅读 · 0 评论 -
如何在Excel 2007以上版本使用spreadsheet控件?
2007、2010版本中我们已经找不到SpreadSheet控件了。因为这个控件是为2003之前的版本设计的。但是我们依然可以使用这个控件,本文就介绍如何再次引用该控件。原创 2010-09-01 11:19:00 · 4058 阅读 · 0 评论 -
如何用VBA读取UTF编码的文本文件?
本文用ADODB.Stream对象来解决FSO读取文本文件的乱码问题。原创 2010-11-17 14:28:00 · 3006 阅读 · 0 评论 -
在VBA中如何将SQL得到的数据直接赋值到数组?
有些时候,我们要将SQL查询得到的结果直接赋值到某数组中,或者要取得查询结果中某一列的值。原创 2010-11-24 15:31:00 · 6733 阅读 · 1 评论 -
利用类模块对工作表中的ActiveX控件批量设定的注意事项
<br />利用类模块可以减少许多重复的代码。<br />以给控件设定批量的Click事件为例,在工作簿中定义了以下名为clsChe的类模块:<br />Public WithEvents Chkbox As MSForms.CheckBoxPrivate Sub Chkbox_Change() MsgBox Chkbox.ValueEnd Sub<br /><br />利用该类模块,可以轻松实现对复选框进行批量设置Change事件。<br /><br />原创 2011-05-19 13:44:00 · 1298 阅读 · 0 评论 -
如何解决Inputbox不能跨工作簿选择的问题?
在Excel VBA中,可以利用Application.Inputbox来选择区域,但是该方法不能够跨工作簿选择。同样,若采用RefEdit控件也存在不能跨工作簿选择的问题。本文介绍一种替代的方法来跨工作簿选择区域。原创 2011-04-26 15:20:00 · 2016 阅读 · 0 评论 -
如何将跨页的合并单元格拆分使两页中都能显示?
<br />Q:如何将跨页的合并单元格拆分使两页中都能显示?<br />A:数据透视表是一个方便的汇总工具。当采用数据透视表进行汇总后,有些行标题可能出现跨页问题。此时如打印该表,则会在某页缺失行标题,如图所示: <br />何编写VBA使这些跨页的合并单元格自动拆分,使其分别显示在两个页面中,效果如图: <br /> 代码和附件请参见:[Excel VBA] 如何将跨页的合并单元格拆分使两页中都能显示? http://www.exceltip.net/thr原创 2011-04-29 10:30:00 · 25573 阅读 · 0 评论 -
如何用VBA备份和压缩ACCESS数据库?
在有些时候,我们会采用ExcelVBA+ACCESS数据库的方式来制作微型数据库系统。在多次操作数据库后,数据库文件会越变越大。在ACCESS里面有压缩数据库的命令,其实我们完全可以通过Excel VBA来压缩数据库。以下代码就是一个备份和压缩的函数,当操作成功时返回True,失败时返回False。原创 2010-08-02 09:11:00 · 2953 阅读 · 0 评论 -
设定程序运行的次数
可以参考以下代码设定程序运行次数,超过次数则无法运行。下面代码设定次数为3次。Sub 设定程序运行次数() Dim Times Times = GetSetting("RnTime", "Set", "Times") If Len(Times) > 0 Then Times = CInt(Times) If Times原创 2010-05-14 20:34:00 · 1219 阅读 · 0 评论 -
VBA中如何使用冒泡排序
其实,在VBA中可以使用其他编程语言中使用的排序方法,只是语法不同而已。 以下就是冒泡排序的一个简单例子。如果区域有变化,作相应改动即可。 Sub 冒泡排序() Dim i As Integer, Temp As Variant Dim arr() As Variant Dim OK As Boolean arr = Application.原创 2010-03-08 12:12:00 · 2570 阅读 · 0 评论 -
利用API对VBA窗体设置
很多时候有人问到,怎么样弄使得VBA中的关闭窗口的按钮消失啊。其实在VBA中,我们可以利用API的SetWindowLong函数来进行对VBA中窗体的设置。以下代码添加到窗体中,可以隐藏窗体的关闭按钮。 API声明Private Declare Function FindWindow Lib "user32" Alias _ "FindWindowA" (ByVal原创 2010-03-08 10:04:00 · 1810 阅读 · 0 评论 -
如何获取数组的维数
在Excel VBA编程中,我们知道可以利用UBound函数来获取数组各纬度的上标。但是当超过该数组的上标时就会发生错误,所以可以利用Excel的出错来获取数组的维数。代码如下:Function DofArray(arr) As Integer On Error Resume Next 判断是否数组 If Not IsArray(arr) Then原创 2010-03-30 10:41:00 · 1502 阅读 · 0 评论 -
如何编写分解因数的自定义函数?
Q:如何编写分解因数的自<span class="t_tag" onclick="function onclick(){tagshow(event)}">定义函数?A:首先,我们需要一个<span class="t_tag" onclick="function onclick(){tagshow(event)}">判断质数的函数。<span class="t_tag" on原创 2010-05-11 12:43:00 · 667 阅读 · 1 评论 -
利用VBA从网络获取时间来校准计算机时间
可以利用Microsoft.XMLHTTP来读取网页内容,请参考下列<span class="t_tag" onclick="function onclick(){tagshow(event)}">代码。Sub 利用网络时间校对当前计算机时间() Dim objXML As Object Dim strTemp As String Dim lStart原创 2010-05-11 14:07:00 · 3514 阅读 · 0 评论 -
Excel+VBA制作贪食蛇游戏
这个是我第一个Excel游戏,边学边做弄了好久,也没什么美化。其实算法比较简单,看看就会了。 点击下载原创 2010-05-11 12:50:00 · 1881 阅读 · 0 评论 -
根据输入的日期获取人民币汇率
主要是利用Excel自带的创建Web查询功能,再配合代码加以实现。代码如下:Sub 查询() Dim sDate As Date sDate = Application.InputBox("请输入日期", "输入", Date) Cells.Clear With ActiveSheet.QueryTables.Add(Connection:= _原创 2010-05-11 12:56:00 · 1524 阅读 · 0 评论 -
编写阶乘计算精确值的自定义函数
整体思路就是利用数组存放每一位数字,模拟乘法规则进行计算。Function MyFact(DNumber) Dim ArrJG, ArrTemp Dim SumA As Double Dim i&, j& Dim strJG$ 结果输出 计算阶乘长度 SumA = 1 For i = 1 To DNumber原创 2010-05-11 13:06:00 · 595 阅读 · 0 评论 -
身份证号码15位升18位的自定义函数
最近研究了一下身份证号码升级的规则,真的很有趣。和17较上劲了。Function 升级(Rng) On Error GoTo AA Dim StrT$, i%, SumM& If Len(Rng) = 18 Then 升级 = Rng ElseIf Len(Rng) = 15 Then StrT = Replace(R原创 2010-05-11 13:22:00 · 1444 阅读 · 4 评论 -
设定程序运行的次数
Excel提供了一些注册表操作的语句,通过这些语句我们可以在注册表内存储一些信息。比如下例,通过写入、读取注册表来限制程序运行次数。Sub 设定程序运行次数() Dim Times Times = GetSetting("RnTime", "Set", "Times") If Len(Times) > 0 Then Times = CInt(原创 2010-05-11 14:21:00 · 779 阅读 · 1 评论 -
如何正确使用TreeView的HitTest方法?
<br />Q:如何正确使用TreeView的HitTest方法?<br />A:在TreeView控件中有一个非常有用的方法HitTest,其功能是返回指定坐标的节点对象。其语法如下:<br />object.HitTest(x As Single, y As Single)<br />其中x和y代表坐标点,但必须要注意的是这里的x和y表示的是单位缇。任何数值必须转换为相应的缇才能正确得到HitTest的返回结果。<br />参考以下示例。本例中利用MouseMove事件和原创 2011-04-29 10:36:00 · 2193 阅读 · 0 评论