当前位置:主页 > Office办公

最新发布

在excel中利用VBA在工作簿中创建新的工作表
在excel中利用VBA在工作簿中创建新的工作表

在VBA中,可以用Sheets.Add 方法在工作簿中新建工作表。其语法是:Sheets.Add(Before, After, Count, Type)其中参数Before、After指定新建工作表的位置,Coun指定工作表的数量,Type指定新建工作表的类型。如下例:在工作簿新建一个名称为“工作表1”的工作表:Sub AddWorksheet()On Error Resume NextWorksheets.Add().Name = "工作表1"End Sub在最后一个工作表的后面新建名称为“工作表2”的工作表:Sub AddWorksheetAfterLast()On Error Resume NextWorksheets.Add(After:=Worksheets(Worksheets.Count)).Name = "工作表2"End Sub在最后一个工作表的前面新建4个工作表:Sub Add4Worksheets()Worksheets.Add Before:=Worksheets(Worksheets.Count), Count:=4End Sub运行下面的代码中,首先给出一个提示,要求用户输入新建工作表的名称,然后用该名称新建工作表。如果出现错误,如名称过长或该名称已被使用,将直接新建一个工作表。

100 次浏览
excel用VBA删除空行和空列
excel用VBA删除空行和空列

在Excel中删除空行和空列的方法有很多,下面的方法是用VBA代码来删除工作表指定区域中的空行和空列:Option ExplicitSub Delete_Empty_Rows()Dim rnArea As RangeDim lnLastRow As Long, i As Long, j As LongApplication.ScreenUpdating = FalselnLastRow = Selection.Rows.CountSet rnArea = Selectionj = 0For i = lnLastRow To 1 Step -1If Application.CountA(rnArea.Rows(i)) = 0 ThenrnArea.Rows(i).Deletej = j + 1End IfNext irnArea.Resize(lnLastRow – j).SelectApplication.ScreenUpdating = TrueEnd SubSub Delete_Empty_Columns()Dim lnLastColumn As Long, i As Long, j As LongDim rnArea As RangeApplication.ScreenUpdating = FalselnLastColumn = Selection.Columns.CountSet rnArea = Selection

168 次浏览
exel单击单元格时运行一个指定的宏
exel单击单元格时运行一个指定的宏

我们可以用一个常规的方法来实现当单击某个单元格时运行一个指定的宏。方法如下:1.选择一个单元格,按住Shift键的同时,单击菜单“编辑→复制图片”,在弹出的“复制图片”对话框中,“外观”选择“如屏幕所示”,“格式”选择“位图”,单击“确定”。这时该单元格以位图的形式被复制下来。 2.继续按住Shift键,再次单击菜单“编辑→粘贴图片”,这时单元格图片被粘贴到该单元格所在位置。3.右击该单元格图片,在弹出的菜单中选择“指定宏”,在“指定宏”对话框中选择一个需要运行的宏名称,单击“确定”。4.以后,当单击这个“单元格”时,指定的宏将会运行

101 次浏览
用VBA判断指定的excel工作簿是否打开
用VBA判断指定的excel工作簿是否打开

如果要判断一个指定的工作簿是否打开,可以将下面的VBA代码放入标准模块中,然后在子过程中进行调用。Function IsWkbOpened(sWkbName As String) As Boolean‘如果目标工作簿已打开则返回TRUE,否则返回FALSEDim i As LongFor i = Workbooks.Count To 1 Step -1If Workbooks(i).Name = sWkbName ThenExit ForEnd IfNext‘如果工作簿未找到If i = 0 ThenIsWkbOpened = FalseElseIsWkbOpened = TrueEnd IfEnd Function调用示例如下,将“Book2.xls”换成指定的工作簿名称:Sub IfWkbOpened()If IsWkbOpened("Book2.xls") ThenMsgBox "指定的工作簿已打开"ElseMsgBox "指定的工作簿没有打开"End IfEnd Sub

132 次浏览
excel利用VBA获取系统特殊文件夹路径
excel利用VBA获取系统特殊文件夹路径

Windows 特殊文件夹,包括 "Desktop" 文件夹、"MyDocuments" 文件夹等,如果我们要在VBA中用到这些文件夹,可以用下列代码来获取这些特殊文件夹的路径。Option ExplicitSub GetMyDocumentsPath()Dim WSHShell As ObjectSet WSHShell = CreateObject("Wscript. Shell") ‘请去掉Shell前的空格MsgBox "MyDocuments文件夹位于:" & WSHShell.SpecialFolders("MyDocuments")Set WSHShell = NothingEnd Sub说明:上述代码获取的是“MyDocuments”文件夹的路径,如果要获取其他特殊文件夹路径,可以将代码中的“MyDocuments”更换为下面的文件夹名称。如果指定的文件夹不存在,“SpecialFolders”属性返回空值。这些特殊文件夹有:AllUsersDesktop AllUsersStartMenu AllUsersPrograms AllUsersStartup Desktop Favorites Fonts MyDocuments NetHood PrintHood Programs Recent SendTo StartMenu Startup Templates

185 次浏览
如何将excel公式打印到Word中
如何将excel公式打印到Word中

有时我们需要将指定单元格或区域中的公式打印出来,以便分析。下面的VBA代码可以实现这个功能,可以将选择的单元格或区域中的公式打印到Word中,方便打印。使用方法:1.单击菜单“工具→引用”,在弹出的“引用 VBAproject”窗口中,勾选“Microsoft Word 11.0 Object Library ”2.在VBA编辑器中,单击菜单“插入→模块”,在右侧的代码窗口中输入下列代码。Public Sub PrintFormulasToWord(Dim Cnt As StringDim C As RangeDim WordObj As Word.ApplicationDim HasArr As BooleanOn Error Resume NextErr.Number = 0Set WordObj = GetObject(, "Word.Application")If Err.Number = 429 ThenSet WordObj = CreateObject("Word.Application")Err.Number = 0End IfWordObj.Visible = TrueWordObj.Documents.Add

130 次浏览
excel利用VBA选择已定义名称的区域
excel利用VBA选择已定义名称的区域

如果活动单元格位于某个已定义名称的区域中,可以用下面的VBA代码来选择这个区域,同时在状态栏中给出提示。Public Sub SelectRange()Dim RngName As StringDim R As RangeSet R = ActiveCellDim Msg As StringMsg = "活动单元格不在已定义名称的区域中"RngName = CellInNamedRange(R)If RngName <> "" ThenRange(RngName).SelectMsg = "已选择的区域名称: " + RngNameEnd IfApplication.StatusBar = MsgEnd SubPublic Function CellInNamedRange(Rng As Range) As StringDim N As NameDim C As RangeDim TestRng As RangeOn Error Resume NextFor Each N In ActiveWorkbook.NamesSet C = NothingSet TestRng = N.RefersToRangeSet C = Application.Intersect(TestRng, Rng)If Not C Is Nothing ThenCellInNamedRange = N.NameExit FunctionEnd IfNext NCellInNamedRange = ""End Function如果活动单元格位于多个已定义名称的区域中,将按照名称框下拉列表中的顺序选择第一个名称区域。

145 次浏览
用VBA将焦点定位于名称框
用VBA将焦点定位于名称框

Excel中提供了许多快捷键,但遗憾的是没有提供一个快捷键可以将焦点定位与名称框,下面的宏代码就可以实现这个功能。Public Declare Function SetFocus Lib "user32" (ByVal hwnd As Long) As LongPublic Declare Function FindWindow Lib "user32" Alias "FindWindowA" _(ByVal lpClassName As String, ByVal lpWindowName As String) As LongPublic Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" _(ByVal hWnd1 As Long, ByVal hWnd2 As Long, _ByVal lpsz1 As String, ByVal lpsz2 As String) As LongSub SetFocusNameBox()Dim Res As LongRes = SetFocus( _FindWindowEx( _FindWindowEx( _FindWindow("XLMAIN", Application.Caption) _, 0, "EXCEL;", vbNullString) _, 0, "combobox", vbNullString))End Sub我们可以给这个宏代码指定一个快捷键,如Ctrl+Shift+N,方法如下:单击菜单“工具→宏→宏”,打开“宏”对话框,选择“SetFocusNameBox”,单击“选项”按钮,在其中的文本框中输入大写的“N”,单击确定。 以后,只要按快捷键Ctrl+Shift+N,就可以将焦点定位到名称框

182 次浏览
excel中利用VBA生成一列随机字符串 代码
excel中利用VBA生成一列随机字符串 代码

用下面的VBA代码可以在A1:A100区域中生成由大小写字母和数字组成的12位长度的随机字符串,从中挑选几个作为密码用还是不错的。在Excel中按Alt+F11打开VBA编辑器,双击“工程”窗口中的某个工作表名称,在右侧的代码窗口中输入下列代码:Sub MakeRandomString()Dim J As IntegerDim K As IntegerDim iTemp As IntegerDim sNumber As StringDim RandomStr(1 To 100, 1 To 1) As StringDim bOK As BooleanRandomizeFor J = 1 To 100sNumber = ""For K = 1 To 12DoiTemp = Int((122 – 48 + 1) * Rnd + 48)Select Case iTempCase 48 To 57, 65 To 90, 97 To 122bOK = TrueCase ElsebOK = FalseEnd SelectLoop Until bOKbOK = FalsesNumber = sNumber & Chr(iTemp)Next KRandomStr(J, 1) = sNumberNext JRange("A1:A100").Value = RandomStrEnd Sub最后运行代码。如果要生成其他长度的随机字符串,将其中的For K = 1 To 12中的“12”改为其他数字即可,如:For K = 1 To 10即可生成10位长度的随机字符串。

309 次浏览
excel利用VBA制作包含超链接的工作表目录
excel利用VBA制作包含超链接的工作表目录

如果Excel工作簿中包含许多工作表,可以在一个工作表中列出所有工作表目录和相关说明,以方便在各工作表之间跳转。下面的VBA代码就可以实现这个功能,可以在某个工作表的第一列中产生其他工作表的目录列表及其超链接,单击工作表名称就可以跳转到相应的工作表中,并且可以在其他工作表的A1单元格中设置一个返回目录的超链接,单击可以返回到包含目录的工作表中。按Alt+F11,打开VBA编辑器,在“工程”窗口中双击要设置目录列表的工作表名称,在右侧代码窗口中输入下面的代码后运行:Sub CreateSheetsIndex()Dim wSheet As WorksheetDim i As Longi = 1With Me.Columns(i).ClearContents.Cells(1, 1) = "工作表目录".Cells(1, 1).Name = "目录"End WithFor Each wSheet In WorksheetsIf wSheet.Name <> Me.Name Theni = i + 1With wSheet.Range("A1").Name = "工作表" & wSheet.Index.Hyperlinks.Add Anchor:=.Range("A1"), Address:="", SubAddress:="目录", ScreenTip:= _"跳转到“" & Me.Name & "”工作表", TextToDisplay:="返回目录"End WithMe.Hyperlinks.Add Anchor:=Me.Cells(i, 1), Address:="", SubAddress:="工作表" & wSheet.Index, _ScreenTip:="跳转到“" & wSheet.Name & "”工作表", TextToDisplay:=wSheet.NameEnd IfNext wSheetEnd Sub说明:1.由于上述代码会在所有工作表的A1单元格输入链接内容,所以运行代码前务必确保A1单元格为空。2.如果工作表有密码保护,请先解除保护。3.运行代码创建工作表目录列表后,如果又新建工作表或修改工作表名称,请再次运行代码。

144 次浏览
共计75934条记录 上一页 1.. 555 556 557 558 559 560 561 ..7594 下一页