博文
EXCEL中“名称”的使用一例(2006-07-10 21:58:00)
摘要:在EXCEL中,某些程序处理除了可以放在单元格中和VBA编辑器中,“名称”里面也可以放些编程的语句,下面就是一个小例子。
在单元格D8中输入“(2141.109-1333.7)+0.155*3+0.64”,选中D9单元格,点击菜单“插入”——“名称”——“定义”,在弹出窗体中上栏输入“结果”,下栏输入以下语句:
=IF(sheet1!D8<>0,EVALUATE(sheet1!D8),0)
然后在D9单元格中输入“=结果”,就可以看到计算结果了。......
用Excel的VBA中显示非模态的窗体(2006-07-05 13:55:00)
摘要:UserForm1.Show vbModeLess
或者
UserForm1.Show 0......
在字符串中插入制表符和换行符(2006-07-05 13:48:00)
摘要:制表符vbTab
换行符vbCrLf
str1=str1 & vbTab
str1=str1 & vbCrLf
MsgBox str1......
在VBA中使用API(2006-07-05 13:44:00)
摘要:确定当前视频模式
Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
Pubilic Const SM_CXSCREEN=0
Pubilic Const SM_CYSCREEN=1
sub abc()
vidwidth=GetSystemMetrics(SM_CXSCREEN)
vidHeight=GetSystemMetrics(SM_CYSCREEN)
end sub
给程序添加声音(WAV)
Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (ByVal lpszName As String, ByVal hModule As Long, ByVal dwFlags As Long) As Long
Consr SND_SYNC=&h0 '同执行播放命令
Consr SND_ASYNC=&h1 '异步执行播放命令
Consr SND_FILENAME=&h20000
Sub PlayWav()
WavFile="abc.wav"
Call PlaySound(WavFile,0&,SND_ASYNC Or SND_FILENAME)
end Sub
播放MIDI
private Declare Function mciExecute Lib "winmm.dll" (Byval lpstrCommand As string) As Long
mciExcute("Play" & MIDIFILE) '播放
mciExcute("Stop" & MIDIFILE) '停止播放......
一些VBA的小命令(2006-07-04 13:58:00)
摘要:关闭屏幕的更新动作:
application.ScreenUpdate=False
解决大小写比较的问题(A=a),将下面语句添加到顶部:
Option Compare Text
防止出现错误消息框,在顶部添加:
application.EnableCanelKey=xlDisabled
强制函数不断重新计算
application.Volatitle True
自定义函数中接受可选参数
function ABC( Optional Ref1 As Variant)
判断是否传入了可选参数
if ismissing(Ref1) then
返回VBA数组的函数:
function ABC()
ABC=ARRAY(1,2,3,4...)
将水平方向的数组转置为垂直方向
application.transpose(Abc)
设置ARRAY的下界(默认值为0)
option Base
接受不定数量的参数的函数,使用数组作为最后一个参数,且...
function abc(patramArray list)
找到大小可以变化单元格子的边界
Range("A1").CurrentRegion.Copy Sheet(2).Range("A1")
Range(ActiveCell, ActiveCell.End(xlDown)).Select 'xlUp,xlToLeft,xlToRight
从某个过程执行函数(函数以及参数可以是字符串数字或者变量)
tt=application.run("finc_1","abc")
计算选中单元的数目
Selection.Count
Selection.Columns.Count
Selection.Rows.Count
一些有用的函数
FileExists
FileNameOnly ' 从带路径的文件名中抽出文件名
PathExists
RangeNameExists
SheetExists
WorkbooklsOpen
通过单元格内容选择内容:
Public Function SelectCell(nindex As Integer)
SelectCell = Cells(nindex, 1)
使用VBA制作数组的排序(2006-07-04 13:24:00)
摘要:在模块中添加:
Sub BobbleSort(list() As String)
Dim First As Integer, Last As Integer
Dim temp As String
First = LBound(list) '取数组上界
Last = UBound(list) '取数组下界
For i = First To Last - 1
For j = i + 1 To Last
If list(i) > list(j) Then
temp = list(j)
list(j) = list(i)
list(i) = temp
End If
Next j
Next i
End Sub
Public Sub sort1()
Dim list1(10) As String
For i = 0 To 10
list1(i) = Cells(i + 1, 1)
Next i
BobbleSort list1
For i = 1 To 10
Cells(i + 1, 2) = list1(i)
Next i
End Sub
......
制作和EXCEL内部函数一样的VBA函数[ZT](2006-06-09 10:05:00)
摘要:我们知道,Excel中函数都有一个说明,帮助使用,我们也要给这个函数添加一个说明。在工具栏中选择“对象浏览器”,选择我们所做Tax模块,在其[右键]→[属性]中添加关于对这个函数的描述,这个描述将出现在Excel中关于函数的说明中,如果你要对软件保密的话,在“模块”上按右键,[VBAproject属性]→[保护中设置密码],嘿嘿!别人就看不到你的源程序了。
这时,退出,回到Excel界面,将这个文件另存为:类型为“Microsoft Excel 加载宏”,在Excel 2000中,它会自动更改保存位置为c:\windows\application data\microsoft\addins(系统装在c:\windows),当然,你也可以把这个文件tax.xla,直接复制到office\library(office的安装路径下),而在Excel 97中只能放在后一个位置。使用函数很简单,点击[工具]→[加载宏],在你创建的Tax前打个勾,在单元格直接输入“=tax()”,是不是像Microsoft office提供的函数一样,很有点专业味道。
假如你把调用这个宏的Excel文件拷贝到别的机子上运行,会出现“当前所要打开的文档含有其他文档的链接,是否要使用其他工作簿中的改动更新当前工作簿”的提示,可以显示原先计算的数据,这是因为在Excel中的[工具]→[选项]→[重新计算]中,一般选中“保存外部链接数据”,但你不能重新计算,因为不能链接这个宏,别人机子上根本就没有这个函数。
只不过在“加载宏”时,我自己创建的函数,是一个英文标题,而且下面也没有说明,你是不是觉得有点不够专业。跟我来,再教你一招,如果你使用的是Excel 2000时,找到tax.xla,点击[右键]→[属性]→[摘要],在描述里添加所需内容来对函数进行相关描述,其中“标题”部分将出现在“加载宏”的方框中,“备注”部分将出现在下面的函数说明部分。这时再看看,够不够专业。在Excel 97中也可以在其右键属性中作相应更改。
把你自己的自定义函数加到特定函数分类中
示例
本示例将用户定义的宏“TestMacro”添加到名为“My Custom Category”的自定义类别中。运行本示例后,可以看到包含“TestMacro”用户定义函数的“My Custom......
用VBA在EXCEL中搜索显示ACCESS数据库内容(2006-06-05 16:25:00)
摘要:首先建立一个ACCESS数据库,名字为TEST.MDB,里面建立一个“telephone”的表,字段有 "姓名"公司""座机"等,并加入几条记录,保存在D盘。
在EXCEL的VB编辑器中,插入一个模块,输入搜索数据库函数:
Public Sub Serchmdb(ByVal so, si As String)
Dim cmd As String
Dim oAss As Object
connstr = "DBQ=D:\test.mdb;DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
Set oAss = CreateObject("ADODB.connection")
oAss.Open connstr
cmd = "SELECT * FROM telephone WHERE " + si + " like '%" + so + "%'"
On Error GoTo 0
Set rs = oAss.Execute(cmd)
btop = 4
bleft = 2
Range("A2:Z1000").ClearContents
Cells(btop, bleft + 1) = "序号"
Cells(btop, bleft + 2) = "姓名"
Cells(btop, bleft + 3) = "公司"
Cells(btop, bleft + 4) = "座机"
Do While Not rs.EOF
btop = btop + 1
Cells(btop, bleft + 1) = rs("id")
Cells(btop, bleft + 2) = rs("姓名")
Cells(btop, bleft + 3) = rs("公司")
Cells(btop, bleft + 4) ......
用VBA在EXCEL上制作一个汉字表(2006-06-01 13:53:00)
摘要:在EXCEL中,按Alt+F11,弹出VB编辑器,插入一个模块,在空白窗口中输入:
Public Sub Allword()
Range("A1:CQ74").ClearContents
Columns("A:CQ").ColumnWidth = 2.25
Rows(1).Font.Size = 8
Columns(1).Font.Size = 8
For i = 161 To 254
Cells(1, i - 159) = i
Next
For m = 176 To 247
Cells(m - 174, 1) = m
For n = 161 To 254
mn = "&H" & Hex(m) & Hex(n)
a = m - 174
b = n - 159
Cells(a, b).Value = Chr(mn)
Next
Next
End Sub
执行这个宏过程,就可以在页面上看到一个汉字表。......
通过VBA制造EXCEL的菜单(2)(2006-05-29 13:09:00)
摘要:
之前《通过VBA制造EXCEL的菜单》的程序代码做了一大堆无用功,今天发现原来可以以这样更简单更好的代码来实现:
1。新建EXCEL文件,按“Alt”+“F11”进入VB编辑器,点“ThisWorkBook”打开空白窗口,在其中输入以下代码:
Const LineNum As Integer = 23 '按钮行数
Const ListNum As Integer = 44 '按钮列数
Private Sub Workbook_BeforeClose(Cancel As Boolean)
For jj = 1 To LineNum
DelName = "菜单" & jj
On Error Resume Next
Application.CommandBars(DelName).Delete
Next
End Sub
Private Sub Workbook_Open()
For jj = 1 To LineNum
AddBars jj
Next
End Sub
Public Sub AddBars(BarIndex)
Dim tbar As CommandBar
BarName = "菜单" & BarIndex
Set tbar = Application.CommandBars.Add(Name:=BarName, Position:=msoBarBottom)
tbar.Visible = True
For k = 1 To ListNum
On Error Resume Next
AddButton BarIndex, k, BarName
Next
End Sub
Public Sub AddButton(BarIndex, BtnIndex, BarName)
Dim Btn As CommandBarButton
ii = BarIndex * ListNum + BtnIndex
ButtonName = "按钮" & ii
Set Btn = Application.CommandB......