博文

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

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

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

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

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

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

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

阅读全文(6878) | 评论: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)    '停止播放......

阅读全文(4295) | 评论: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)

阅读全文(5362) | 评论: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
......

阅读全文(7218) | 评论: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......

阅读全文(8456) | 评论: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) ......

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

用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 执行这个宏过程,就可以在页面上看到一个汉字表。......

阅读全文(4345) | 评论: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).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......

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