博文

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单元格中输入“=结果”,就可以看到计算结果了。......

阅读全文(4399) | 评论:2

用Excel的VBA中显示非模态的窗体(2006-07-05 13:55:00)

摘要:UserForm1.Show vbModeLess 或者 UserForm1.Show 0......

阅读全文(4653) | 评论:0

在字符串中插入制表符和换行符(2006-07-05 13:48:00)

摘要:制表符vbTab 换行符vbCrLf str1=str1 & vbTab str1=str1 & vbCrLf MsgBox str1......

阅读全文(6924) | 评论:1

在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)    '停止播放......

阅读全文(4342) | 评论:1

一些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)End Functi......

阅读全文(5428) | 评论:1

使用VBA制作数组的排序(2006-07-04 13:24:00)

摘要:在模块中添加: Sub BobbleSort(list() As String) Dim First As Integer, Last As IntegerDim temp As StringFirst = 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 jNext iEnd Sub Public Sub sort1()Dim list1(10) As StringFor i = 0 To 10  list1(i) = Cells(i + 1, 1)Next iBobbleSort list1For i = 1 To 10  Cells(i + 1, 2) = list1(i)Next iEnd Sub......

阅读全文(7257) | 评论:0

制作和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 Category”显示在“插入函数”对话框的“或选择类......

阅读全文(8532) | 评论:1

用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) = rs("座机")  rs.movenext  Loop  rs.CloseEnd Sub 在EXCEL页面上加一个文本框(TextB......

阅读全文(6794) | 评论:2

用VBA在EXCEL上制作一个汉字表(2006-06-01 13:53:00)

摘要:在EXCEL中,按Alt+F11,弹出VB编辑器,插入一个模块,在空白窗口中输入: Public Sub Allword()Range("A1:CQ74").ClearContentsColumns("A:CQ").ColumnWidth = 2.25Rows(1).Font.Size = 8Columns(1).Font.Size = 8For i = 161 To 254  Cells(1, i - 159) = iNext 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)  NextNext End Sub 执行这个宏过程,就可以在页面上看到一个汉字表。......

阅读全文(4402) | 评论:0

通过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).DeleteNextEnd Sub Private Sub Workbook_Open()For jj = 1 To LineNum  AddBars jjNextEnd Sub Public Sub AddBars(BarIndex)Dim tbar As CommandBarBarName = "菜单" & BarIndexSet tbar = Application.CommandBars.Add(Name:=BarName, Position:=msoBarBottom)tbar.Visible = TrueFor k = 1 To ListNum  On Error Resume Next  AddButton BarIndex, k, BarNameNextEnd Sub Public Sub AddButton(BarIndex, BtnIndex, BarName)Dim Btn As CommandBarButtonii = BarIndex * ListNum + BtnIndexButtonName = "按钮" & iiSet Btn = Application.CommandBars(BarName).Controls.AddWith Btn  .TooltipText = "ID:" & ii  .FaceId = iiEnd WithEnd ......

阅读全文(5388) | 评论:0