当前位置:主页 > Office办公 > Excel专区 > Excel函数

最新发布

EXCEL如何使用VBA一次罗列表中三省的员工姓名?
EXCEL如何使用VBA一次罗列表中三省的员工姓名?

请罗列“四川省”、“湖南省”、“湖北省”三个省份员工的资料。VBA代码如下:Sub test()‘定义变量Dim rng As Range, RngTemp As Range, firstAddress As StringDim i As Byte, findCell As Range, sh As Worksheet, shtname As String‘将查找的目标设置为C2单元格到C列最后一个非空单元格赋予变量为rngSet rng = Range([C2], Cells(Rows.Count, "C").End(xlUp))‘循环赋予查找数组的每一个元素For i = 0 To UBound(Array("四川省", "湖南省", "湖北省"))‘开始查找数据,按值精确查找,不区分大小写Set RngTemp = rng.Find(What:=Array("四川省", "湖南省", "湖北省")(i), LookIn:=xlValues, lookat:=xlWhole, MatchCase:=False)‘ 如果找到目标,则赋予该目标的单元格地址给firstAddressIf Not RngTemp Is Nothing ThenfirstAddress = RngTemp.AddressDo‘变量findCell没有初始化,则需要初始化,否则合并查找到的数值If findCell Is Nothing ThenSet findCell = RngTempElseSet findCell = Union(findCell, RngTemp)End If‘查找下一个Set RngTemp = rng.FindNext(RngTemp)‘循环到不为第一个找到的目标地址为止Loop While RngTemp.Address <> firstAddressEnd IfNext i‘如果查找的内容不为空,则选择查找到内容所在行,否则显示提醒If Not findCell Is Nothing ThenfindCell.EntireRow.SelectElseMsgBox "没有找到符合条件的数据!"Exit SubEnd If‘防止错误On Error Resume Next‘把当前工作表的名称赋予shtnameshtname = ActiveSheet.NameSet sht = Sheets("查询结果")‘如果不存在查询结果表,则添加一个“查询结果”工作表If Err.Number <> 0 ThenSheets.Add after:=Sheets(Sheets.Count)Sheets(Sheets.Count).Name = "查询结果"ElseSheets(Sheets.Count).Cells.ClearEnd IfSheets(shtname).SelectSelection.Copy Sheets(Sheets.Count).[A1]End Sub

140 次浏览
如何利用VBA生成一列不重复的随机整数
如何利用VBA生成一列不重复的随机整数

如果我们要用VBA生成一列不重复的随机整数,可以用下面的VBA代码。本例可以在A1:A100中产生1-100的不重复随机整数。Sub RndNumberNoRepeat()Dim TempArr1(99) As Integer, TempArr2(0 To 99, 1 To 1) As IntegerDim RndNumber As Integer, i As IntegerRandomize (Timer) ‘初始化随机数生成器For i = 0 To 99 ‘产生包含1-100的不重复的随机数列TempArr1(i) = iNext iFor i = 99 To 0 Step -1RndNumber = Int(i * Rnd)TempArr2(99 – i, 1) = TempArr1(RndNumber) + 1TempArr1(RndNumber) = TempArr1(i)Next i‘在A1:A100中输入这些数字Range("a1:a100").Value = TempArr2End Sub

141 次浏览
利用VBA批量添加邮件链接
利用VBA批量添加邮件链接

如果Excel表格中的某个区域有许多文本格式的邮件地址需要添加链接,用手工的方式非常繁琐。可以使用下面的VBA代码来快速添加链接,假设该区域为F2:F18。Sub ConvertToEmail()Dim convertRng As RangeSet convertRng = Range("F2:F18")Dim rng As RangeFor Each rng In convertRngIf rng.Value <> "" ThenActiveSheet.Hyperlinks.Add rng, "mailto:" & rng.ValueEnd IfNext rngEnd Sub

99 次浏览
在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运行下面的代码中,首先给出一个提示,要求用户输入新建工作表的名称,然后用该名称新建工作表。如果出现错误,如名称过长或该名称已被使用,将直接新建一个工作表。

98 次浏览
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

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

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

99 次浏览
用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

130 次浏览
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

183 次浏览
如何将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

128 次浏览
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如果活动单元格位于多个已定义名称的区域中,将按照名称框下拉列表中的顺序选择第一个名称区域。

144 次浏览
共计5788条记录 上一页 1.. 62 63 64 65 66 67 68 ..579 下一页