在-Windows-7-环境下封装-Excel-VBA-代码

合集下载

Windows7系统封装教程(详细图解)(3)

Windows7系统封装教程(详细图解)(3)

Windows7系统封装教程(详细图解)(3)五、让封装系统更加完美按照前面的步骤制作完成封装系统以后,尽管已经可以安装其他计算机上并且系统各项功能和预装的各种应用程序都可以正常使用,但是还有几个不够完美的地方:——可能会出现第一次登录系统时出现黑屏,需要重新设定桌面背景。

——运行预装的应用程序以后,在用户文件夹里发现原来已经删除的用户帐户的文件夹又重新生成了。

——运行注册表编辑器,查找“Users<已经删除的用户名>”(如“UsersMaker”),竟然还找了很多“Users<已经删除的用户名>”的注册表项目。

1、第一种解决办法:将所有“Users<已经删除的用户名>”注册表项目修改成“UsersDefault”,在系统第一次登录之前导入到系统。

① 查找注册表文件。

使用自己制作的封装系统进行安装,登录系统以后,运行C:Widows目录下的regedit.exe打开注册表编辑器,点击“编辑”,再点击“查找”,在“查找”对话框里输入“Users<已经删除的用户名>”(如UsersMaker),点击“查找下一个”开始查找。

② 导出注册表文件。

发现包含“Users<已经删除的用户名>”字段的注册表项目的时候,点击“文件”,再点击“导出”将该注册表项目导出到硬盘(保存为reg文件)。

然后按F3键继续查找,发现包含“Users<已经删除的用户名>”字段的注册表项的时候继续导出,一直查找到HKEY_LOCAL_MACHINE的结尾处(HKEY_USERS后面发现的注册表项不用理会)。

完成查找和导出完成后,关闭注册表编辑器,转到导出注册表所在目录,可以看到导出的所有的注册表项(预装的应用软件不同,导出注册表文件多少也不同)。

③ 合并注册表文件。

在“开始菜单”—“附件”里找到并运行“记事本”,在第一行输入“Windows Registry Editor Version 5.00”后,右键其中1个注册表文件,在弹出菜单中点击“编辑”打开该注册表文件,将该注册表文件中的键名(即带中括号的字段)和带有“Users<已经删除的用户名>”字段的项目(其他的不用理会)复制到记事本内。

VB封装Excel宏代码的三个方法

VB封装Excel宏代码的三个方法

VB封装Excel_VBA成DLL技巧使用VB6.0在WinXP_sp2、Excel 2000环境下制作、测试通过。

一、启动VB6.0:执行:“文件夹(F)”——“新建(N)”——选择“ActiveX DLL”,如下图1:二、引用:VB中对Excel的引用执行:“工程(P)”——“引用(N)”——选择所要引用的项目:如下图2Excel 2000中:Microsoft Excel 9.0 Object LibraryMicrosoft Office 9.0 Object LibraryExcel 2003中:Microsoft Excel 11.0 Object LibraryMicrosoft Office 11.0 Object Library三、编写代码:1、将工程默认名称“工程1”,改为“zygtest”,将类模块默认名称“Class1”,改为“zyg365”,2、在类模块的代码编辑区写入代码:如下图3模块名称为“hongtong”,代码如下在VB中编写代码时:要注意以下声名Dim XLAPP As ObjectSet XLAPP = GetObject(, "Excel.Application")代码中引用对象,如SHEET,Cell等,前面要加“XLAPP.”(或按照Sub hongtong() 中的格式编写。

)Sub hongtong()Dim excelApp As New Excel.ApplicationDim excelWorkBook As Excel.WorkbookDim excelWorksheet As Excel.WorksheetSet excelWorkBook = '创建新工作簿Set excelWorksheet = excelWorkBook.Sheets(1)excelWorksheet.Cells(2, 3) = "宏通" '写入数据excelWorksheet.Cells(3, 4) = "zyg365" '写入数据excelApp.Visible = True '显示excel界面,用于调试excelWorkBook.PrintPreview '打印预览excelWorkBook.PrintOut '打印输出excelWorkBook.Saved = True'excelWorkBook.Close '关闭工作薄'excelApp.Quit '退出excelEnd Sub四、工程属性设置:(可以不设置,本步骤可以省略)为了使自己开发的程序更规范,可以对本工程的属性加以描述:如下图4执行:“工程(P)”——“工程1属性(E)…”(当前工程中为:“zygtest属性(E)…”)五、保存工程、测试、打包生成Dll文件:1、保存:单击保存,保存到一个文件夹中;2、测试:执行工具栏上的“启动”(右向的三角图标)按钮,检查是否存在错误;3、打包生成Dll文件:执行:“文件(F)”——“生成工程1.dll(K)”(当前工程中为:“zygtest.dll”),重命名为“zyg.dll”,至此,Dll文件制作结束。

Excel-VBA-编程教程[完整版]、excel高级教程

Excel-VBA-编程教程[完整版]、excel高级教程

目录一、VBA语言基础...................................................................................... .. (1)第一节标识符...................................................................................... . (1)第二节运算符...................................................................................... . (1)第三节数据类型...................................................................................... (1)第四节变量与常量...................................................................................... .. (1)第五节数组...................................................................................... .. (2)第六节注释和赋值语句...................................................................................... (2)第七节书写规范...................................................................................... (2)第八节判断语句...................................................................................... (2)第九节循环语句...................................................................................... (3)第十节其他类语句和错误语句处理...................................................................................... . (4)第十一节过程和函数...................................................................................... . (4)一.Sub过程 (4)二.Function函数 (5)三.Property属性过程和Event事件过程 (5)第十二节内部函数...................................................................................... (5)一.测试函数 (5)二.数学函数 (5)三.字符串函数 (5)四.转换函数 (6)五.时间函数 (6)第十三节文件操作...................................................................................... .. (6)文件 (6)删除 (6)打开 (6)读入 (7)写入 (7)关闭 (7)其他文件函数 (7)二、VISUALBASIC程序设计网络教学 (1)第一课VBA是什么...................................................................................... (1)1.1VBA是什么...................................................................................... . (1)1.2EXCEL环境中基于应用程序自动化的优点 (1)1.3录制简单的宏...................................................................................... . (1)1.4执行宏...................................................................................... . (2)1.5查看录制的代码...................................................................................... (2)1.6编辑录制的代码...................................................................................... (3)1.7录制宏的局限性...................................................................................... (3)1.8小结...................................................................................... .. (3)第二课处理录制的宏...................................................................................... . (3)2.1为宏指定快捷键...................................................................................... (3)2.2决定宏保存的位置...................................................................................... .. (4)2.3个人宏工作簿...................................................................................... . (4)2.3.1保存宏到个人宏工作簿 (4)2.3.2使用并编辑个人宏工作簿中的宏 (4)2.4将宏指定给按钮...................................................................................... (4)2.5将宏指定给图片或其他对象...................................................................................... . (5)2.6小结...................................................................................... .. (5)第三课学习控件...................................................................................... .. (5)-----------------------页面2-----------------------3.1EXCEL开发过程简介...................................................................................... (5)3.2认识不同的控件...................................................................................... (5)3.3向工作表添加控件...................................................................................... .. (6)3.4设置控件的特性...................................................................................... (6)3.5给控件命名...................................................................................... .. (6)3.6使用用户窗体...................................................................................... . (6)3.7疑难解答...................................................................................... (7)第四课理解变量和变量的作用...................................................................................... .. (7)4.1代码存在的位置:模块...................................................................................... (7)4.2对模块的概览...................................................................................... . (7)4.2.1创建过程 (8)4.2.2运行宏 (9)4.3保存对模块所做的改变...................................................................................... (9)4.4变量...................................................................................... .. (9)4.4.1变量的数据类型 (9)4.4.2用Dim语句创建变量(声明变量) (10)4.4.3变量命名的惯例 (10)4.4.4使用数组 (10)4.4.5变量赋值 (11)第五课利用VBA设置工作表使用权限 (11)1.使用WITH语句。

VBA代码封装过程

VBA代码封装过程

VBA代码封装过程一、函数和子过程的封装过程二、封装后函数和子过程的调用三、窗体的封装和调用四、com加载项的制作五、利用com加载项制作功能区如果你写VBA代码只是给自己使用或者不介意和别人共享代码,那么就用不到封装。

我们一般用VB6.0作为VBA代码的封装工具,VBA代码的封装在我理解就是将VBA代码修改成VB6.0能运行的代码,然后利用VB6.0可以制作dll文件的特点将所有代码封装在dll文件中,最后我们可以通过安装加载项或者引用的方式在工作表界面或VBA界面调用其中的函数、子过程和窗体。

下面让我们具体看下VBA代码的封装过程(封装调用环境:xp系统,excel2007,VB6.0):一、函数和子过程的封装过程函数和子过程也就是function过程和sub过程。

封装的过程如下:1、在vba编写代码,此次实验的代码如下,包含一个函数过程和一个子过程:Function ceshi(a, b)ceshi = a + bEnd FunctionSub ceshi1()MsgBox End Sub2、打开VB6.0,新建工程,选择ActiveX dll,然后点打开。

3、点打开后在该工程中可以看到工程自带一个类模块,可以修改工程名字和类模块名字,也可以选择默认的工程名和类模块名,修改工程名和类模块名的过程如下,在VB6.0界面右边工程资源管理器窗口(如果没看见该窗口,可点击菜单栏中“视图”菜单的工程资源管理器命令调用)选择工程名(类模块名),然后在下面属性窗口“名称”一行修改成自己想要的名称,这里我们将工程名修改成fengzhuang,类模块名修改成cls14、右键点击类模块,在弹出的快捷菜单中选择查看代码,然后将VBA代码复制到类模块代码窗口中,部分代码要稍作修改,改成VB6.0能识别的代码。

如上面的子过程中出现了application对象,代表excel应用程序,但是在vb6.0直接这样写会出现错误,VB6.0并不能识别这就是一个excel应用程序对象,就像我们在VBA中直接写Dictionary(字典对象)和regexp(正则对象)一样,VBA并不能识别,要VBA能识别这两个对象,要么是创建新的对象(前期绑定和后期绑定),要么是获取已有的对象(前期绑定和后期绑定),因为我们在VBA中运行代码时,excel应用程序已经存在了,所以我们只需要获取已有对象即可。

ExcelVBA常用代码总结1(精选合集)

ExcelVBA常用代码总结1(精选合集)

ExcelVBA常用代码总结1(精选合集)第一篇:Excel VBA常用代码总结1Excel VBA常用代码总结1•改变背景色Range(“A1”).Interior.ColorIndex = xlNone ColorIndex一览••改变文字颜色获取单元格Range(“A1”).Font.ColorIndex = 1 Cells(1, 2)Range(“H7”)•获取范围Range(Cells(2, 3), Cells(4, 5))Range(“a1:c3”)'用快捷记号引用单元格Worksheets(“Sheet1”).[A1:B5] •选中某sheet SetNewSheet = Sheets(“sheet1”)NewSheet.Select •选中或激活某单元格'“Range”对象的的Select方法可以选择一个或多个单元格,而Activate方法可以指定某一个单元格为活动单元格。

'下面的代码首先选择A1:E10区域,同时激活D4单元格:Range(“a1:e10”).Select Range(“d4:e5”).Activate '而对于下面的代码:Range(“a1:e10”).Select Range(“f11:g15”).Activate '由于区域A1:E10和F11:G15没有公共区域,将最终选择F11:G15,并激活F11单元格。

•获得文档的路径和文件名ActiveWorkbook.Path'路徑 '名稱ActiveWorkbook.FullName '路徑+名稱'或将ActiveWorkbook换成thisworkbook••••隐藏文档禁止屏幕更新禁止显示提示和警告消息文件夹做成Application.Visible = False Application.ScreenUpdating = False Application.DisplayAlerts = False strPath = “C:temp” MkDirstrPath ••状态栏文字表示双击单元格内容变换Application.StatusBar = “计算中”PrivateSubWorksheet_BeforeDoubleClick(ByVal Target As Range, Cancel AsBoolean)If(Target.Cells.Row>= 5AndTarget.Cells.Row<= 8)Then IfTarget.Cells.Value = “●”Then Target.Cells.Value = “" ElseTarget.Cells.Value = ”●“ EndIfCancel = True EndIf End Sub•文件夹选择框方法1SetobjShell = CreateObject(”Shell.Application“)SetobjFolder = objShell.BrowseForFolder(0, ”文件“, 0, 0)IfNotobjFolderIsNothingThen path= objFolder.self.Path&”“ endif SetobjFolder = Nothing SetobjShell = Nothing•文件夹选择框方法2(推荐)PublicFunctionChooseFolder()AsString DimdlgOpenAsFileDialog SetdlgOpen = Application.FileDialog(msoFileDialogFolderPicker)WithdlgOpen. InitialFileName = ThisWorkbook.path&”“ If.Show =-1Then ChooseFolder =.SelectedItems(1)EndIf EndWithSetdlgOpen = Nothing End Function'使用方法例:Dim path AsString path = ChooseFolder()If path <>”“Then MsgBox”open folder“ EndIf•文件选择框方法PublicFunctionChooseOneFile(OptionalTitleStrAsString= ”Please choose a file“, OptionalTypesDecAsString = ”*.*“, Optional ExtenAsString = ”*.*“)AsStringDimdlgOpenAsFileDialog SetdlgOpen = Application.FileDialog(msoFileDialogFilePicker)WithdlgOpen.Title = TitleStr.Filters.Clear.Filters.AddTypesDec, Exten.AllowMultiSelect = False.InitialFileName = ThisWorkbook.Path If.Show =-1Then'.AllowMultiSelect = True ' For Each vrtSelectedItemIn.SelectedItems ' MsgBox ”Path name: “ &vrtSelectedItem ' Next vrtSelectedItemChooseOneFile =.SelectedItems(1)EndIf EndWithSetdlgOpen = Nothing End Function•某列到关键字为止循环方法1(假设关键字是end)SetCurrentCell = Range(”A1“)DoWhileCurrentCell.Value<>”end“ ……SetCurrentCell = CurrentCell.Offset(1, 0)Loop•某列到关键字为止循环方法2(假设关键字是空字符串)i = StartRow DoWhileCells(i, 1)<>”“ ……i = i + 1 Loop•”For Each...Next 循环(知道确切边界)ForEach c InWorksheets(“Sheet1”).Range(“A1:D10”).CellsIfAbs(c.Value)<0.01Thenc.Value = 0 Next•“For Each...Next 循环(不知道确切边界),在活动单元格周围的区域内循环ForEach c InActiveCell.CurrentRegion.Cells IfAbs(c.Value)<0.01Thenc.Value = 0 Next•某列有数据的最末行的行数的取得(中间不能有空行)lonRow=1 DoWhileTrim(Cells(lonRow, 2).Value)<>”“ lonRow= lonRow + 1 LooplonRow11 = lonRow1164)比如i=A的时候,Asc(it >= num * 1000 DoEvents Loop End Sub'************************************************************** *使用方法: delay 3'3表示秒数•杀掉某程序执行的所有进程SubKillWord()Dim ProcessForEach Process InGetObject(”winmgmts:“).ExecQuery(”select * from Win32_Process where name='WINWORD.EXE'“)Process.Terminate(0)NextEnd Sub•监视某单元格的变化这里最需要注意的问题就是,如果在这个事件里对单元格进行改变,会继续出发此事件变成死循环。

Excel-vba宏代码-大全

Excel-vba宏代码-大全

Excel-vba宏代码-大全宏文件集▲打开全部隐藏工作表返回Sub 打开全部隐藏工作表()Dim i As IntegerFor i = 1 To Sheets.CountSheets(i).Visible = TrueNext iEnd Sub▲循环宏返回Sub 循环()AAA = Range("C2")Dim i As LongDim times As Longtimes = AAA'times代表循环次数,执行前把times赋值即可(不可小于1,不可大于2147483647)For i = 1 To timesCall 过滤一行If Range("完成标志") = "完成" Then Exit For '如果名为'完成标志'的命名单元的值等于'完成',则退出循环,如果一开始就等于'完成',则只执行一次循环就退出'If Sheets("传送参数").Range("A" & i).Text = "完成" Then Exit For '如果某列出现"完成"内容则退出循环Next iEnd Sub▲录制宏时调用“停止录制”工具栏返回Sub 录制宏时调用停止录制工具栏()/doc/4911298482.html,mandBars("Stop Recording").Visible = TrueEnd Sub▲高级筛选5列不重复数据至指定表返回Sub 高级筛选5列不重复数据至Sheet2()Sheets("Sheet2").Range("A1:E65536") = "" '清除Sheet2的A:D 列Range("A1:E65536").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Sheet2.Range( _"A1"), Unique:=TrueSheet2.Columns("A:E").Sort Key1:=Sheet2.Range("A2"), Order1:=xlAscending,Header:=xlGuess, _OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _:=xlPinYinEnd Sub▲双击单元执行宏(工作表代码)返回Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)If Range("$A$1") = "关闭" Then Exit SubSelect Case Target.AddressCase "$A$4"Call 宏1Cancel = TrueCase "$B$4"Call 宏2Cancel = TrueCase "$C$4"Call 宏3Cancel = TrueCase "$E$4"Call 宏4Cancel = TrueEnd SelectEnd Sub▲双击指定区域单元执行宏(工作表代码)返回Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)If Range("$A$1") = "关闭" Then Exit SubIf Not Application.Intersect(Target, Range("A4:A9", "C4:C9")) Is Nothing Then Call 打开隐藏表End Sub▲进入单元执行宏(工作表代码)返回Private Sub Worksheet_SelectionChange(ByVal Target As Range)'以单元格进入代替按钮对象调用宏If Range("$A$1") = "关闭" Then Exit SubSelect Case Target.AddressCase "$A$5" '单元地址(Target.Address),或命名单元名字(/doc/4911298482.html,)Call 宏1Case "$B$5"Call 宏2Case "$C$5"Call 宏3End SelectEnd Sub▲进入指定区域单元执行宏(工作表代码)返回Private Sub Worksheet_SelectionChange(ByVal Target As Range)If Range("$A$1") = "关闭" Then Exit SubIf Not Application.Intersect(Target, Range("A4:A9","C4:C9")) Is Nothing Then Call打开隐藏表▲在多个宏中依次循环执行一个(控件按钮代码)返回Private Sub CommandButton1_Click()Static RunMacro As IntegerSelect Case RunMacroCase 0宏1RunMacro = 1Case 1宏2RunMacro = 2Case 2宏3RunMacro = 0End SelectEnd Sub▲在两个宏中依次循环执行一个并相应修改按钮名称(控件按钮代码)返回Private Sub CommandButton1_Click()With CommandButton1If .Caption = "保护工作表" ThenCall 保护工作表.Caption = "取消工作表保护"Exit SubEnd IfIf .Caption = "取消工作表保护" ThenCall 取消工作表保护.Caption = "保护工作表"Exit SubEnd IfEnd With▲在三个宏中依次循环执行一个并相应修改按钮名称(控件按钮代码)返回Option ExplicitPrivate Sub CommandButton1_Click()With CommandButton1If .Caption = "宏1" ThenCall 宏1.Caption = "宏2"Exit SubEnd IfIf .Caption = "宏2" ThenCall 宏2.Caption = "宏3"Exit SubEnd IfIf .Caption = "宏3" ThenCall 宏3.Caption = "宏1"Exit SubEnd IfEnd WithEnd Sub▲根据A1单元文本隐藏/显示按钮(控件按钮代码)返回Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Range("A1") > 2 ThenCommandButton1.Visible = 1ElseCommandButton1.Visible = 0End IfEnd SubPrivate Sub CommandButton1_Click()重排窗口End Sub▲当前单元返回按钮名称(控件按钮代码)返回Private Sub CommandButton1_Click()ActiveCell = CommandButton1.CaptionEnd Sub▲当前单元内容返回到按钮名称(控件按钮代码)返回Private Sub CommandButton1_Click()CommandButton1.Caption = ActiveCellEnd Sub▲奇偶页分别打印返回Sub 奇偶页分别打印()Dim i%, Ps%Ps = ExecuteExcel4Macro("GET.DOCUMENT(50)") '总页数MsgBox "现在打印奇数页,按确定开始."For i = 1 To Ps Step 2ActiveSheet.PrintOut from:=i, To:=iNext iMsgBox "现在打印偶数页,按确定开始."For i = 2 To Ps Step 2ActiveSheet.PrintOut from:=i, To:=iNext iEnd Sub▲自动打印多工作表第一页返回Sub 自动打印多工作表第一页() Dim sh As IntegerDim xDim yDim syDim syzx = InputBox("请输入起始工作表名字:")sy = InputBox("请输入结束工作表名字:")y = Sheets(x).Indexsyz = Sheets(sy).IndexFor sh = y To syzSheets(sh).SelectSheets(sh).PrintOut from:=1, To:=1Next shEnd Sub▲查找A列文本循环插入分页符返回Sub 循环插入分页符()' Selection = Workbooks("临时表").Sheets("表2").Range("A1") 调用指定地址内容Dim i As LongDim times As Longtimes = Application.WorksheetFunction.CountIf(Sheet1.Range("a:a"), "分页")'times代表循环次数,执行前把times赋值即可(不可小于1,不可大于2147483647)For i = 1 To timesCall 插入分页符Next iEnd SubSub 插入分页符()Cells.Find(What:="分页", After:=ActiveCell, LookIn:=xlValues, LookAt:= _xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) _.ActivateActiveWindow.SelectedSheets.HPageBreaks.AddBefore:=ActiveCellEnd SubSub 取消原分页()Cells.SelectActiveSheet.ResetAllPageBreaksEnd Sub▲将A列最后数据行以上的所有B列图片大小调整为所在单元大小返回Sub 将A列最后数据行以上的所有B列图片大小调整为所在单元大小()Dim Pic As Picture, i&i = [A65536].End(xlUp).RowFor Each Pic In Sheet1.PicturesIf Not Application.Intersect(Pic.TopLeftCell, Range("B1:B" & i)) Is Nothing ThenPic.Top = Pic.T opLeftCell.TopPic.Left = Pic.TopLeftCell.LeftPic.Height = Pic.TopLeftCell.HeightPic.Width = Pic.TopLeftCell.WidthEnd IfNextEnd Sub▲返回光标所在行数返回Sub 返回光标所在行数()x = ActiveCell.RowRange("A1") = xEnd Sub▲在A1返回当前选中单元格数量返回Sub 在A1返回当前选中单元格数量()[A1] = Selection.CountEnd Sub▲返回当前工作簿中工作表数量返回Sub 返回当前工作簿中工作表数量()t = Application.Sheets.CountMsgBox tEnd Sub▲返回光标选择区域的行数和列数返回Sub 返回光标选择区域的行数和列数()x = Selection.Rows.County = Selection.Columns.CountRange("A1") = xRange("A2") = yEnd Sub▲工作表中包含数据的最大行数返回Sub 包含数据的最大行数()n = Cells.Find("*", , , , 1, 2).RowMsgBox nEnd Sub▲返回A列数据的最大行数返回Sub 返回A列数据的最大行数() n = Range("a65536").End(xlUp).RowRange("B1") = nEnd Sub▲将所选区域文本插入新建文本框返回Sub 将所选区域文本插入新建文本框()For Each rag In Selectionn = n & rag.Value & Chr(10)NextActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizon tal, ActiveCell.Left +ActiveCell.Width, ActiveCell.T op + ActiveCell.Height, 250#, 100).SelectSelection.Characters.Text = "问题:" & nWith Selection.Characters(Start:=1, Length:=3).Font.Name = "黑体".FontStyle = "常规".Size = 12End WithEnd Sub▲批量插入地址批注返回Sub 批量插入地址批注()On Error Resume NextDim r As RangeIf Selection.Cells.Count > 0 ThenFor Each r In Selection/doc/4911298482.html,ment.Deleter.AddComment/doc/4911298482.html,ment.Visible = False /doc/4911298482.html,ment.Text Text:="本单元格:" & r.Address & " of " & Selection.AddressNextEnd IfEnd Sub▲批量插入统一批注返回Sub 批量插入统一批注()Dim r As Range, msg As Stringmsg = InputBox("请输入欲批量插入的批注", "提示", "随便输点什么吧")If Selection.Cells.Count > 0 ThenFor Each r In Selectionr.AddComment/doc/4911298482.html,ment.Visible = False /doc/4911298482.html,ment.TextText:=msgNextEnd IfEnd Sub▲以A1单元内容批量插入批注返回Sub 以A1单元内容批量插入批注()Dim r As RangeIf Selection.Cells.Count > 0 ThenFor Each r In Selectionr.AddComment/doc/4911298482.html,ment.Visible = False /doc/4911298482.html,ment.TextText:=[a1].T extNextEnd IfEnd Sub▲不连续区域插入当前文件名和表名及地址返回Sub 批量插入当前文件名和表名及地址()For Each mycell In Selectionmycell.FormulaR1C1 = "[" + /doc/4911298482.html, + "]" + /doc/4911298482.html, +"!" + mycell.AddressNextEnd Sub▲不连续区域录入当前单元地址返回Sub 区域录入当前单元地址() For Each mycell In Selectionmycell.FormulaR1C1 = mycell.AddressNextEnd Sub▲连续区域录入当前单元地址返回Sub 连续区域录入当前单元地址()Selection = "=ADDRESS(ROW(),COLUMN(),4,1)"Selection.CopySelection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _:=False, Transpose:=FalseEnd Sub▲返回当前单元地址返回Sub 返回当前单元地址()d = ActiveCell.Address[A1] = dEnd Sub▲不连续区域录入当前日期返回Sub 区域录入当前日期()Selection.FormulaR1C1 = Format(Now(), "yyyy-m-d")End Sub▲不连续区域录入当前数字日期返回Sub 区域录入当前数字日期() Selection.FormulaR1C1 = Format(Now(), "yyyymmdd")End Sub▲不连续区域录入当前日期和时间返回Sub 区域录入当前日期和时间()Selection.FormulaR1C1 = Format(Now(), "yyyy-m-d h:mm:ss")End Sub▲不连续区域录入对勾返回Sub 批量录入对勾()Selection.FormulaR1C1 = "√"End Sub▲不连续区域录入当前文件名返回Sub 批量录入当前文件名()Selection.FormulaR1C1 = /doc/4911298482.html,End Sub▲不连续区域添加文本返回Sub 批量添加文本()Dim s As RangeFor Each s In Selections = s & "文本内容"NextEnd Sub▲不连续区域插入文本返回Sub 批量插入文本()Dim s As RangeFor Each s In Selections = "文本内容" & sNextEnd Sub▲从指定位置向下同时录入多单元指定内容返回Sub 从指定位置向下同时录入多单元指定内容()Dim arrarr = Array("1", "2", "13", "25", "46", "12", "0", "20")[B2].Resize(8, 1) = Application.WorksheetFunction.Transpose(arr)End Sub▲按aa工作表A列的内容排列工作表标签顺序返回Sub 按aa工作表A列的内容排列工作表标签顺序()Dim I%, str1$I = 1Sheets("aa").SelectDo While Cells(I, 1).Value <> ""str1 = Trim(Cells(I, 1).Value)Sheets(str1).SelectSheets(str1).Move after:=Sheets(I)I = I + 1Sheets("aa").SelectLoopEnd Sub▲以A1单元文本作表名插入工作表返回Sub 以A1单元文本作表名插入工作表()Dim nm As Stringnm = [a1]Sheets.Add/doc/4911298482.html, = nmEnd Sub▲删除全部未选定工作表返回Sub 删除全部未选定工作表()Dim sht As Worksheet, n As Integer, iFlag As BooleanDim ShtName() As Stringn = ActiveWindow.SelectedSheets.CountReDim ShtName(1 To n)n = 1For Each sht In ActiveWindow.SelectedSheetsShtName(n) = /doc/4911298482.html,n = n + 1NextApplication.DisplayAlerts = FalseFor Each sht In SheetsiFlag = FalseFor i = 1 To n - 1If ShtName(i) = /doc/4911298482.html, TheniFlag = TrueExit ForEnd IfNextIf Not iFlag Then sht.DeleteNextApplication.DisplayAlerts = TrueEnd Sub▲工作表标签排序返回Sub 工作表标签排序()Dim i As Long, j As Long, nums As Long, msg As Longmsg = MsgBox("工作表按升序排列请选'是[Y]'. " & vbCrLf & vbCrLf & "工作表按降序排列请选 '否[N]'", vbYesNoCancel, "工作表排序")If msg = vbCancel Then Exit Subnums = Sheets.CountIf msg = vbYes Then 'Sort ascendingFor i = 1 To numsFor j = i To numsIf UCase(Sheets(j).Name) < UCase(Sheets(i).Name) ThenSheets(j).Move Before:=Sheets(i)End IfNext jNext iElse 'Sort descendingFor i = 1 To numsFor j = i To numsIf UCase(Sheets(j).Name) > UCase(Sheets(i).Name) ThenSheets(j).Move Before:=Sheets(i)End IfNext jNext iEnd IfEnd Sub▲定义指定工作表标签颜色返回Sub 定义指定工作表标签颜色() Sheets("Sheet1").T ab.ColorIndex = 46End Sub▲在目录表建立本工作簿中各表链接目录返回Sub 在目录表建立本工作簿中各表链接目录()Dim s%, Rng As RangeOn Error Resume NextSheets("目录").ActivateIf Err = 0 ThenSheets("目录").UsedRange.DeleteElseSheets.Add/doc/4911298482.html, = "目录" End If。

excel vba 教程

excel vba 教程

excel vba 教程Excel VBA教程:VBA(Visual Basic for Applications)是一种用于自动化Microsoft Office应用程序的编程语言。

在Excel中,通过VBA可以编写宏(Macro),实现自动化的数据处理和操作。

以下是一些常用的VBA代码示例,帮助你快速入门:1. 插入新模块: 在Excel的"开发工具"选项卡中,点击"Visual Basic"按钮,然后在项目资源管理器中右键点击"VBAProject",选择"插入"->"模块"。

2. 定义变量: 使用"Dim"关键字来声明一个变量,例如:Dim myValue As Double。

3. 循环语句: 使用"For"和"Next"关键字来实现循环。

例如:```For i = 1 To 10'循环操作Next i```4. 条件语句: 使用"If...Then...Else"关键字来实现条件判断。

例如:```If condition Then'条件为真时的操作Else'条件为假时的操作End If```5. 单元格操作: 使用Range对象来访问和操作单元格。

例如:```Range("A1").Value = "Hello" '将文本"Hello"写入A1单元格Range("B3").Formula = "=A1+A2" '在B3单元格中输入公式,求和A1和A2单元格的值```6. 打开和保存文件: 使用Workbooks对象来打开和保存Excel 文件。

例如:```Workbooks.Open "C:\path\to\file.xlsx" '打开文件ActiveWorkbook.SaveAs "C:\path\to\newfile.xlsx" '另存为新文件```7. 错误处理: 使用"On Error Resume Next"和"Err"对象来处理错误。

excel vba 解释

excel vba 解释

excel vba 解释VBA(Visual Basic for Applications)是一种基于事件驱动的编程语言,通常与Microsoft Office 应用程序(如Excel、Word、Access等)一起使用。

VBA允许你以编程的方式控制这些应用程序,自动执行任务、创建自定义功能和处理数据。

下面是一些关于Excel VBA的基本解释:1. VBA编辑器:-在Excel中,你可以通过按下`Alt + F11`打开VBA编辑器。

- VBA编辑器是一个集成开发环境(IDE),用于编写、编辑和调试VBA代码。

2. 模块和过程:- VBA代码通常存储在模块中。

模块是一个包含VBA代码的容器。

-过程是执行特定任务的代码块,可以是子过程(Sub)或函数(Function)。

3. 基本语法:- VBA语法类似于其他基于Visual Basic的语言。

-学习VBA的基础包括变量、条件语句(如`If...Then...Else`)、循环语句(如`For`和`Do...Loop`)等。

```vbaSub MyMacro()' 这是一个VBA子过程的例子Dim x As Integerx = 10If x > 5 ThenMsgBox "x 大于5"ElseMsgBox "x 不大于5"End IfEnd Sub```4. 对象模型:-VBA是基于对象的。

Excel应用程序中的各种元素(工作簿、工作表、单元格等)都是对象。

-通过操作这些对象,你可以执行各种操作。

例如,通过`Worksheets`对象可以访问和操作工作表。

```vbaSub AccessCell()' 访问单元格并显示其值Dim ws As WorksheetSet ws = ThisWorkbook.Sheets("Sheet1")MsgBox ws.Range("A1").ValueEnd Sub```5. 事件处理:- VBA允许你响应特定事件,例如工作表的变更、单元格的变更等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在Windows 7 环境下封装Excel VBA 代码
一、安装Visual Basic 6.0
在Windows 7 下安装Visual Basic 6.0安装会遇到一些兼容性问题,而Windows XP 则很顺利。

当某些程序必须要在Windows 7 下调试的时候,就一定要面对Windows 7 了。

(一)进入安装文件夹,点击“Setup.exe”运行Visual Basic 6.0安装程序。

(二)出现兼容性问题提示,单击“运行程序”。

(三)进入Visual Basic 6.0安装向导,单击“下一步”。

(四)出现“最终用户许可协议”对话框,选择“接受协议”,单击“下一步”。

(五)进入“产品和用户ID”对话框,在“请输入产品的ID号”处输入ID号,全部输入0至9中的任意一个,然后单击“下一步”。

(六)保持默认选择“安装Visual Basic 6.0中文企业版”,单击“下一步”。

(七)选择公用安装文件夹,采取默认或自定义均可。

然后单击“下一步”
(八)再次出现兼容性问题提示,直接单击“运行程序”。

(九)进入Visual Basic 6.0 安装程序,单击“继续”后,单击“确定”。

(十)出现“发现了旧版本的Visual SourceSafe”提示,选择“是”
(十一)在选择安装类型对话框中,封装Excel VBA 代码选择“典型安装”即可。

(十二)出现“使用新的Visual SourceSafe数据库格式”提示,选择“是”
(十三)开始Visual Basic 6.0安装。

(十四)安装完毕,单击“重新启动Windows”。

重新启动Windows后,自动弹出下面的对话框。

如果需要帮助文档,可单击“下一步”继续安装MSDN,对于Visual Basic 6.0的初学者,建议安装。

在安装MSDN 过程中,插入MSDN安装盘按照提示进行安装。

如果不需要帮助文档,单击“退出”,Visual Basic 6.0安装完成。

二、运行Visual Basic 6.0
由于在Windows 7下运行Visual Basic 6.0存在兼容性问题,因此必须对其进行设置才可正常运行。

(一)单击“开始→所有程序→Microsoft Visual Basic 6.0 中文版”,用鼠标右击“Microsoft Visual Basic 6.0 中文版”,点击“属性”。

(二)在弹出的“Microsoft Visual Basic 6.0 中文版属性”对话框中,勾选“以兼容模式运行这个程序”与“以管理员身份运行此程序”其中之一,如两者都不勾选,也可在点击“Microsoft Visual Basic 6.0 中文版”时以管理员身份运行,否则将弹出下面的错误:
(三)勾选“禁用视觉主题”、“禁用桌面元素”或两者均勾选,以使程序运行流畅。

至此,Visual Basic 6.0可以正常运行了。

我们封闭一个Excel VBA 代码试试。

(四)运行Visual Basic 6.0中文版,在自动弹出的“新建工程”对话框中选择“ActiveX Dll”。

(五)在代码框中输入如下代码:
Sub Test()
MsgBox "Welcome to Excel VBA!"
End Sub
“MsgBox "Welcome to Excel VBA!"”这段代码显示一条弹出信息,虽然很简单,但却可以测试Visual Basic 6.0封装Excel VBA 代码是否正常。

代码输入完毕后,单击“工程→引用”,对封装应用程序进行设置。

在弹出的“引用-工程1”对话框中,勾选“Microsoft Excel 12.0 Object Library”和“Microsoft Office 12.0 Object Library”。

这里的12.0指的是Office 2007,Office 2003是11.0,Office 2010是14.0,Office 2013是15.0,外国人认为13是不吉利的数字,因而是没有13.0的。

勾选完毕后单击“确定”。

(六)接下保存“工程1”到一个指定文件夹,然后单击“文件→生成工程1.dll”,如果没有什么提示,生成“ActiveX Dll”成功。

(七)在Excel VBA 中调用刚才生成的“工程1.dll”。

进入VBA前请首先启用宏或对宏安全性进行设置。

打开或新建一个工作薄,进入VBE编辑环境,单击“工具→引用”,在弹出的“引用-VBAProject”对话框中单击“浏览”找到“工程 1.dll”,单
击“打开”,最后再单击“确定”。

(八)在VBE编辑环境中双击“ThisWorkbook”对象,输入如下代码:
Private Sub Workbook_Open() '注册工程1.dll
Shell "Regsvr32 /s " & VBA.Chr(34) & ThisWorkbook.Path & "\工程1.dll" & VBA.Chr(34), vbHide
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean) '反注册工程1.dll
Shell "Regsvr32 /u /s " & VBA.Chr(34) & ThisWorkbook.Path & "\工程1.dll" & VBA.Chr(34), vbHide
End Sub
关闭VBE环境,在Sheet1工作表中插入一个按键,添加如下代码:
Private Sub CommandButton1_Click()
Dim kk As New Class1 'Class1是类模块名称
kk.Test 'Test是Class1中的过程名称
Set kk = Nothing
End Sub
在上述代码中,“Dim kk As New Class1”设置一个对象kk,“kk.Test”引用kk对象中的Test过程。

(九)关闭VBE环境,单击“CommandButton1”试试。

Visual Basic 6.0 封装Excel VBA 代码环境安装测试完毕。

如果以后出现错误提示,错误是在Visual Basic 6.0中的代码。

Visual Basic 6.0最多只能在Windows 7下兼容安装,在Windows 8中就不能安装了。

在封装EXcel VBA代码时需注意,在Windows 7 环境下封装的Dll可在Windows XP环境下运行,在高版本Excel VBA
中封装的可在低版本的Excel VBA中运行,反之则不行。

所以,当Visual Basic 6.0代码编辑完成后,尽量在Windows 7和Excel 2013环境下封装,这样通用性要强一些。

相关文档
最新文档