Excel VBA常用技巧代码
excel vba常用代码

excel vba常用代码Excel VBA是一种用于编写宏的编程语言,它可以帮助我们在Excel 中进行自动化操作。
在VBA中,有一些常用的代码,可以帮助我们快速完成一些常见的任务。
本文将介绍一些常用的Excel VBA代码,帮助读者更好地理解并运用它们。
一、数据处理1.1 数据筛选在Excel中,我们经常需要根据某些条件筛选数据。
使用VBA可以实现自动筛选,代码如下:```ActiveSheet.Range("A1:D10").AutoFilter Field:=1, Criteria1:=">10"```以上代码将自动筛选出范围为A1:D10的数据,其中第一列大于10的数据。
1.2 数据排序有时候,我们需要对数据进行排序。
使用VBA可以实现自动排序,代码如下:```ActiveSheet.Range("A1:D10").Sort Key1:=Range("A1"), Order1:=xlAscending```以上代码将自动对范围为A1:D10的数据根据第一列进行升序排序。
1.3 数据透视表数据透视表可以帮助我们对数据进行汇总和分析。
使用VBA可以自动生成数据透视表,代码如下:```ActiveSheet.PivotTableWizard```以上代码将自动生成一个数据透视表。
二、单元格操作2.1 单元格赋值在VBA中,我们可以使用代码将某个值赋给指定的单元格,代码如下:```Range("A1").Value = "Hello World"```以上代码将把"Hello World"赋值给A1单元格。
2.2 单元格格式设置使用VBA可以设置单元格的格式,例如设置字体、颜色、边框等,代码如下:```Range("A1").Font.Bold = TrueRange("A1").Interior.Color = RGB(255, 0, 0)Range("A1").Borders.LineStyle = xlContinuous```以上代码将设置A1单元格的字体为粗体、背景色为红色、边框为实线。
VBA常用代码-EXCEL资料讲解

V B A常用代码-E X C E LEXCEL VBA常用代码1.显示活动工作簿名称MsgBox "当前活动工作簿是" & 2.保存活动工作簿Activeworkbook.Save3.保存所有打开的工作簿关闭EXCELFor Each W in Application.WorkbooksW.SaveNext WApplication.Quit4.将网格线设置为蓝色ActiveWindow.GridlineColorIndex = 55.将工作表sheet1隐藏Sheet1.Visible = xlSheetVeryHidden6.将工作表Shtte1显示Sheet1.Visible = xlSheetVisible7.单击某单元格,该单元格所在的行以蓝色背景填充,字体颜色为白色Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) If Target.Row >= 2 Then’第二行以下的区域On Error Resume Next[ChangColor_With1].FormatConditions.Delete = "ChangColor_With1"With [ChangColor_With1].FormatConditions.Delete.Add xlExpression, , "TRUE".Item(1).Interior.ColorIndex = 5.Item(1).Font.ColorIndex = 2End WithEnd IfEnd Sub8.使窗体在启动的时候自动最大化Private Sub UserForm_Initialize()Application.WindowState = xlMaximizedWith ApplicationMe.Top = .TopMe.Left = .LeftMe.Height = .HeightMe.Width = .WidthEnd WithEnd Sub9.不保存工作簿退出EXCELApplication.DisplayAlerts = FalseApplication.Quit10.使窗体的关闭按纽不好用Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) If CloseMode = vbformcontrdmenu ThenMsgBox "请用关闭按钮关闭窗口!!", 64, "提示"Cancel = TrueEnd IfEnd Sub11.使窗体在3秒后自动关闭Private Sub UserForm_Activate()Application.Wait Now + TimeValue("00:00:03")UserForm1.HideEnd Sub12.启动窗体的时候自动使Label1显示Sheet1工作表3列,8行的内容Private Sub UserForm_Activate()Label1.Caption = Sheets("sheet1").Cells(3, 8)End Sub13.让按纽CommandButton1在窗体上以不可用状态显示CommandButton1.Enabled = False14.让按纽Commandbutton1在窗体上以隐藏方式存在CommandButton10.Visible = False15.点击Commandbutton1按纽进入”工资”工作表Sheets("工资").Select16.在Textbox1中输入数据,窗体可显示出”工资”工作表中与输入内容关联的项Private Sub TextBox1_Change()For X = 1 To Application.CountA(Sheets("工资").Range("a:a"))If Sheets("工资").Cells(X, 1) = TextBox1.Text Then’在工资表第一列查找与Textbox1输入相符的项Label2.Caption = Sheets("工资").Cells(X, 2)’在Label2中显示Textbox1数据所在的第二列的数据Label7.Caption = Sheets("工资").Cells(X, 3)’在Label2中显示Textbox1数据所在的第三列的数据 End IfNextEnd Sub17.使EXCEL启动的时候自动最小化/最大化Private Sub Workbook_Open()Application.WindowState = xlMinimized’最小化Application.WindowState = xlMaximized’最大化End Sub18.在Label25以数字的形式显示TextBox12×Label14的结果Label25.Caption = Val(TextBox12.Text) * Val(Label14.Caption)19.单选按纽名与Sheet6工作表名相同OptionButton6.Caption = 20.”登陆”窗体的显示,隐藏登陆.Show’显示登陆.Hide’隐藏21.使窗体的标题栏不显示Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPrivate Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As LongPrivate Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPrivate Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long Private Const GWL_STYLE As Long = (-16)Private Const WS_CAPTION As Long = &HC00000Dim hWndForm As Long ……………………………………………………………………………………………………………..Public Property Set Form(oForm As Object) '29If Val(Application.Version) < 9 ThenhWndForm = FindWindow("ThunderXFrame", oForm.Caption)ElsehWndForm = FindWindow("ThunderDFrame", oForm.Caption)End IfSetFormStyleEnd Property ……………………………………………………………………………………………………………….Private Sub SetFormStyle()Dim iStyle As Long, hMenu As Long, hID As Long, iItems As IntegeriStyle = GetWindowLong(hWndForm, GWL_STYLE)iStyle = iStyle And Not WS_CAPTIONiStyle = iStyle Or WS_THICKFRAMESetWindowLong hWndForm, GWL_STYLE, iStyleDrawMenuBar hWndFormEnd SubDim oFormChanger As New CFormChangerSet oFormChanger.Form = MeMe.SpecialEffect = fmspecia1EffectRaised以上三步每一步都不可缺少,否则不能完成.22.单击某单元格,该单元格所在的行与列都以蓝色背景填充Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) If Target.Row >= 2 Then’第二行以下的所有列On Error Resume Next[ChangColor_With2].FormatConditions.Delete[ChangColor_With3].FormatConditions.Delete = "ChangColor_With2" = "ChangColor_With3"With [ChangColor_With2].FormatConditions.Delete.Add xlExpression, , "TRUE".Item(1).Interior.ColorIndex = 5End WithWith [ChangColor_With3].FormatConditions.Delete.Add xlExpression, , "TRUE".Item(1).Interior.ColorIndex = 5End WithEnd IfEnd Sub23.显示动态时间Option ExplicitPublic nextRun As DateShowtimeApplication.OnTime nextRun, "showtime", schedule:=FalseOption ExplicitSub showtime()bel1 = NowUserForm1.RepaintDoEventsUserForm1.nextRun = Now + 1 / 86400Application.OnTime UserForm1.nextRun, "showtime"End Sub24.加载Combobox1选项ComboBox1.AddItem "收入型"ComboBox1.Additem “支出型”25.使Textbox1自动程输入状态显示(有光标闪动)TextBox1.SetFocus26.打开C盘目录Shell "explorer.exe C:\", 127.。
30个有用的ExcelVBA代码(16~20)

30个有用的ExcelVBA代码(16~20)16.突出显示所选内容中的可选行突出显示可选行可以极大地提高数据的可读性。
下面是一个代码,它将立即突出显示所选内容中的可选行。
Sub HighlightAlternateRows()Dim Myrange As Range Dim Myrow As Range Set Myrange = Selection For Each Myrow In Myrange.Rows If Myrow.Row Mod 2 = 1 Then Myrow.Interior.Color = vbCyan End If Next Myrow End Sub 注意,代码中指定了颜色为vbCyan(也可以修改成:vbRed, vbGreen, vbBlue)。
17.突出显示拼错单词的单元格Excel没有像在Word或PowerPoint中那样进行拼写检查。
虽然可以按F7键进行拼写检查,但当出现拼写错误时,没有视觉提示。
使用此代码可以立即突出显示其中有拼写错误的所有单元格。
Sub HighlightMisspelledCells() Dim cl As Range For Each cl I n edRange If Not Application.CheckSpelling(wor d:=cl.Text) Then cl.Interior.Color = vbRed End IfNext cl End Sub 请注意,突出显示的单元格包含Excel认为是拼写错误的文本。
当然在许多情况下,它也会其它各种错误。
18.刷新工作簿中的所有透视表如果工作簿中有多个透视表,则可以使用此代码一次刷新所有这些透视表。
Sub RefreshAllPivotTables() Dim PT As PivotTable For Each PT In ActiveSheet.PivotTables PT.RefreshTable Next PTEnd Sub 19.将所选单元格的字母大小写改为大写虽然Excel有更改文本字母大小写的公式,但它使您可以在另一组单元格中进行更改。
excelvba常用代码总结

Excel VBA常用代码总结1改变背景色Range("A1"). = xlNoneColorIndex一览改变文字颜色Range("A1"). = 1获取单元格Cells(1, 2)Range("H7")获取范围Range(Cells(2, 3), Cells(4, 5))Range("a1:c3")'用快捷记号引用单元格Worksheets("Sheet1").[A1:B5]选中某sheetSet NewSheet = Sheets("sheet1")选中或激活某单元格'“Range”对象的的Select方法可以选择一个或多个单元格,而Activate 方法可以指定某一个单元格为活动单元格。
'下面的代码首先选择A1:E10区域,同时激活D4单元格:Range("a1:e10").SelectRange("d4:e5").Activate'而对于下面的代码:Range("a1:e10").SelectRange("f11:g15").Activate'由于区域A1:E10和F11:G15没有公共区域,将最终选择F11:G15,并激活F11单元格。
获得文档的路径和文件名'路徑'名稱'路徑+名稱'或将ActiveWorkbook换成thisworkbook隐藏文档= False禁止屏幕更新= False禁止显示提示和警告消息= False文件夹做成strPath = "C:\temp\"MkDir strPath状态栏文字表示= "计算中"双击单元格内容变换Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)If >= 5And <= 8) ThenIf = "●"Then= ""Else= "●"End IfCancel = TrueEnd IfEnd Sub文件夹选择框方法1Set objShell = CreateObject("")Set objFolder = (0, "文件", 0, 0)If Not objFolder Is NothingThen path= & "\"end ifSet objFolder = NothingSet objShell = Nothing文件夹选择框方法2(推荐)Public Function ChooseFolder() As StringDim dlgOpen As FileDialogSet dlgOpen = (msoFileDialogFolderPicker)With dlgOpen.InitialFileName = & "\"If .Show = -1ThenChooseFolder = .SelectedItems(1)End IfEnd WithSet dlgOpen = NothingEnd Function'使用方法例:Dim path As Stringpath = ChooseFolder()If path <> ""ThenMsgBox"open folder"End If文件选择框方法Public Function ChooseOneFile(Optional TitleStr As String = "Please choose a file", Optional TypesDec As String = "*.*", Optional Exten As String = "*.*") As StringDim dlgOpen As FileDialogSet dlgOpen = (msoFileDialogFilePicker)With dlgOpen.Title = TitleStr.. TypesDec, Exten.AllowMultiSelect = False.InitialFileName =If .Show = -1Then' .AllowMultiSelect = True' For Each vrtSelectedItem In .SelectedItems' MsgBox "Path name: " & vrtSelectedItem' Next vrtSelectedItemChooseOneFile = .SelectedItems(1)End IfEnd WithSet dlgOpen = NothingEnd Function某列到关键字为止循环方法1(假设关键字是end)Set CurrentCell = Range("A1")Do While <> "end"……Set CurrentCell = (1, 0)Loop某列到关键字为止循环方法2(假设关键字是空字符串)i = StartRowDo While Cells(i, 1) <> ""……i = i + 1Loop"For Each...Next 循环(知道确切边界)For Each c In Worksheets("Sheet1").Range("A1:D10").Cells If Abs < Then = 0Next"For Each...Next 循环(不知道确切边界),在活动单元格周围的区域内循环For Each c In If Abs < Then = 0Next某列有数据的最末行的行数的取得(中间不能有空行)lonRow=1Do While Trim(Cells(lonRow, 2).Value) <> ""lonRow = lonRow + 1LooplonRow11 = lonRow11 - 1A列有数据的最末行的行数的取得另一种方法Range("A65536").End(xlUp).Row将文字复制到剪贴板Dim MyData As DataObjectSet MyData = New DataObjectRange("H7").Value取得路径中的文件名Private Function GetFileName(ByVal s As String)Dim sname() As Stringsname = Split(s, "\")GetFileName = sname(UBound(sname))End Function取得路径中的路径名Private Function GetPathName(ByVal s As String)intFileNameStart = InStrRev(s, "\")GetPathName = Mid(s, 1, intFileNameStart)End Function由模板sheet拷贝做成一个新的sheet("template").Copy After:=Set doc_s == "newsheetname" & Format(Now, "yyyyMMddhhmmss")选中当列的最后一个有内容的单元格(中间不能有空行)'删除B3开始到B列最后一个有内容的单元格为止的所有内容Range("B3").SelectRange(Selection, (xlDown)).Select常量定义Private Const StartRow As Integer = 3判断sheet是否存在Private Function IsWorksheet(ByVal strSeetName As String) As Boolean On Error GoTo ErrHandleDim blnRet As BooleanblnRet = IsNull(Worksheets(strSeetName))IsWorksheet = TrueExit FunctionErrHandle:IsWorksheet = FalseEnd Function向单元格中写入公式Worksheets("Sheet1").Range("D6").Formula = "=SUM(D2:D5)"引用命名单元格区域Range("!MyRange")Range("[]Sheet1!Sales"选定命名的单元格区域Reference:="!MyRange"'或者worksheets("sheetname").range("rangename").select使用Dictionary'使用Dictionary需要添加参照Microsoft Scripting RuntimeDim dic As New Dictionary"Table", "Cards"'前面是 Key 后面是 Value"Serial", "serialno""Number", "surface"MsgBox ("Table") '由Key取得Value("Table") '判断某Key是否存在将EXCEL表格中的两列表格插入到一个Dictionary中'函数:在ws工作表中,从iStartRow行开始到没有数据为止,把iKeyCol 列和iKeyCol右一列插入到一个字典中,并返回字典。
vba常用代码大全

前言我们平时在工作表单元格的公式中常常使用函数,Excel自带的常用的函数多达300多个,功能强大,丰富多彩,但是在VBA中不能直接应用,必须在函数名前面加上对象,比如:Application.WorksheetFunction.Sum(arg1,arg2,arg3)。
而能在VBA中直接应用的函数也有几十个,下面将逐一详细介绍常用的40个VBA 函数,以供大家学习参考。
第1.1例 ASC函数一、题目:要求编写一段代码,运行后得到字符串”Excel”的首字母和”e”的ASCII 值。
二、代码:Sub 示例_1_01()Dim myNum1%, myNum2%myNum1 = Asc("Excel") '返回69myNum2 = Asc("e") '返回101[a1] = "myNum1= ": [b1] = myNum1[a2] = "myNum2= ": [b2] = myNum2End Sub三、代码详解1、Sub 示例_1_01():宏程序的开始语句。
2、Dim myNum1%, myNum2%:变量myNum1和myNum2声明为整型变量。
也可以写为 Dim myNum1 As Integer 。
Integer 变量存储为 16位(2 个字节)的数值形式,其范围为 -32,768 到 32,767 之间。
Integer 的类型声明字符是百分比符号 (%)。
3、myNum1 = Asc("Excel"):把Asc函数的值赋给变量myNum1。
Asc函数返回一个 Integer,代表字符串中首字母的字符的ASCII代码。
语法Asc(string)必要的 string(字符串)参数可以是任何有效的字符串表达式。
如果 string 中没有包含任何字符,则会产生运行时错误。
4、myNum2 = Asc("e"):把Asc函数的值赋给变量myNum2。
ExcelVBA编程的常用代码

ExcelVBA编程的常用代码Excel VBA编程的常用代码用过VB的人都应该知道如何声明变量,在VBA中声明变量和VB 中是完全一样的!使用Dim语句Dim a as integer '声明a为整型变量Dim a '声明a为变体变量Dim a as string '声明a为字符串变量Dim a as currency ,b as currency ,c as currency '声明a,b,c为货币变量......声明变量可以是:Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal (当前不支持)、Date、String(只限变长字符串)、String * length(定长字符串)、Object、Variant、用户定义类型或对象类型。
强制声明变量Option Explicit说明:该语句必在任何过程之前出现在模块中。
声明常数用来代替文字值。
Const' 常数的默认状态是Private。
Const My = 456' 声明Public 常数。
Public Const MyString = "HELP"' 声明Private Integer 常数。
Private Const MyInt As Integer = 5' 在同一行里声明多个常数。
Const MyStr = "Hello", MyDouble As Double = 3.4567选择当前单元格所在区域在EXCEL97中,有一个十分好的功能,他就是把鼠标放置在一个有效数据单元格中,执行该段代码,你就可以将连在一起的一片数据全部选中。
只要将该段代码加入到你的模块中。
Sub My_SelectSelection.CurrentRegion.SelectEnd sub返回当前单元格中数据删除前后空格后的值sub my_trimmsgbox Trim(ActiveCell.Value)end sub单元格位移sub my_offsetActiveCell.Offset(0, 1).Select'当前单元格向左移动一格ActiveCell.Offset(0, -1).Select'当前单元格向右移动一格ActiveCell.Offset(1 , 0).Select'当前单元格向下移动一格ActiveCell.Offset(-1 , 0).Select'当前单元格向上移动一格end sub如果上述程序产生错误那是因为单元格不能移动,为了解除上述错误,我们可以往sub my_offset 之下加一段代码on error resume next注意以下代码都不再添加sub “代码名称” 和end sub请自己添加!给当前单元格赋值ActiveCell.Value = "你好"给指定单元格赋值例如:A1单元格内容设为"HELLO"Range("a1").value="hello"又如:你现在的工作簿在sheet1上,你要往sheet2的A1单元格中插入"HELLO"1.sheets("sheet2").selectrange("a1").value="hello"或2.Sheets("sheet1").Range("a1").Value = "hello"说明:1.sheet2被选中,然后在将“HELLO"赋到A1单元格中。
excel vba 常用的方法

excel vba 常用的方法Excel VBA常用的方法:Excel VBA(Visual Basic for Applications)是一种用于自动化Excel操作和处理数据的编程语言。
它提供了许多常用的方法,使得处理大量数据和执行复杂任务变得快捷高效。
以下是几个常用的Excel VBA方法介绍:1. Range方法:Range方法用于选择并操作Excel中的单元格或区域。
通过指定起始单元格和结束单元格的引用,可以选择一个或多个连续的单元格范围。
例如: ```vbaRange("A1").Value = "Hello, World!" '在单元格A1中写入Hello, World!```2. Cells方法:Cells方法用于选择并操作Excel中的单元格。
通过指定行号和列号,可以选择一个特定的单元格。
例如:```vbaCells(1, 1).Value = "Hello, World!" '在第1行第1列单元格中写入Hello, World!```3. Copy和Paste方法:Copy方法用于复制选定的单元格或区域,而Paste方法用于将复制的内容粘贴到目标单元格或区域。
例如:```vbaRange("A1").Copy '复制单元格A1Range("B1").PasteSpecial '将复制的内容粘贴到单元格B1```4. Find方法:Find方法用于在指定的单元格范围内查找指定的值。
它可以用于查找并选择包含特定值的单元格。
例如:```vbaSet FoundCell = Range("A1:D10").Find("SearchValue") '在A1:D10范围内查找值为SearchValue的单元格FoundCell.Select '选中找到的单元格```5. Filter方法:Filter方法用于在一个数据表中筛选数据。
常用Excel表格VBA代码32条

001.批量创建工作表2020年4月17日4:04Sub NewSht()Dim shtActive As Worksheet, sht As WorksheetDim i As Long, strShtName As StringOn Error Resume Next '当代码出错时继续运行Set shtActive = ActiveSheetFor i = 2 To shtActive.Cells(Rows.Count, 1).End(xlUp).Row'单元格A1是标题,跳过,从第2行开始遍历工作表名称strShtName = shtActive.Cells(i, 1).Value'工作表名强制转换为字符串类型Set sht = Sheets(strShtName)'当工作簿不存在工作表Sheets(strShtName)时,这句代码会出错,然后…… If Err Then'如果代码出错,说明不存在工作表Sheets(t),则新建工作表Worksheets.Add , Sheets(Sheets.Count)'新建一个工作表,位置放在所有已存在工作表的后面 = strShtName'新建的工作表必然是活动工作表,为之命名Err.Clear'清除错误状态End IfNextshtActive.Activate'重新激活原工作表End Sub002.删除全部工作表2020年11月25日22:13Sub DelShet() '删除所有工作表Dim sht As WorksheetApplication.ScreenUpdating = False '关屏幕刷新Application.DisplayAlerts = False '关警告信息 On Error Resume NextFor Each sht In Worksheetssht.Delete '遍历工作表删除NextApplication.ScreenUpdating = TrueApplication.DisplayAlerts = TrueEnd Sub003.提取工作表名字2020年11月25日22:14Sub GetShtByVba()Dim sht As Worksheet, k As LongApplication.ScreenUpdating = Falsek = 1Range("a:b").Clear '清空数据Range("a:a").NumberFormat = "@" '设置文本格式For Each sht In Worksheets '遍历工作表取表名k = k + 1Cells(k, 1) = NextRange("a1:b1") = Array("工作表名", "是否删除") Application.ScreenUpdating = TrueEnd Sub004.删除指定工作表2020年11月25日22:15Sub DelShtByVba()Dim sht As Worksheet, i As Long, rApplication.ScreenUpdating = FalseApplication.DisplayAlerts = FalseOn Error Resume Nextr = Range("a1").CurrentRegion '数据装入数组rFor i = 2 To UBound(r) '遍历并删除工作表If r(i, 2) = "删除" Then Worksheets(CStr(r(i, 1))).Delete NextApplication.ScreenUpdating = TrueApplication.DisplayAlerts = TrueEnd Sub005.生成带超链接的工作表目录2020年11月25日22:15Sub ml()Dim sht As Worksheet, i&, strShtName$Columns(1).ClearContents '清空A列数据Cells(1, 1) = "目录" '第一个单元格写入标题"目录"i = 1 '将i的初值设置为1.For Each sht In Worksheets '循环当前工作簿的每个工作表strShtName = If strShtName <> Then '如果sht的名称不是当前工作表的名称则开始在当前工作表建立超链接i = i + 1 '累加工作表数量ActiveSheet.Hyperlinks.Add anchor:=Cells(i, 1), Address:="", _SubAddress:="'" & strShtName & "'!a1", TextToDisplay:=strShtName'建超链接End IfNextEnd Sub006.在各个分表创建返回总表的命令按钮2020年11月25日22:16Dim strShtName As StringSub Mybutton()Dim sht As Worksheet, btn As ButtonOn Error Resume NextFor Each sht In WorksheetsWith shtIf .Name <> strShtName Then.Shapes(strShtName).Delete'删除原有的名称为shtn的按钮,避免重复创建Set btn = .Buttons.Add(0, 0, 60, 30)'使用add方法在工作表中添加一个按钮控件,add方法语法如下:表达式.Add(left,right,width,height)'新建按钮,释义见小贴士With btn.Name = strShtName'命令按钮命名.Characters.Text = "返回总表"'按钮的文本内容.OnAction = "LinkTable"'指定按钮控件所执行的宏命令End WithEnd IfEnd WithNextSet btn = NothingEnd SubSub LinkTable()strShtName = "总表"'指定了返回总表的名字,可以根据实际需要修改为目标表的名称,比如“目录”。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.删除重复行 (1)2.ActiveX控件的相关操作 (2)3.单元格内容匹配 (2)4.单元格填充公式 (3)5.弹出打开对话框 (3)6.操作文件夹下的所有工作簿 (3)7.获取数据区域的最后一行和最后一列 (4)8.获取列的字母顺序[A~IV] (4)9.自定义函数返回数组并填充至单元格区域 (4)10.绘制曲线图 (5)11.单元格区域拷贝 (6)12.操纵数据库(查、增、删、改) (6)13.待定XX (7)1.删除重复行关键字:[a65536].End(xlUp).Row、Offset()、相关双层循环Sub RemoveDuplicate()'删除重复行For i = [a65536].End(xlUp).Row - 1 To 1 Step -1 '按倒叙删除For j = [a65536].End(xlUp).Row To i + 1 Step -1If Cells(i, 1).Value = Cells(j, 1).Value ThenRows(i).DeleteEnd IfNextNextEnd SubSub RemoveItem()'删除相邻重复,但不删除隔行重复Dim i As LongWith Range("A2") '以A2为基准进行单元格偏移Do While .Offset(i, 0)If .Offset(i, 0).Value = .Offset(i - 1, 0).Value Then .Offset(i, 0).EntireRow.Deletei = i + 1LoopEnd WithEnd Sub2.ActiveX控件的相关操作关键字:ActiveX、OLEObjects、ActiveSheet.OLEObjects 遍历控件Dim c As ObjectFor Each c In ActiveSheet.OLEObjectsIf = "ComboBox" & i Then' …………..ElseIf = "CheckBox" & i Then' …………..End IfNext c测试控件排布.xls附件:3.单元格内容匹配关键字:Exit For、.Interior.ColorIndex、互不相关双层循环Sub Match()Dim i, j As IntegerFor i = 1 To [a65536].End(xlUp).RowFor j = 1 To [b65536].End(xlUp).RowIf Cells(i, 1).Value = Cells(j, 2).Value ThenCells(i, 1).Interior.ColorIndex = j + iCells(j, 2).Interior.ColorIndex = j + iExit For '仅匹配第一次End IfNext jNext iEnd SubSub UnMatch()Dim i, j As IntegerFor i = 1 To [F65536].End(xlUp).RowFor j = 1 To [G65536].End(xlUp).RowIf Cells(i, 6).Value = Cells(j, 7).Value ThenExit For '当找到有匹配的时候退出,进入下一个记录查找Else'当找遍所有,但未找到(j=循环上限),给出处理If j = [G65536].End(xlUp).Row ThenCells(i, 6).Interior.ColorIndex = j + iEnd IfEnd IfNext jNext i查找匹配.xls附件:4.单元格填充公式关键字:公式、. Formula、. FormulaR1C1Cells(1, 1).Formula = "=B1+C1"Cells(2, 1).FormulaR1C1 = "=R[-1]C[1]+R[-1]C[2]" '通过偏移的方式设置5.弹出打开对话框关键字:GetOpenFilename(过滤器, 过滤索引, 窗口标题, , 选择多个)、.FileExists()File=Application.GetOpenFilename("文本文件,*.txt,Excel文件,*.xls,所有文件,*.*", 2, "打开Excel", , False) Cells(1, 1).Value = File ‘未选择文件时返回FalseDim myfile As ObjectSet myfile = CreateObject("Scripting.FileSystemObject")If myfile.FileExists(File) = False Then‘………….当文件不存在时End If6.操作文件夹下的所有工作簿关键字:Do While … Loop、遍历工作簿Sub OperateWorkbooks()Application.ScreenUpdating = FalseDim lj As String '获取当前文件夹路径Dim dirname As String '目标工作簿名称Dim nm As String '工具工作簿(有代码存放)名称lj = ActiveWorkbook.Pathnm = dirname = Dir(lj & "\*.xls*")Do While dirname <> ""If dirname <> nm ThenWorkbooks(dirname).Sheets(1).Activate ''.......对目标工作簿的第一个sheet激活,并进行相关操作Workbooks(dirname).Close True '关闭并保存目标工作簿End Ifdirname = Dir '获取下一个目标工工作簿名称LoopApplication.ScreenUpdating = TrueEnd Sub7.获取数据区域的最后一行和最后一列关键字:.End(xlUp).Row、.End(xlToRight).Column rowIndex = [A1].End(xlUp).RowcolumnIndex = [A1].End(xlToRight).Column8.获取列的字母顺序[A~IV]关键字:.Address、Split()Cells(1, i).Value = Split(Cells(1, i).Address, "$")(1)9.自定义函数返回数组并填充至单元格区域关键字:二维数组、单元格区域Function ColumnSum(ColumnA As Variant, ColumnB As Variant) As Variant'注意首先选中合适大小的单元格区域,输入公式后按Ctrl+Shift+Enter的方式插入数组Dim n As Integer, A As Variant, B As Variant, temp As VariantA = ColumnAB = ColumnBn = UBound(A)ReDim temp(1 To n, 1 To 1)For i = 1 To ntemp(i, 1) = A(i, 1) * B(i, 1)Next iColumnSum = tempEnd Function10.绘制曲线图关键字:ChartObjects、SeriesCollection、设置曲线样式坐标轴刻度范围遍历所有的曲线图,并删除数据系列For i = 1 To ActiveSheet.ChartObjects.countActiveSheet.ChartObjects(i).ActivateFor Each sc In ActiveChart.SeriesCollectionsc.DeleteNext scNext i对指定的图添加数据系列ActiveChart.ChartType = xlXYScatterLinesNoMarkersFor i = 1 To 10ActiveChart.SeriesCollection.NewSeriesActiveChart.SeriesCollection(i).Name = "=Sheet1!" & rngName.Offset(0, i).AddressActiveChart.SeriesCollection(i).XValues = "=Sheet1!" & rngXValue.Offset(0, i).AddressActiveChart.SeriesCollection(i).Values = "=Sheet1!" & rngYValue.Offset(0, i).AddressNext i对在图中添加竖线(横坐标相同,纵坐标范围为最小值至最大值之间)ActiveChart.SeriesCollection(1).XValues = "={" & point & "," & point & "}"ActiveChart.SeriesCollection(1).Values = "={" & maxval & "," & minval & "}"设置数据系列的线条样式及图表标题ActiveChart.SeriesCollection(i).SelectWith Selection.Format.Line.Visible = msoTrue.Weight = 1End WithActiveChart.ChartTitle.Text坐标轴范围设置自动或指定范围ActiveChart.Axes(xlCategory).MinimumScaleIsAuto = TrueActiveChart.Axes(xlCategory).MaximumScaleIsAuto = TrueActiveChart.Axes(xlValue).MinimumScaleIsAuto = TrueActiveChart.Axes(xlValue).MaximumScaleIsAuto = TrueActiveChart.Axes(xlValue).MinimumScale = 1ActiveChart.Axes(xlValue).MaximumScale = 1011.单元格区域拷贝关键字:Range对象、单元格格式、单元格数值Set Rng = Sheet1.Range("A1:A4") '将单元格区域存储到Range对象Rng.Copy Sheet2.Range("C1:C4") '直接拷贝Sheet3.Range("D1:D4").Interior.Color = Rng.Interior.Color '只传递底纹颜色Sheet3.Range("D1:D4").Value = Rng.Value '只传递数值Rng.ClearContents '清楚内容,注意Range对象为引用类型,当清除内容后,Sheet1中的内容也被清除12.操纵数据库(查、增、删、改)关键字:ADODB.Connection、ADODB.RecordsetSub OperateAccess()edRange.ClearDim conn As ObjectDim rds As ObjectSet conn = CreateObject("ADODB.Connection")Set rds = CreateObject("ADODB.Recordset")Dim connStr As String, sqlStr As String'查询远程SQL Sever数据库:数据源为IP地址,输入用户名和密码,Initial Catalog为初始数据库名称'connStr = "Provider=SQLOLEDB.1;Persist Security Info=True;Data Source=192.168.18.52; Password=111111; User ID = sa;Initial Catalog=LCMN"'查询本地Access数据库:一般只需要指定数据源的路径connStr = "Provider = Microsoft.Jet.OLEDB.4.0;Persist Security Info=True;Data Source=" & ActiveWorkbook.Path & "\test.mdb"conn.Open connStr'sqlStr = "select * from human where name in ('周晓春', '胡怀金','汪林芳')" '查询sqlStr = "select ,a.Age,a.Sex,b.workAge,b.salary,b.Place from [Human] as a, [Work] as b where = order by b.salary desc" '两张表同时查询,并按设定的视图给出'sqlStr = "insert into human(Name,Age,Sex) values('小春哥','11','1')" '增加'sqlStr = "update human set name='周晓春' where name='小春哥'" '修改'sqlStr = "delete from human where name='周晓春'" '删除'rds.Open sqlStr, conn '可以以用这句,但优先使用下面一句,语义更明确Set rds = conn.Execute(sqlStr)For col = 0 To rds.fields.Count - 1Range("A1").Offset(0, col).Value = rds.fields(col).Name '获取字段名,即列标题NextRange("A1").Offset(1, 0).CopyFromRecordset rdsconn.CloseSet conn = NothingSet rds = NothingEnd Sub13.待定XX。