精华内容
下载资源
问答
  • 求ACCESS VBA数据库编程代码:ACCESS (OFFICE 365家庭版) 在窗体中进入某个字段,出现一个查询向导,我要编写一些代码使查询向导的第二列按照某个值筛选
  • 求ACCESS VBA数据库编程代码:ACCESS (OFFICE 365家庭版) 在窗体中进入某个字段,出现一个查询向导,我要编写一些代码使查询向导的第二列按照某个值筛选
  • VBA编程问答

    千次阅读 2007-01-27 07:51:00
    VBA编程问答(第2辑)在学习ExcelVBA编程的过程中,经常会遇到一些问题,有些可能是新碰到的,有些则是以前已遇到过但暂时忘掉了解决办法的,VBA编程问答将把我所收集到的问题和自已所遇到的问题及解决办法进行归纳...

    VBA编程问答
    (第2辑)
    在学习ExcelVBA编程的过程中,经常会遇到一些问题,有些可能是新碰到的,有些则是以前已遇到过但暂时忘掉了解决办法的,VBA编程问答将把我所收集到的问题和自已所遇到的问题及解决办法进行归纳整理,以方便查阅和参考。
    在下面的内容中,有大量的程序代码,并附有简单的说明,您可以将它们输入或复制到VBE编辑器中进行调试,也可以将它们进行适当的调整和修改后应用到自已的程序中。有些问答提供了参考示例,您可以直接下载后处理。
    本辑目录
    问题14:如何确定一列中带有数据的最后一个单元格?
    问题15:如何将一个组合框中的项目筛选至另一个组合框中?(不使用组合框)
    问题16:如何将一个组合框中的项目筛选至另一个组合框中?(使用组合框)
    问题17:如何允许用户去选择一个文件夹或者目录?
    问题18:如何查找应用工作表公式后出现错误的单元格?
    问题19:如何查找工作表中的最后一行?
    问题20:如何定位某个特定的单元格为屏幕左上角的单元格?
    问题21:如何添加自定义工具条?
    问题22:在执行Application.Quit命令后,如何避免出现保存警告信息框?
    问题23:如何确定单元格背景颜色的名称或者索引号?
    问题24:如何查找两个值之间的值?
    问题25:如何在一个单元格区域获取两个给定数值之间的最大数值?
    =====================================================================
    问题14:如何确定一列中带有数据的最后一个单元格?
    解答:
    这里编写了一个通用函数,您可以调用,从而返回您指定的列中的最后单元格。
    ‘***********************************
    Function LastRowInColumn(intCol As Integer) As Integer
        On Error GoTo LRICError
        Application.Volatile '确保工作表发生变化时调用该函数
        ‘通用代码Rows.Count表示工作表行数
    LastRowInColumn = Cells(Rows.Count, intCol).End(xlUp).Row
    ExitFnxn:
        Exit Function
    '如果出错,则返回错误值到最后的单元格中
    LRICError:
        LastRowInColumn = CVErr(xlErrNA)
        Resume ExitFnxn
    End Function
    ‘***********************************
    您可以在工作表中输入以下测试代码对上面的函数进行测试。
    ‘***********************************
    Sub test()
      Dim X As Integer
      ‘指定确定第2列中的最后一个单元格
    X = LastRowInColumn(2)
      Debug.Print X
    End Sub
    ‘***********************************
    示例文档见(问题14)确定某列中的最后单元格.xls。UploadFiles/2006-8/83708035.rar
    =====================================================================
    问题15:如何将一个组合框中的项目筛选至另一个组合框中?(不使用组合框)
    解答:
    通过后附的示例工作表来说明。在这个示例中,我们没有真正的使用组合框,实际上使用的是数据有效性选项。
    当用户在单元格B1中选择公司时,单元格C1将自动列出有效的值,确保显示该公司中雇员名。但您要输入如下的代码在工作表Sheet1模块中:
    ‘***********************************
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Address = "$B$1" Then
            FilterList
        End If
    End Sub
    ‘***********************************
    在标准模块中输入以下代码:
    ‘***********************************
    Sub FilterList()
        Dim strList As String, strCompany As String, strEmployee As String
        On Error GoTo FilterListError
        strCompany = Range("B1").Text
        Select Case strCompany
            Case "Apple"
                strList = "=$F$2:$F$6"
            Case "IBM"
                strList = "=$G$2:$G$4"
            Case "Microsoft"
                strList = "=$H$2:$H$4"
        End Select
       
        With Range("C1").Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:=strList
            .IgnoreBlank = True
            .InCellDropdown = True
            .InputTitle = ""
            .ErrorTitle = "无效雇员名"
            .InputMessage = ""
            .ErrorMessage = "请从列表中选择一个雇员名"
            .ShowInput = False
            .ShowError = True
        End With

        strEmployee = Range("C1").Text
        '移除'='号
        strList = Mid(strList, 2)
       
        '确保当前雇员名是在特定的公司,如果不是,从列表中取该公司的第一个雇员名
        If Not IsTextInList(strEmployee, Range(strList)) Then
            Range("C1") = PickFirstEmployee(Range(strList))
        End If
       
    FilterListError:
        Exit Sub
    End Sub
    ‘***********************************
    Function IsTextInList(TextToFind As String, R As Range) As Boolean
        Dim FirstRow As Integer, LastRow As Integer, iRow As Integer
        Dim blnFound As Boolean, iCol As Integer
        FirstRow = R.Row
        LastRow = FirstRow + R.Rows.Count - 1
        iCol = R.Column
        blnFound = False
        For iRow = FirstRow To LastRow
            If Cells(iRow, iCol).Text = TextToFind Then
                blnFound = True
                Exit For
            End If
        Next iRow
        IsTextInList = blnFound
    End Function
    ‘***********************************
    Function PickFirstEmployee(R As Range) As String
        Dim iRow As Integer, iCol As Integer
        iRow = R.Row
        iCol = R.Column
        PickFirstEmployee = Cells(iRow, iCol).Text
    End Function
    ‘***********************************
    示例文档见(问题15)筛选一个组合框中的值到另一个组合框中.xls。UploadFiles/2006-8/83992704.rar
    ===================================================================
    问题16:如何将一个组合框中的项目筛选至另一个组合框中?(使用组合框)
    解答:
    通过后附的示例工作表来说明。在这个工作表中,单击按钮会出现一个“组合框链接”用户窗体,在第一个组合框中选择不同的选项,在第二个组合框中的项目相应发生变化。
    在VBE编辑器中,设计一个带有两个组合框(名称分别为cboCategory和cboChoices)的用户窗体,并在窗体模块中输入如下代码:
    ‘***********************************
    Sub UpdatecboChoices()
        Select Case cboCategory.Text
            Case "颜色"
                cboChoices.RowSource = "A2:A6"
            Case "交通工具"
                cboChoices.RowSource = "B2:B5"
            Case "大洲"
                cboChoices.RowSource = "C2:C8"
            Case Else
                cboChoices.List = ""
        End Select
        cboChoices.ListIndex = 0
    End Sub
    ‘***********************************
    Private Sub cboCategory_Change()
        UpdatecboChoices
    End Sub
    ‘***********************************
    Private Sub UserForm_Activate()
        Dim i As Integer
        cboCategory.Clear
        For i = 1 To 3
            cboCategory.AddItem Cells(1, i)
        Next i
        cboCategory.ListIndex = 0
    End Sub
    ‘***********************************
    示例文档见(问题16)筛选一个组合框中的值到另一个组合框中.xls。UploadFiles/2006-8/83551438.rar
    ===================================================================
    问题17:如何允许用户去选择一个文件夹或者目录?
    解答:
    下面是运用Windows对话框允许用户选取一个文件夹目录的代码:
    ‘***********************************
    Public Type BROWSEINFO
        hOwner As Long
        pidlRoot As Long
        pszDisplayName As String
        lpszTitle As String
        ulFlags As Long
        lpfn As Long
        lParam As Long
        iImage As Long
    End Type
    ‘***********************************
    'API声明
    Declare Function SHGetPathFromIDList Lib "shell32.dll" _
      Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long

    Declare Function SHBrowseForFolder Lib "shell32.dll" _
    Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long
    ‘***********************************
    '下面的函数出现让用户选择文件目录的一个窗体
    Function GetDirectory(Optional Msg) As String
        Dim bInfo As BROWSEINFO
        Dim path As String
        Dim r As Long, X As Long, i As Integer

    ' 设置根目录为桌面
        bInfo.pidlRoot = 0&

    '设置对话框标题
        If IsMissing(Msg) Then
            bInfo.lpszTitle = "请选择一个文件夹."
        Else
            bInfo.lpszTitle = Msg
        End If
       
    '返回的目录类型
        bInfo.ulFlags = &H1

    '显示对话框
        X = SHBrowseForFolder(bInfo)
       
    '分析结果
        path = Space$(512)
        r = SHGetPathFromIDList(ByVal X, ByVal path)
        If r Then
              i = InStr(path, Chr$(0))
            GetDirectory = Left(path, i - 1)
        Else
            GetDirectory = ""
        End If
    End Function
    ‘***********************************
    示例文档见(问题17)允许选择文件夹目录.xls。UploadFiles/2006-8/83574180.rar
    此外,运行下面的代码将允许用户使用Windows对话框选择一个文件:
    ‘***********************************
    Sub test()
      Dim Filename
      Filename = Application.GetOpenFilename()
    End Sub
    ‘***********************************
    GetOpenFilename是一个内置的Excel函数,它仅返回一个文件名。您必须采取读取文件的操作。
    ===================================================================
    问题18:如何查找应用工作表公式后出现错误的单元格?
    解答:
    下面是一个很方便使用的程序,用于查找在工作表中应用公式后出现错误值的单元格并选中。
    ‘***********************************
    Sub FindErrors()
    ‘如果没有在工作表中发现错误,将会产生错误
    On Error Goto FEError
    ActiveSheet.UsedRange.SpecialCells(xlCellTypeFormulas, xlErrors).Select
    Exit Sub
    FEError:
      MsgBox "没有发现错误", , "提示!"
    Exit Sub
    End Sub
    ‘***********************************
    ===================================================================
    问题19:如何查找工作表中的最后一行?
    解答:
    下面是一个快速且简单的函数,用于获取工作表中含有数据的最后一行。
    ‘***********************************
    Function GetLastRow(SheetID) As Integer
        Dim LastRow As Integer
        If Application.WorksheetFunction.CountA(Worksheets(SheetID).Cells) = 0 Then
            LastRow = 1
        Else
            LastRow = Worksheets(SheetID).UsedRange.Rows.Count + Worksheets(SheetID).UsedRange.Row
            While Application.WorksheetFunction.CountA(Worksheets(SheetID).Rows(LastRow)) = 0
                LastRow = LastRow - 1
            Wend
        End If
        GetLastRow = LastRow
    End Function
    ‘***********************************
    您可以使用简单的语句进行测试,在代码模块中输入如下代码:
    ‘***********************************
    Sub test()
      Dim I As Long
      I=GetLastRow(1)
      Debug.Print i
    End Sub
    ‘***********************************
    运行上述过程后,将会在立即窗口中显示当前工作簿中工作表1中最后一行的行号。
    ===================================================================
    问题20:如何定位某个特定的单元格为屏幕左上角的单元格?
    解答:
    可以通过滚动行和滚动列来实现:
    ‘***********************************
    '定位工作表中的单元格M14在屏幕左上角
    Sub test()
    Worksheets(1).Select
    ActiveWindow.ScrollRow = 14
    ActiveWindow.ScrollColumn = 13
    End Sub
    ‘***********************************
    也可以使用以下语句实现:
    ‘***********************************
    '定位工作表中的单元格G10在屏幕左上角
    Sub test()
    Application.GoTo Range("G10"), True
    End Sub
    ===================================================================
    问题21:如何添加自定义工具条?
    解答:
    下面是添加自定义工具条的示例代码,运行该代码后将在“标准”工具条的右侧出现一个名为“我的工具条”的自定义工具条,与Excel的内置工具条一样,您可以移动/悬浮它,并且单击工具条里的命令可以执行相应的操作。当然,如果您愿意的话,可以将本示例扩展,添加一些有用的命令在自定义的工具条上,从而扩展Excel的功能。
    本示例中,该工具条是临时的,当您关闭工作簿后,它不会保存。您最好在在Workbook_Open事件中调用”AddToolbar”程序,这样当打开该工作簿时,自动添加自定义的工具条。
    ‘***********************************
    Sub AddToolBar()
        Dim cmdbar As CommandBar
        Dim CmdBtn1 As CommandBarButton
        Dim strTBName As String

        strTBName = "我的工具条"
       
        '如该工具条已经存在则不再添加
        If CheckForToolbar(strTBName) Then Exit Sub
       
        Set cmdbar = CommandBars.Add(Name:=strTBName, Position:=msoBarTop, Temporary:=True)
        cmdbar.Visible = True
       
        With cmdbar
            '放置该工具条在“标准”工具条的右侧

            .Left = CommandBars("Standard").Width
            .RowIndex = CommandBars("Standard").RowIndex
           
            Set CmdBtn1 = .Controls.Add(msoControlButton, , , , True)
            With CmdBtn1
                .Style = msoButtonCaption
                .Caption = "我的工具条"
                .TooltipText = "这是一个示例工具条."
                .OnAction = "HelloWorld"
            End With
           
        End With
       
        Set cmdbar = Nothing
        Set CmdBtn1 = Nothing
       
    End Sub
    ‘***********************************
    Function CheckForToolbar(argName As String) As Boolean
        Dim bar As CommandBar, Result As Boolean
       
        Result = False
       
        For Each bar In CommandBars
            If bar.Name = argName Then
                Result = True
            End If
        Next bar
       
        CheckForToolbar = Result
       
    End Function
    ‘***********************************
    Sub HelloWorld()

        MsgBox "Hello World!"

    End Sub
    ‘***********************************
    示例文档见(问题21)添加工具条示例.xls。UploadFiles/2006-8/83436686.rar
    ===================================================================
    问题22:在执行Application.Quit命令后,如何避免出现保存警告信息框?
    解答:
    通常当执行Application.Quit语句后,如果在这之前工作簿有变化,都会出现“是否保存对工作簿XXX的修改”的警告框。为了避免出现这个警告框,可以采用以下方法。
    1、添加代码指定您是否想保存工作簿所发生的变化,代码如下:
    ‘***********************************
    Workbooks(x).Close Savechanges:=True
    ‘***********************************
    运行上述代码后,将弹出“另存为”对话框。
    2、关闭Excel警告信息。这样对工作簿所做的任何改变均不会被保存,等于在警告框中选择“否”按钮。因此,这种方法将会使您对工作簿所做的更改不被保存,建议您在需要避免警告框的地方使用该语句后,立即恢复设置。即:
    ‘***********************************
    Application.DisplayAlerts = False
    Workbooks(x).Close
    Application.DisplayAlerts = True
    ‘***********************************
    3、使用语句,让Excel觉得工作簿已经被保存过了。
    ‘***********************************
    Workbooks(x).Saved = True
    Workbooks(x).Close
    ‘***********************************
    ===================================================================
    问题23:如何确定单元格背景颜色的名称或者索引号?
    解答:
    下面的自定义函数可用来返回单元格背景颜色索引号或者是颜色名称。
    ‘***********************************
    Function CellColor(rCell As Range, Optional ColorName As Boolean)
      Dim strColor As String, iIndexNum As Integer

      Select Case rCell.Interior.ColorIndex
         Case 1
          strColor = "Black"
          iIndexNum = 1
         Case 53
          strColor = "Brown"
          iIndexNum = 53
         Case 52
          strColor = "Olive Green"
          iIndexNum = 52
         Case 51
          strColor = "Dark Green"
          iIndexNum = 51
         Case 49
          strColor = "Dark Teal"
          iIndexNum = 49
         Case 11
          strColor = "Dark Blue"
          iIndexNum = 11
         Case 55
          strColor = "Indigo"
          iIndexNum = 55
         Case 56
          strColor = "Gray-80%"
          iIndexNum = 56
         Case 9
          strColor = "Dark Red"
          iIndexNum = 9
         Case 46
          strColor = "Orange"
          iIndexNum = 46
         Case 12
          strColor = "Dark Yellow"
          iIndexNum = 12
         Case 10
          strColor = "Green"
          iIndexNum = 10
         Case 14
          strColor = "Teal"
          iIndexNum = 14
         Case 5
          strColor = "Blue"
          iIndexNum = 5
         Case 47
          strColor = "Blue-Gray"
          iIndexNum = 47
         Case 16
          strColor = "Gray-50%"
          iIndexNum = 16
         Case 3
          strColor = "Red"
          iIndexNum = 3
         Case 45
          strColor = "Light Orange"
          iIndexNum = 45
         Case 43
          strColor = "Lime"
          iIndexNum = 43
         Case 50
          strColor = "Sea Green"
          iIndexNum = 50
         Case 42
          strColor = "Aqua"
          iIndexNum = 42
         Case 41
          strColor = "Light Blue"
          iIndexNum = 41
         Case 13
          strColor = "Violet"
          iIndexNum = 13
         Case 48
          strColor = "Gray-40%"
          iIndexNum = 48
         Case 7
          strColor = "Pink"
          iIndexNum = 7
         Case 44
          strColor = "Gold"
          iIndexNum = 44
         Case 6
          strColor = "Yellow"
          iIndexNum = 6
         Case 4
          strColor = "Bright Green"
          iIndexNum = 4
         Case 8
          strColor = "Turqoise"
          iIndexNum = 8
         Case 33
          strColor = "Sky Blue"
          iIndexNum = 33
         Case 54
          strColor = "Plum"
          iIndexNum = 54
         Case 15
          strColor = "Gray-25%"
          iIndexNum = 15
         Case 38
          strColor = "Rose"
          iIndexNum = 38
         Case 40
          strColor = "Tan"
          iIndexNum = 40
         Case 36
          strColor = "Light Yellow"
          iIndexNum = 36
         Case 35
          strColor = "Light Green"
          iIndexNum = 35
         Case 34
          strColor = "Light Turqoise"
          iIndexNum = 34
         Case 37
          strColor = "Pale Blue"
          iIndexNum = 37
         Case 39
          strColor = "Lavendar"
          iIndexNum = 39
         Case 2
          strColor = "White"
          iIndexNum = 2
        Case Else
          strColor = "自定义的颜色或者没有填充颜色."
      End Select

        If ColorName = True Or _
            strColor = "自定义的颜色或者没有填充颜色." Then
            CellColor = strColor
        Else
            CellColor = iIndexNum
        End If

    End Function
    ‘***********************************
    当您在VBE编程器中的标准模块代码窗口中输入上述代码并保存后,该函数将出现在“用户定义”函数列表中,您可以在工作簿中进行测试。例如,如果您将工作表中A1单元格背景色设置为绿色,在A2单元格中输入公式“=CellColor(A1,True)”后,将显示文本“Green”;若输入公式“=CellColor(A1,False)或=CellColor(A1)”,则显示索引号“10”。即该函数的第二个参数设置为“True”,则显示颜色文本;若设置为“False”或省略,则显示颜色索引号。
    示例文档见(问题23)确定单元格背景颜色.xls。UploadFiles/2006-8/83922501.rar
    ===================================================================
    问题24:如何查找两个值之间的值?
    解答:
    在Excel和大多数的MS Office应用程序中,有一个“查找”功能可用来在一个范围、工作表或工作簿中查找特定的值、或者文本字符串。然而,没有一个用于查找在两个值之间(指定的最大值和最小值)之间第一次出现某个值的位置的功能,我们能使用VBA代码来处理。代码如下:
    ‘***********************************
    Sub GetBetween()
      Dim strNum As String
      Dim lMin As Long, lMax As Long
      Dim rFound As Range, rLookin As Range
      Dim lFound As Long, rStart As Range
      Dim rCcells As Range, rFcells As Range
      Dim lCellCount As Long, lcount As Long
      Dim bNoFind As Boolean

      strNum = InputBox("请先输入最大值,然后输入逗号," _
            & "接着输入最大值" & vbNewLine & _
            vbNewLine & "例如: 1,10", "输入最小值和最大值")
           
      If strNum = vbNullString Then Exit Sub
      On Error Resume Next
      lMin = Left(strNum, InStr(1, strNum, ","))
      If Not IsNumeric(lMin) Or lMin = 0 Then
         MsgBox "输入数据错误, 或者最小值不应为零", vbCritical
         Exit Sub
      End If
         
      lMax = Replace(strNum, lMin & ",", "")
      If Not IsNumeric(lMax) Or lMax = 0 Then
         MsgBox "输入数据错误,或者最大值不应为零", vbCritical
         Exit Sub
      End If
           
      If lMax < lMin Then
         MsgBox "最小值大于最大值", vbCritical
         Exit Sub
      End If
            
      If lMin + 1 = lMax Then
         MsgBox "最大值和最小值之间没有范围", vbCritical
         Exit Sub
      End If
            
      If Selection.Cells.Count = 1 Then
         Set rCcells = Cells.SpecialCells(xlCellTypeConstants, xlNumbers)
         Set rFcells = Cells.SpecialCells(xlCellTypeFormulas, xlNumbers)
         Set rStart = Cells(1, 1)
      Else
         Set rCcells = Selection.SpecialCells(xlCellTypeConstants, xlNumbers)
         Set rFcells = Selection.SpecialCells(xlCellTypeFormulas, xlNumbers)
         Set rStart = Selection.Cells(1, 1)
      End If
           
      '缩小查找范围
      If rCcells Is Nothing And rFcells Is Nothing Then
         MsgBox "工作表无数据", vbCritical
         Exit Sub
      ElseIf rCcells Is Nothing Then
         Set rLookin = rFcells.Cells '公式
      ElseIf rFcells Is Nothing Then
         Set rLookin = rCcells.Cells '常量
      Else
         Set rLookin = Application.Union(rFcells, rCcells) '公式和常量
      End If
      
      lCellCount = rLookin.Cells.Count
      Do Until lFound > lMin And lFound < lMax And lFound > 0
         lFound = 0
         Set rStart = rLookin.Cells.Find(What:="*", After:=rStart, LookIn:=xlValues, _
                           LookAt:=xlWhole, SearchOrder:=xlByRows, _
                           SearchDirection:=xlNext, MatchCase:=True)
         lFound = rStart.Value
         lcount = lcount + 1
         If lCellCount = lcount Then
            bNoFind = True
            Exit Do
         End If
      Loop
     
      rStart.Select
           
      If bNoFind = True Then
         MsgBox "没有数据在" _
         & lMin & " 和 " & lMax & "之间", vbInformation
      End If
      On Error GoTo 0
    End Sub
    ‘***********************************
    该代码将以工作表中“查找”功能相同的方式工作,当仅选择一个单元格时,将在所有单元格中查找;当选择一部分单元格时,仅在所选单元格区域中查找,在两个值之间的符合条件的第一个单元格被选中,不包含最小值和最大值本身。注意,本程序代码不会查找零值。
    例如,在工作表中有1至10共10个数据,若您要查找3至5之间的数据,运行后在对话框中输入3,5,内容为4的单元格将被选中。
    示例文档见(问题24)查找最大最小值之间的值.xls。UploadFiles/2006-8/83406803.rar
    ===================================================================
    问题25:如何在一个单元格区域获取两个给定数值之间的最大值?
    解答:
    下面的自定义函数将在单元格区域中获取任意两个指定数值之间的最大值。
    ‘***********************************
    Function GetMaxBetween(rCells As Range, MinNum, MaxNum)
      Dim rRange As Range
      Dim vMax
      Dim aryNums()
      Dim i As Integer

      ReDim aryNums(rCells.Count)
      For Each rRange In rCells
        vMax = rRange
        Select Case vMax
          Case MinNum + 0.01 To MaxNum - 0.01
            aryNums(i) = vMax
            i = i + 1
        Case Else
            GetMaxBetween = 0
        End Select
      Next rRange
       
      GetMaxBetween = WorksheetFunction.Max(aryNums)
    End Function
    ‘***********************************
    您在VBE编辑器中输入上述代码后,该函数将出现在“用户定义”函数中,您可以在工作表单元格中输入公式进行测试,例如,在单元格C7中输入“=GetMaxBetween(A1:A10,2,9)”回车后将得到单元格区域A1至A10中大于2且小于9的最大值,精度可达到0.01,本例中为8。
    示例文档见(问题25)获取两个数值之间的最大值.xls。UploadFiles/2006-8/83769901.rar

     
    展开全文
  • VBA编程技巧大全

    2013-08-05 09:03:19
    技巧189 保护VBA代码 459 189-1 设置工程密码 459 189-2 设置“工程不可查看” 460 技巧190 优化代码 462 190-1 关闭屏幕刷新 462 190-2 使用工作表函数 464 190-3 使用更快的单元格操作方法 465 190-4 使用With语句...
  • excel vba筛选

    千次阅读 2017-02-10 09:45:32
    1、筛选vba 代码为 set rg=range("a1:a100") rg.AutoFilter Field:=1, Criteria1:="内容" rg 为筛选区域, Criteria1为筛选的值,比如在A1列内筛选内容为北京区的 ,则 Criteria1="北京区" 2、高级筛选 ...

    excel 中有两个筛选

    1、筛选,vba 代码为

    set rg=range("a1:a100")

    rg.AutoFilter Field:=1, Criteria1:="内容"

    rg 为筛选区域, Criteria1为筛选的值,比如在A1列内筛选内容为北京区的 ,则 Criteria1="北京区"

    2、高级筛选

     Rg.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("A1"), Unique:=True

    同理rg 为rang 区,action 有两个值,一个是不改变,一个是复制,copytoRange  就是结果复制内容到

    这里主要说复制结果,这个结果是不重复的,比如有1000行数据,里面有10个北京区,20个上海区,四川区等,他会吧内容不重复的列出了

    这两个结合起来使用 就可以达到自定义筛选了

      Rg.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("A1"), Unique:=True
        x = Range("A60000").End(xlUp).Row
    ReDim filterArray(0 To x - 1)
        For i = 0 To x - 2
        filterArray(i) = Range("A" & i + 2)
       Rg.AutoFilter Field:=1, Criteria1:=filterArray(i)

    这样就可以实现筛选自动选择内容

    展开全文
  • VBA编程常用语句(转载) 1、Option Explicit '强制对模块内所有变量进行声明 Option Private Module '标记模块为私有,仅对同一工程中其它模块有用,在宏对话框中不显示 Option Compare Text '字符串不区分大小写 ...

    VBA编程常用语句(转载)
    1、Option Explicit '强制对模块内所有变量进行声明

    Option Private Module '标记模块为私有,仅对同一工程中其它模块有用,在宏对话框中不显示

    Option Compare Text '字符串不区分大小写

    Option Base 1 '指定数组的第一个下标为 1

    2、On Error Resume Next '忽略错误继续执行 VBA代码,避免出现错误消息

    3、On Error GoTo ErrorHandler '当错误发生时跳转到过程中的某个位置

    4、On Error GoTo 0 '恢复正常的错误提示

    5、Application.DisplayAlerts=False '在程序执行过程中使出现的警告框不显示

    6、Application.ScreenUpdating=False '关闭屏幕刷新

    Application.ScreenUpdating=True '打开屏幕刷新

    7、Application.Enable.CancelKey=xlDisabled '禁用 Ctrl+Break 中止宏运行的功能

    8、 Workbooks.Add() '创建一个新的工作簿

    9、Workbooks(“book1.xls”).Activate '激活名为 book1的工作簿

    10、ThisWorkbook.Save '保存工作簿

    11、ThisWorkbook.close '关闭当前工作簿

    12、ActiveWorkbook.Sheets.Count '获取活动工作薄中工作表数

    13、ActiveWorkbook.name '返回活动工作薄的名称

    14、ThisWorkbook.Name '返回当前工作簿名称

    ThisWorkbook.FullName '返回当前工作簿路径和名称

    15、ActiveWindow.EnableResize=False '禁止调整活动工作簿的大小

    16、Application.Window.Arrange xlArrangeStyleTiled '将工作簿以平铺方式排列

    17、ActiveWorkbook.WindowState=xlMaximized '将当前工作簿最大化

    18、ActiveSheet.UsedRange.Rows.Count '当前工作表中已使用的行数

    19、Rows.Count '获取工作表的行数(注:考虑向前兼容性)

    20、Sheets(Sheet1).Name= “Sum” '将 Sheet1命名为 Sum

    21、ThisWorkbook.Sheets.Add Before:=Worksheets(1) '添加一个新工作表在第一工作表前

    22、ActiveSheet.Move After:=ActiveWorkbook. _

    Sheets(ActiveWorkbook.Sheets.Count) '将当前工作表移至工作表的最后

    23、Worksheets(Array(“sheet1”,“sheet2”)).Select '同时选择工作表 1和工作表 2

    24、Sheets(“sheet1”).Delete或 Sheets(1).Delete '删除工作表 1

    25、ActiveWorkbook.Sheets(i).Name '获取工作表 i的名称

    26、ActiveWindow.DisplayGridlines=Not ActiveWindow.DisplayGridlines

    切换工作表中的网格线显示,这种方法也可以用在其它方面进行相互切换,即相当于开关按钮

    27、ActiveWindow.DisplayHeadings=Not ActiveWindow.DisplayHeadings

    '切换工作表中的行列边框显示

    28、 ActiveSheet.UsedRange.FormatConditions.Delete '删除当前工作表中所有的条件格式

    29、Cells.Hyperlinks.Delete '取消当前工作表所有超链接

    30、ActiveSheet.PageSetup.Orientation=xlLandscape

    或 ActiveSheet.PageSetup.Orientation=2 '将页面设置更改为横向

    31、ActiveSheet.PageSetup.RightFooter=ActiveWorkbook.FullName '在页面设置的表尾中输入文件路径

    ActiveSheet.PageSetup.LeftFooter=Application.UserName '将用户名放置在活动工作表的页脚

    32、ActiveCell.CurrentRegion.Select

    或 Range(ActiveCell.End(xlUp),ActiveCell.End(xlDown)).Select '选择当前活动单元格所包含的范围,上下左右无空行

    33、Cells.Select '选定当前工作表的所有单元格

    34、Range(“A1”).ClearContents '清除活动工作表上单元格 A1中的内容

    Selection.ClearContents '清除选定区域内容

    Range(“A1:D4”).Clear '彻底清除 A1至 D4 单元格区域的内容,包括格式

    35、Cells.Clear '清除工作表中所有单元格的内容

    36、ActiveCell.Offset(1,0).Select '活动单元格下移一行,同理,可下移一列

    37、Range(“A1”).Offset(ColumnOffset:=1)或 Range(“A1”).Offset(,1) '偏移一列

    Range(“A1”).Offset(Rowoffset:=-1)或 Range(“A1”).Offset(-1) '向上偏移一行

    38、Range(“A1”).Copy Range(“B1”) '复制单元格 A1,粘贴到单元格 B1中

    Range(“A1:D8”).Copy Range(“F1”) '将单元格区域复制到单元格 F1开始的区域中

    Range(“A1:D8”).Cut Range(“F1”) '剪切单元格区域 A1至 D8,复制到单元格 F1开始的区域中

    Range(“A1”).CurrentRegion.Copy Sheets(“Sheet2”).Range(“A1”) '复制包含 A1 的单元格区域到工作表 2中以 A1起始的单元格区域中

    注:CurrentRegion属性等价于定位命令,由一个矩形单元格块组成,周围是一个或多个空行或列

    39、ActiveWindow.RangeSelection.Value=XX '将值 XX 输入到所选单元格区域中

    40、ActiveWindow.RangeSelection.Count '活动窗口中选择的单元格数

    41、Selection.Count '当前选中区域的单元格数

    42、GetAddress=Replace(Hyperlinkcell.Hyperlinks(1).Address,mailto:,"") '返回单元格中超级链接的地址并赋值

    43、TextColor=Range(“A1”).Font.ColorIndex '检查单元格 A1的文本颜色并返回颜色索引 ,Range(“A1”).Interior.ColorIndex '获取单元格 A1背景色

    44、cells.count '返回当前工作表的单元格数

    45、Selection.Range(“E4”).Select '激活当前活动单元格下方 3行,向右 4列的单元格

    46、Cells.Item(5,“C”) '引单元格 C5 Cells.Item(5,3) '引单元格 C5

    47、Range(“A1”).Offset(RowOffset:=4,ColumnOffset:=5)

    或 Range(“A1”).Offset(4,5) '指定单元格 F5

    48、Range(“B3”).Resize(RowSize:=11,ColumnSize:=3)、Rnage(“B3”).Resize(11,3) '创建 B3:D13 区域

    49、Range(“Data”).Resize(,2) '将 Data 区域扩充 2列

    50、Union(Range(“Data1”),Range(“Data2”)) '将 Data1 和 Data2 区域连接

    51、Intersect(Range(“Data1”),Range(“Data2”)) '返回 Data1 和 Data2 区域的交叉区域

    52、Range(“Data”).Count '单元格区域Data 中的单元格数

    Range(“Data”). Columns.Count '单元格区域 Data 中的列数

    Range(“Data”). Rows.Count '单元格区域 Data 中的行数

    53、Selection.Columns.Count '当前选中的单元格区域中的列数

    Selection.Rows.Count '当前选中的单元格区域中的行数

    54、Selection.Areas.Count '选中的单元格区域所包含的区域数

    55、ActiveSheet.UsedRange.Row '获取单元格区域中使用的第一行的行号

    56、Rng.Column '获取单元格区域 Rng 左上角单元格所在列编号

    57、ActiveSheet.Cells.SpecialCells(xlCellTypeAllFormatConditions) '在活动工作表中返回所有符合条件格式设置的区域

    58、Range(“A1”).AutoFilter Field:=3,VisibleDropDown:=False '关闭由于执行自动筛选命令产生的第 3个字段的下拉列表

    59、Range(“A1:C3”).Name=“computer” '命名 A1:C3 区域为 computer

    或 Range(“D1:E6”).Name=“Sheet1!book” '命名局部变量,即 Sheet1上区域 D1:E6为 book 或 Names(“computer”).Name=“robot” '将区域 computer 重命名为 robot

    60、Names(“book”).Delete '删除名称

    61、Names.Add Name:=

    “ContentList”,RefersTo:="=OFFSET(Sheet1!A2,0,0,COUNTA(Sheet2! A : A: A:A))" '动态命名列

    62、Names.Add Name:=“Company”,RefersTo:=“CompanyCar” '命名字符串 CompanyCar

    63、Names.Add Name:=“Total”,RefersTo:=123456 '将数字 123456 命名为 Total。注意数字不能加引号,否则就是命名字符串了。

    64、 Names.Add Name:=“MyArray”,RefersTo:=ArrayNum '将数组 ArrayNum 命名为 MyArray。

    65、 Names.Add Name:=“ProduceNum”,RefersTo:="=$B$1",Visible:=False '将名称隐藏

    66、ActiveWorkbook.Names(“Com”).Name '返回名称字符串

    67、Application.WorksheetFunction.IsNumber(“A1”) '使用工作表函数检查 A1单元格中的数据是否为数字

    68、Range(“A:A”).Find(Application.Worksheet

    Function.Max(Range(“A:A”))).Activate

    '激活单元格区域 A 列中最大值的单元格

    69、Cells(8,8).FormulaArray="=SUM(R2C[-1]:R[-1]C[-1]*R2C:R[-1]C)" '在单元格中输入数组公式。注意必须使用 R1C1 样式的表达式

    70、ActiveSheet.ChartObjects.Count '获取当前工作表中图表的个数

    71、ActiveSheet.ChartObjects(“Chart1”).Select '选中当前工作表中图表 Chart1

    72、 ActiveSheet.ChartObjects(“Chart1”).Activate

    ActiveChart.ChartArea.Select '选中当前图表区域

    73、WorkSheets(“Sheet1”).ChartObjects(“Chart2”).Chart.

    ChartArea.Interior.ColorIndex=2 '更改工作表中图表的图表区的颜色

    74、Sheets(“Chart2”).ChartArea.Interior.ColorIndex=2 '更改图表工作表中图表区的颜色

    75、Charts.Add '添加新的图表工作表

    76、ActiveChart.SetSourceData

    Source:=Sheets(“Sheet1”).Range(“A1:D5”),PlotBy:=xlColumns '指定图表数据源并按列排列

    77、ActiveChart.Location Where:=xlLocationAsNewSheet '新图表作为新图表工作表

    78、 ActiveChart.PlotArea.Interior.ColorIndex=xlNone '将绘图区颜色变为白色

    79、WorkSheets(“Sheet1”).ChartObjects(1).Chart.Export

    FileName:=“C:MyChart.gif”,FilterName:=“GIF” '将图表 1 导出到 C 盘上并命名为MyChart.gif

    80、 MsgBox “Hello!” '消息框中显示消息 Hello

    81、Ans=MsgBox(“Continue?”,vbYesNo) '在消息框中点击"是"按钮,则 Ans 值为 vbYes;点击"否"按钮,则 Ans 值为 vbNo。

    If MsgBox(“Continue?”,vbYesNo)<>vbYes Then Exit Sub '返回值不为"是",则退出

    82、Config=vbYesNo+vbQuestion+vbDefaultButton2 '使用常量的组合,赋值组 Config变量,并设置第二个按钮为缺省按钮

    83、 MsgBox “This is the first line.” & vbNewLine & “Second line.” '在消息框中强制换行,可用vbCrLf 代替 vbNewLine。

    84、MsgBox “the average is :”&Format(Application.WorksheetFunction.Average

    (Selection),"#,##0.00"),vbInformation, “selection count average” & Chr(13) '应用工作表函数返回所选区域的平均值并按指定格式显示

    85、Userform1.Show '显示用户窗体

    86、Load Userform1 '加载一个用户窗体,但该窗体处于隐藏状态

    87、Userform1.Hide '隐藏用户窗体

    88、Unload Userform1 或 Unload Me '卸载用户窗体

    89、(图像控件).Picture=LoadPicture(“图像路径”) '在用户窗体中显示图形

    90、UserForm1.Show 0 或 UserForm1.Show vbModeless '将窗体设置为无模式状态

    91、Me.Height=Int(0.88*ActiveWindow.Height) '窗体高度为当前活动窗口高度的 0.88

    Me.Width=Int(0.88*ActiveWindow.Width) '窗体宽度为当前活动窗口高度的 0.88

    92、Application.EnableEvents=False '禁用所有事件

    Application.EnableEvents=True '启用所有事件

    注:不适用于用户窗体控件触发的事件

    93、Set ExcelSheet = CreateObject(“Excel.Sheet”) '创建一个 Excel 工作表对象

    ExcelSheet.Application.Visible = True '设置 Application 对象使 Excel 可见

    ExcelSheet.Application.Cells(1, 1).Value = “Data” '在表格的第一个单元中输入文本

    ExcelSheet.SaveAs “C:\TEST.XLS” '将该表格保存到 C:\test.xls 目录

    ExcelSheet.Application.Quit '关闭 Excel

    Set ExcelSheet = Nothing '释放该对象变量

    94、声明并创建一个 Excel 对象引用

    Dim xlApp As Excel.Application

    Dim xlBook As Excel.Workbook

    Dim xlSheet As Excel.WorkSheet

    Set xlApp = CreateObject(“Excel.Application”)

    Set xlBook = xlApp.Workbooks.Add

    Set xlSheet = xlBook.Worksheets(1)

    95、创建并传递一个 Excel.Application 对象的引用

    Call MySub (CreateObject(“Excel.Application”))

    96、Set d = CreateObject(Scripting.Dictionary) '创建一个 Dictionary 对象变量

    97、d.Add “a”, “Athens” '为对象变量添加关键字和条目

    98、Application.OnKey “^I”,“macro” '设置 Ctrl+I 键为 macro 过程的快捷键

    99、 Application.CutCopyMode=False '退出剪切/复制模式

    100、Application.Volatile True '无论何时工作表中任意单元格重新计算,都会强制计算该函数

    Application.Volatile False '只有在该函数的一个或多个参数发生改变时,才会重新计算该函数

    101、Err.Clear '清除程序运行过程中所有的错误

    102、ThisWorkbook.BuiltinDocumentProperties("“Last Save Time”)

    或 Application.Caller.Parent.Parent.BuiltinDocumentProperties("“Last Save Time”) '返回上次保存工作簿的日期和时间

    103、 ThisWorkbook.BuiltinDocumentProperties(“Last Print Date”)

    或 Application.Caller.Parent.Parent.BuiltinDocumentProperties("“Last Print Date”) '返回上次打印或预览工作簿的日期和时间

    104、Workbooks.Close '关闭所有打开的工作簿

    105、 ActiveWorkbook.LinkSources(xlExcelLinks)(1) '返回当前工作簿中的第一条链接

    106、ActiveWorkbook.CodeName

    ThisWorkbook.CodeName '返回工作簿代码的名称

    107、ActiveWorkbook.FileFormat

    ThisWorkbook.FileFormat '返回当前工作簿文件格式代码

    108、ThisWorkbook.Path

    ActiveWorkbook.Path '返回当前工作簿的路径(注:若工作簿未保存,则为空)

    109、ThisWorkbook.ReadOnly

    ActiveWorkbook.ReadOnly '返回当前工作簿的读/写值(为 False)

    110、ThisWorkbook.Saved

    ActiveWorkbook.Saved '返回工作簿的存储值(若已保存则为 False)

    111、Application.Visible = False '隐藏工作簿

    Application.Visible = True '显示工作簿

    注:可与用户窗体配合使用,即在打开工作簿时将工作簿隐藏,只显示用户窗体.可设置控制按钮控制工作簿可见

    112、ActiveSheet.Columns(“B”).Insert '在A 列右侧插入列,即插入 B 列

    ActiveSheet.Columns(“E”).Cut

    ActiveSheet.Columns(“B”).Insert '以上两句将 E 列数据移至 B 列,原 B 列及以后的数据相应后移

    ActiveSheet.Columns(“B”).Cut

    ActiveSheet.Columns(“E”).Insert '以上两句将 B列数据移至 D列,原 C列和 D列数据相应左移一列

    113、ActiveSheet.Calculate '计算当前工作表

    114、ThisWorkbook.Worksheets("“sheet1”).Visible=xlSheetHidden '正常隐藏工作表,同在 Excel 菜单中选择""格式——工作表——隐藏"操作一样

    ThisWorkbook.Worksheets("“sheet1”).Visible=xlSheetVeryHidden '隐藏工作表,不能通过在 Excel 菜单中选择""格式——工作表——取消隐藏"来重新显示工作表

    ThisWorkbook.Worksheets("“sheet1”).Visible=xlSheetVisible '显示被隐藏的工作表

    115、ThisWorkbook.Sheets(1).ProtectContents '检查工作表是否受到保护

    116、ThisWorkbook.Worksheets.Add Count:=2, Before:=

    ThisWorkbook.Worksheets(2)

    或 ThisWorkbook.Workshees.Add ThisWorkbook.Worksheets(2), , 2 '在第二个工作表之前添加两个新的工作表

    117、ThisWorkbook.Worksheets(3).Copy '复制一个工作表到新的工作簿

    118、 ThisWorkbook.Worksheets(3).Copy ThisWorkbook.Worksheets(2) '复制第三个工作表到第二个工作表之前

    119、ThisWorkbook.ActiveSheet.Columns.ColumnWidth = 20 ’

    改变工作表的列宽为 20

    ThisWorkbook.ActiveSheet.Columns.ColumnWidth = ThisWorkbook.ActiveSheet.StandardWidth '将工作表的列宽恢复为标准值

    ThisWorkbook.ActiveSheet.Columns(1).ColumnWidth = 20 '改变工作表列 1的宽度为 20

    120、ThisWorkbook.ActiveSheet.Rows.RowHeight = 10 '改变工作表的行高为 10

    ThisWorkbook.ActiveSheet.Rows.RowHeight = ThisWorkbook.ActiveSheet.StandardHeight '将工作表的行高恢复为标准值

    ThisWorkbook.ActiveSheet.Rows(1).RowHeight = 10 '改变工作表的行 1的高度值设置为 10

    121、ThisWorkbook.Worksheets(1).Activate '当前工作簿中的第一个工作表被激活

    122、ThisWorkbook.Worksheets(“Sheet1”).Rows(1).Font.Bold = True '设置工作表Sheet1中的行1数据为粗体

    123、ThisWorkbook.Worksheets(“Sheet1”).Rows(1).Hidden = True '将工作表Sheet1中的行1隐藏

    ActiveCell.EntireRow.Hidden = True '将当前工作表中活动单元格所在的行隐藏

    注:同样可用于列。

    124、ActiveSheet.Range("“A:A”).EntireColumn.AutoFit '自动调整当前工作表 A 列列宽

    125、ActiveSheet.Cells.SpecialCells(xlCellTypeConstants,xlTextValues) '选中当前工作表中常量和文本单元格

    ActiveSheet.Cells.SpecialCells(xlCellTypeConstants,xlErrors+xlTextValues) '选中当前工作表中常量和文本及错误值单元格

    126、Application.MacroOptions Macro:=“SumPro”,Category:=4 '将自定义的 SumPro 函数指定给Excel 中的""统计函数"类别

    127、Application.MacroOptions Macro:=“SumPro”, Description:=“First Sum,then Product” '为自定义函数 SumPro 进行了功能说明

    128、Application.WorksheetFunction.CountA(Range("“A:A”))+1 '获取 A 列的下一个空单元格

    129、WorksheetFunction.CountA(Cell.EntireColumn) '返回该单元格所在列非空单元格的数量

    WorksheetFunction.CountA(Cell.EntireRow) '返回该单元格所在行非空单元格的数量

    130、WorksheetFunction.CountA(Cells) '返回工作表中非空单元格数量

    131、ActiveSheet.Range("“A20:D20”).Formula=""=Sum(R[-19]C:R[-1]C"’对 A 列至 D列前 19个数值求和

    132、ActiveWindow.Visible=False

    或 ActiveChart.Deselect '使图表处于非活动状态

    133、TypeName(Selection)=“Chart” '若选中的为图表,则该语句为真,否则为假

    134、ActiveSheet.ChartObjects.Delete '删除工作表上所有的 ChartObject对象

    ActiveWorkbook.Charts.Delete '删除当前工作簿中所有的图表工作表

    135、UserForms.Add(MyForm).Show '添加用户窗体 MyForm 并显示

    136、TextName.SetFocus '设置文本框获取输入焦点

    137、SpinButton1.Value=0 '将数值调节钮控件的值改为 0

    138、TextBox1.Text=SpinButton1.Value '将数值调节钮控件的值赋值给文本框控件

    SpinButton1.Value=Val(TextBox1.Text) '将文本框控件值赋给数值调节钮控件

    CStr(SpinButton1.Value)=TextBox1.Text '数值调节钮控件和文本框控件相比较

    139、UserForm1.Controls.Count '显示窗体 UserForm1 上的控件数目

    140、ListBox1.AddItem "“Command1” '在列表框中添加 Command1

    141、ListBox1.ListIndex '返回列表框中条目的值,若为-1,则表明未选中任何列表框中的条目

    142、 RefEdit1.Text '返回代表单元格区域地址的文本字符串

    RefEdit1.Text=ActiveWindow.RangeSelection.Address '初始化 RefEdit 控件显示当前所选单元格区域

    Set FirstCell=Range(RefEdit1.Text).Range("“A1”) '设置某单元格区域左上角单元格

    143、Application.OnTime Now + TimeValue(“00:00:15”), “myProcedure” '等待 15 秒后运行 myProcedure过程

    144、ActiveWindow.ScrollColumn=ScrollBarColumns.Value ’ 将滚动条控件的值赋值给ActiveWindow 对象的 ScrollColumn 属性

    ActiveWindow.ScrollRow=ScrollBarRows.Value '将滚动条控件的值赋值给ActiveWindow对象的ScrollRow 属性

    145、UserForm1.ListBox1.AddItem Sheets("“Sheet1”).Cells(1,1) '将单元格 A1 中的数据添加到列表框中

    ListBox1.List=Product '将一个名为 Product 数组的值添加到 ListBox1 中

    ListBox1.RowSource=“Sheet2!SumP” '使用工作表Sheet2中的 SumP 区域的值填充列表框

    146、ListBox1.Selected(0) '选中列表框中的第一个条目(注:当列表框允许一次选中多个条目时,必须使用Selected属性)

    147、ListBox1.RemoveItem ListBox1.ListIndex '移除列表框中选中的条目

    148、Application.UserName '返回应用程序的用户名

    149、Application.Caller '返回代表调用函数的单元格

    150、Application.Caller.Parent.Parent '返回调用函数的工作簿名称

    151、Application.StatusBar=“请等待……” '将文本写到状态栏

    Application.StatusBar=“请等待……” & Percent & “”% Completed" '更新状态栏文本,以变量Percent 代表完成的百分比

    Application.StatusBar=False '将状态栏重新设置成正常状态

    152、Application.Goto Reference:=Range("“A1:D4”) '指定单元格区域 A1至 D4,等同于选择"“编辑——定位”,指定单元格区域为 A1至 D4,不会出现""定位"对话框

    153、Application.Dialogs(xlDialogFormulaGoto).Show '显示""定位"对话框,但定位条件按钮无效

    154、Application.Dialogs(xlDialogSelectSpecial).Show '显示""定位条件"对话框

    155、Application.Dialogs(xlDialogFormatNumber).show '显示"“单元格格式"中的”"数字"选项卡

    Application.Dialogs(xlDialogAlignment).show '显示"“单元格格式"中的”"对齐"选项卡

    Application.Dialogs(xlDialogFontProperties).show '显示"“单元格格式"中的”"字体"选项卡

    Application.Dialogs(xlDialogBorder).show '显示"“单元格格式"中的”"边框"选项卡

    Application.Dialogs(xlDialogPatterns).show '显示"“单元格格式"中的”"图案"选项卡

    Application.Dialogs(xlDialogCellProtection).show '显示"“单元格格式"中的”"保护"选项卡

    注:无法一次显示带选项卡的""单元格格式"对话框,只能一次显示一个选项卡。

    156、Application.Dialogs(xlDialogFormulaGoto).show Range(“b2”), True '显示""引用位置"的默认单元格区域并显示引用使其出现在窗口左上角(注:内置对话框参数的使用)

    157、Application.CommandBars(1).Controls(2).Controls(16).Execute '执行"“定位"话框,相当于选择菜单”"编辑——定位"命令

    158、Application.Transpose(Array("“Sun”,“Mon”,“Tur”,“Wed”,“Thu”,“Fri”,“Sat”)) '返回一个垂直的数组

    159、Application.Version '返回使用的 Excel 版本号

    160、Application.Cursor = xlNorthwestArrow '设置光标形状为北西向箭头

    Application.Cursor = xlIBeam '设置光标形状为Ⅰ字形

    Application.Cursor = xlWait '设置光标形状为沙漏(等待)形

    Application.Cursor = xlDefault '恢复光标的默认设置

    161、Application.WindowState '返回窗口当前的状态

    Application.WindowState = xlMinimized '窗口最小化

    Application.WindowState = xlMaximized '窗口最大化

    Application.WindowState = xlNormal '窗口正常状态

    162、Application.UsableHeight '获取当前窗口的高度

    Application.UsableWidth '获取当前窗口的宽度

    163、Application.ActiveCell.Address '返回活动单元格的地址(注:返回的是绝对地址)

    164、Application.ActivePrinter '返回当前打印机的名称

    165、Application.ActiveSheet.Name '返回活动工作表的名称

    166、Application.ActiveWindow.Caption '返回活动窗口的标题

    167、Application.ActiveWorkbook.Name '返回活动工作簿的名称

    168、Application.Selection.Address '返回所选区域的地址

    169、Application.ThisWorkbook.Name '返回当前工作簿的名称

    170、Application.CalculationVersion '返回 Excel计算引擎版本(右边四位数字)及 Excel 版本(左边两位数字)

    171、Application.MemoryFree '以字节为单位返回Excel允许使用的内存数(不包括已经使用的内存)

    172、Application.MemoryUsed '以字节为单位返回 Excel 当前使用的内存数

    173、Application.MemoryTotal '以字节为单位返回 Excel 可以使用的内存数(包括已使用的内存,是MemoryFree和 MemoryUsed 的总和)

    174、Application.OperatingSystem '返回所使用的操作系统的名称和版本

    175、Application.OrganizationName '返回 Excel产品登记使用的组织机构的名称

    176、Application.FindFormat '查找的格式种类

    Application.ReplaceFormat '替换查找到的内容的格式种类

    ActiveSheet.Cells.Replace What:=" “”, Replacement:=" “”,SearchFormat:=

    True,ReplaceFormat:=True '替换查找到的格式

    177、Application.Interactive=False '忽略键盘或鼠标的输入

    178、Application.Evaluate(“Rate”) '若在工作表中定义了常量 0.06 的名称为"Rate",则本语句将返回值 0.06

    179、Application.OnUndo ““Undo Option”,”“Undo Procedure” '选择 UndoOption 后,将执行 Undo Procedure 过程

    180、Range(A1:A10).Value=Application.WorksheetFunction.Transpose(MyArray) '将一个含有 10个元素的数组转置成垂直方向的工作表单元格区域(A1至 A10)

    注:因为当把一维数组的内容传递给某个单元格区域时,该单元格区域中的单元格必须是水平方向的,即含有多列的一行。若必须使用垂直方向的单元格区域,则必须先将数组进行转置,成为垂直的。

    181、Range("“A65536”).End(xlUp).Row+1 '返回 A 列最后一行的下一行

    182、rng.Range("“A1”) '返回区域左上角的单元格

    183、cell.Parent.Parent.Worksheets '访问当前单元格所在的工作簿

    184、Selection.Font.Bold=Not Selection.Font.Bold '切换所选单元格是否加粗

    185、ActiveSheet.Range(“A:B”).Sort Key1:=Columns(“B”), Key2:=Columns(“A”), Header:=xlYes '两个关键字排序,相邻两列,B列为主关键字,A 列为次关键字,升序排列

    186、cell.Range("“A1”).NumberFormat '显示单元格或单元格区域中的第一个单元格的数字格式

    187、cell.Range("“A1”).HasFormula '检查单元格或单元格区域中的第一个单元格是否含有公式

    或 cell.HasFormula '工作表中单元格是否含有公式

    188、Cell.EntireColumn '单元格所在的整列

    Cell.EntireRow '单元格所在的整行

    189、rng.Name.Name '显示 rng区域的名称

    190、rng.Address '返回 rng 区域的地址

    191、cell.Range("“A1”).Formula '返回包含在 rng区域中左上角单元格中的公式。

    注:若在一个由多个单元格组成的范围内使用 Formula 属性,会得到错误;若单元格中没有公式,会得到一个字符串,在公式栏中显示该单元格的值。

    192、Range("“D5:D10”).Cells(1,1) '返回单元格区域 D5:D10 中左上角单元格

    193、ActiveCell.Row '活动单元格所在的行数

    ActiveCell.Column '活动单元格所在的列数

    194、Range(“A1:B1”).HorizontalAlignment = xlLeft '当前工作表中的单元格区域数据设置为左对齐

    195、ActiveSheet.Range("“A2:A10”).NumberFormat="#,##0" '设置单元格区域 A2至 A10中数值格式

    196、rng.Replace “” “”,“0” '用 0替换单元格区域中的空单元格

    197、Dim colMySheets As New Collection

    Public colMySheets As New Collection '声明新的集合变量

    198、Set MyRange=Range("“A1:A5”) '创建一个名为 MyRange 的对象变量

    199、.Add Cell.Value CStr(Cell.Value) '向集合中添加惟一的条目(即将重复的条目忽略)

    200、Declare Function GetWindowsDirectoryA Lib "“kernel32” (ByVal lpBuffer As String,ByVal nSize As Long) As Long 'API 函数声明。返回安装 Windows 所在的目录名称,调用该函数后,安装 Windows 的目录名称将在第一个参数 lpBuffer中,该目录名称的字符串长度包含在第二个参数 nSize 中

    201、Set objExcel = CreateObject(“Excel.Application”)objExcel.Workbooks.Add '创建Excel 工作簿

    202、Application.ActivateMicrosoftApp xlMicrosoftWord '开启Word应用程序

    203、Application.TemplatesPath '获取工作簿模板的位置

    204、Application.Calculation = xlCalculationManual '设置工作簿手动计算

    Application.Calculation = xlCalculationAutomatic '工作簿自动计算

    205、Worksheets(1).EnableCalculation = False '不对第一张工作表自动进行重算

    206、Application.CalculateFull '重新计算所有打开的工作簿中的数据

    207、Application.RecentFiles.Maximum = 5 '将最近使用的文档列表数设为5

    208、Application.RecentFiles(4).Open '打开最近打开的文档中的第4个文档

    209、Application.OnTime DateSerial(2006,6,6)+TimeValue("“16:16:16”),"“BaoPo” '在2006年6月6日的16:16:16开始运行BaoPo过程

    210、Application.Speech.Speak (“Hello” & Application.UserName) '播放声音,并使用用户的姓名问候用户

    211、MsgBox Application.PathSeparator '获取""号

    212、MsgBox Application.International(xlCountrySetting) '返回应用程序当前所在国家的设置信息

    213、Application.AutoCorrect.AddReplacement “葛洲坝”, “三峡” '自动将在工作表中进行输入的"葛洲坝"更正为"三峡"

    214、Beep '让计算机发出声音

    215、Err.Number '返回错误代码

    216、MsgBox IMEStatus '获取输入法状态

    217、Date = #6/6/2006#Time = #6:16:16 AM# '将系统时间更改为2006年6月6日上午6时16分16秒

    218、Application.RollZoom = Not Application.RollZoom '切换是否能利用鼠标中间的滑轮放大/缩小工作表

    219、Application.ShowWindowsInTaskba = True '显示任务栏中的窗口,即各工作簿占用各自的窗口

    220、Application.DisplayScrollBars = True '显示窗口上的滚动条

    221、Application.DisplayFormulaBar = Not Application.DisplayFormulaBar '切换是否显示编辑栏

    222、Application.Dialogs(xlDialogPrint).Show '显示打印内容对话框

    223、Application.MoveAfterReturnDirection = xlToRight '设置按Enter键后单元格的移动方向向右

    224、 Application.FindFile '显示打开对话框

    225、ThisWorkbook.FollowHyperlink http://fanjy.blog.excelhome.net '打开超链接文档,呵呵,作者的Blog

    ThisWorkbook.FollowHyperlink http://www.excelba.com '偶的小站*_*

    226、ActiveWorkbook.ChangeFileAccess Mode:=xlReadOnly '将当前工作簿设置为只读

    227、ActiveWorkbook.AddToFavorites '将当前工作簿添加到收藏夹文件夹中

    228、ActiveSheet.CheckSpelling '在当前工作表中执行"拼写检查"

    229、ActiveSheet.Protect userinterfaceonly:=True '保护当前工作表

    230、ActiveSheet.PageSetup.LeftHeader = ThisWorkbook.FullName '在当前工作表的左侧页眉处打印出工作簿的完整路径和文件名

    231、Worksheets(“Sheet1”).Range(“A1:G37”).Locked

    = FalseWorksheets(“Sheet1”).Protect

    '解除对工作表Sheet1中A1:G37区域单元格的锁定

    '以便当该工作表受保护时也可对这些单元格进行修改

    232、Worksheets(“Sheet1”).PrintPreview '显示工作表sheet1的打印预览窗口

    233、ActiveSheet.PrintPreview Enablechanges:=False '禁用显示在Excel 的"“打印预览"窗口中的”“设置"和”"页边距"按钮

    234、ActiveSheet.PageSetup.PrintGridlines = True '在打印预览中显示网格线

    ActiveSheet.PageSetup.PrintHeadings = True '在打印预览中显示行列编号

    235、ActiveSheet.ShowDataForm '开启数据记录单

    236、Worksheets(“Sheet1”).Columns(“A”).Replace What:=“SIN”, Replacement:=“COS”, SearchOrder:=xlByColumns, MatchCase:=True '将工作表sheet1中A列的SIN替换为COS

    237、Rows(2).Delete '删除当前工作表中的第2行

    Columns(2).Delete '删除当前工作表中的第2列

    238、ActiveWindow.SelectedSheets.VPageBreaks.Add before:=ActiveCell '在当前单元格左侧插入一条垂直分页符

    ActiveWindow.SelectedSheets.HPageBreaks.Add before:=ActiveCell '在当前单元格上方插入一条垂直分页符

    239、ActiveWindow.ScrollRow = 14 '将当前工作表窗口滚动到第14行

    ActiveWindow.ScrollColumn = 13 '将当前工作表窗口滚动到第13列

    240、ActiveWindow.Close '关闭当前窗口

    241、ActiveWindow.Panes.Count '获取当前窗口中的窗格数

    242、Worksheets(“sheet1”).Range(“A1:D2”).CreateNames Top:=True '将A2至D2的单元格名称设定为A1到D1单元格的内容

    243、Application.AddCustomList listarray:=Range(“A1:A8”) '自定义当前工作表中单元格A1至A8中的内容为自动填充序列

    244、Worksheets(“sheet1”).Range(“A1:B2”).CopyPicture xlScreen, xlBitmap '将单元格A1至B2的内容复制成屏幕快照

    245、Selection.Hyperlinks.Delete '删除所选区域的所有链接

    Columns(1).Hyperlinks.Delete '删除第1列中所有的链接

    Rows(1).Hyperlinks.Delete '删除第1行中所有的链接

    Range(“A1:Z30”).Hyperlinks.Delete '删除指定范围所有的链接

    246、ActiveCell.Hyperlinks.Add Anchor:=ActiveCell, Address:=“C:\Windows\System32\Calc.exe”, ScreenTip:=" 按下我, 就会开启Windows 计算器", TextToDisplay:=“Windows 计算器” '在活动单元格中设置开启Windows计算器链接

    247、ActiveCell.Value = Shell(“C:\Windows\System32\Calc.exe”, vbNormalFocus) '开启Windows计算器

    248、ActiveSheet.Rows(1).AutoFilter '打开自动筛选。若再运行一次,则关闭自动筛选

    249、Selection.Autofilter '开启/关闭所选区域的自动筛选

    250、ActiveSheet.ShowAllData '关闭自动筛选

    251、ActiveSheet.AutoFilterMode '检查自动筛选是否开启,若开启则该语句返回True

    252、ActiveSheet.Columns(“A”).ColumnDifferences(Comparison:=ActiveSheet. Range(“A2”)).Delete '在A列中找出与单元格A2内容不同的单元格并删除

    253、ActiveSheet.Range(“A6”).ClearNotes '删除单元格A6中的批注,包括声音批注和文字批注

    254、ActiveSheet.Range(“B8”).ClearComments '删除单元格B8中的批注文字

    255、ActiveSheet.Range(“A1:D10”).ClearFormats '清除单元格区域A1至D10中的格式

    256、ActiveSheet.Range(“B2:D2”).BorderAround ColorIndex:=5, Weight:=xlMedium, LineStyle:=xlDouble '将单元格B2至D2区域设置为蓝色双线

    257、Range(“A1:B2”).Item(2, 3)或Range(“A1:B2”)(2, 3) '引用单元格C2的数据

    Range(“A1:B2”)(3) '引用单元格A2

    258、ActiveSheet.Cells(1, 1).Font.Bold = TRUE '设置字体加粗

    ActiveSheet.Cells(1, 1).Font.Size = 24 '设置字体大小为24磅

    ActiveSheet.Cells(1, 1).Font.ColorIndex = 3 '设置字体颜色为红色

    ActiveSheet.Cells(1, 1).Font.Italic = TRUE '设置字体为斜体

    ActiveSheet.Cells(1, 1).Font.Name = “Times New Roman” '设置字体类型

    ActiveSheet.Cells(1, 1).Interior.ColorIndex = 3 '将单元格的背景色设置为红色

    259、ActiveSheet.Range(“C2:E6”).AutoFormat Format:=xlRangeAutoFormatColor3 '将当前工作表中单元格区域C2至E6格式自动调整为彩色3格式

    260、Cells.SpecialCells(xlCellTypeLastCell) '选中当前工作表中的最后一个单元格

    261、ActiveCell.CurrentArray.Select '选定包含活动单元格的整个数组单元格区域.假定该单元格在数据单元格区域中

    262、ActiveCell.NumberFormatLocal = “0.000; [红色] 0.000” '将当前单元格数字格式设置为带3位小数,若为负数则显示为红色

    263、 IsEmpty (ActiveCell.Value) '判断活动单元格中是否有值

    264、ActiveCell.Value = LTrim(ActiveCell.Value) '删除字符串前面的空白字符

    265、Len(ActiveCell.Value) '获取活动单元格中字符串的个数

    266、ActiveCell.Value = UCase(ActiveCell.Value) '将当前单元格中的字符转换成大写

    267、ActiveCell.Value = StrConv(ActiveCell.Value, vbLowerCase) '将活动单元格中的字符串转换成小写

    268、ActiveSheet.Range(“C1”).AddComment '在当前工作表的单元格C1中添加批注

    269、Weekday(Date) '获取今天的星期,以数值表示,1-7分别对应星期日至星期六

    270、ActiveSheet.Range(“A1”).AutoFill Range(Cells(1, 1), Cells(10, 1)) '将单元格A1的数值填充到单元格A1至A10区域中

    271、DatePart(“y”, Date) '获取今天在全年中的天数

    272、ActiveCell.Value = DateAdd(“yyyy”, 2, Date) '获取两年后的今天的日期

    273、MsgBox WeekdayName(Weekday(Date)) '获取今天的星期数

    274、 ActiveCell.Value = Year(Date) '在当前单元格中输入今年的年份数

    ActiveCell.Value = Month(Date) '在当前单元格中输入今天所在的月份数

    ActiveCell.Value = Day(Date) '在当前单元格中输入今天的日期数

    275、ActiveCell.Value = MonthName(1) '在当前单元格中显示月份的名称,本句为显示"一月"

    276、ActiveCell.Value = Hour(Time) '在当前单元格中显示现在时间的小时数

    ActiveCell.Value = Minute(Time) '在当前单元格中显示现在时间的分钟数

    ActiveCell.Value = Second(Time) '在当前单元格中显示现在时间的秒数

    277、ActiveSheet.Shapes(1).Delete '删除当前工作表中的第一个形状

    278、ActiveSheet.Shapes.Count '获取当前工作表中形状的数量

    279、ActiveSheet.Shapes(1).TextEffect.ToggleVerticalText '改变当前工作表中第一个艺术字的方向

    280、ActiveSheet.Shapes(1).TextEffect.FontItalic = True '将当前工作表中第一个艺术字的字体设置为斜体

    281、ActiveSheet.Shapes.AddTextEffect(msoTextEffect21, “三峡”, “Arial Black”, 22#, msoFalse, msoFalse, 66#, 80).Select '在当前工作表中创建一个名为"三峡"的艺术字并对其进行格式设置和选中

    282、ActiveSheet.Shapes.AddLine(BeginX:=10, BeginY:=10, EndX:=250, EndY:=100).Select '在当前工作表中以(10,10)为起点(250,100)为终点画一条直线并选中

    283、ActiveSheet.Shapes.AddShape(Type:=msoShapeRightTriangle, Left:=70, Top:=40, Width:=130, Height:=72).Select '在当前工作表中画一个左上角在(70,40),宽为130高为72的三角形并选中

    284、ActiveSheet.Shapes.AddShape(Type:=msoShapeRectangle, Left:=70, Top:=40, Width:=130, Height:=72).Select '在当前工作表中画一个以点(70,40)为起点,宽130高72的矩形并选中

    285、ActiveSheet.Shapes.AddShape(Type:=msoShapeOval, Left:=70, Top:=40, Width:=130, Height:=72).Select '在当前工作表中画一个左上角在(70,40),宽为130高为72的椭圆

    286、ActiveSheet.Shapes(1).Line.ForeColor.RGB = RGB(0, 0, 255) '将当前工作表中第一个形状的线条颜色变为蓝色

    287、ActiveSheet.Shapes(2).Fill.ForeColor.RGB = RGB(255, 0, 0) '将当前工作表中第2个形状的前景色设置为红色

    288、 ActiveSheet.Shapes(1).Rotation = 20 '将当前工作表中的第1个形状旋转20度

    289、Selection.ShapeRange.Flip msoFlipHorizontal '将当前选中的形状水平翻转

    Selection.ShapeRange.Flip msoFlipVertical '将当前选中的形状垂直翻转

    290、Selection.ShapeRange.ThreeD.SetThreeDFormat msoThreeD1 '将所选取的形状设置为第1种立体样式

    291、ActiveSheet.Shapes(1).ThreeD.Depth = 20 '将当前工作表中第一个立体形状的深度设置为20

    292、ActiveSheet.Shapes(1).ThreeD.ExtrusionColor.RGB = RGB(0, 0, 255) '将当前工作表中第1个立体形状的进深部分的颜色设为蓝色

    293、ActiveSheet.Shapes(1).ThreeD.RotationX = 60 '将当前工作表中的第1个立体形状沿X轴旋转60度

    ActiveSheet.Shapes(1).ThreeD.RotationY = 60 '将当前工作表中的第1个立体形状沿Y轴旋转60度

    294、Selection.ShapeRange.ThreeD.Visible = msoFalse '将所选择的立体形状转换为平面形状

    295、Selection.ShapeRange.ConnectorFormat.BeginDisconnect '在形状中让指定的连接符起点脱离原来所连接的形状

    296、ActiveSheet.Shapes(1).PickUp '复制当前工作表中形状1的格式

    297、ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 260, 160, 180, 30). TextFrame.Characters.Text = “fanjy.blog.excelhome.net” '在工作簿中新建一个文本框并输入内容

    298、ActiveSheet.Shapes.AddLabel(msoTextOrientationHorizontal, 20, 80, 100, 200). TextFrame.Characters.Text = “fanjy.blog.excelhome.net” '在当前工作表中建立一个水平文本框并输入内容

    299、 ActiveSheet.Shapes.AddPicture “d:\sx.jpg”, True, True, 60, 20, 400, 300 '在当前工作表中插入一张d盘中名为sx 的图片

    300、ActiveChart.ApplyCustomType xl3DArea '将当前图表类型改为三维面积图

    展开全文
  • Excel VBA 高级编程-跨表格多条件筛选

    千次阅读 2020-08-24 16:37:14
    大家好,我是陈小虾,是一名自动化方向的IT民工。...本工作表使用VBA实现了如下功能: 1、跨表格多条件筛选 2、在新表格输出结果 3、将结果生成TXT文件 关注公众号:万能的Excel 并回复【跨表格...

    大家好,我是陈小虾,是一名自动化方向的IT民工。写博客是为了记录自己的学习过程,通过不断输出倒逼自己加速成长。但由于水平有限,博客中难免会出现一些BUG,或者有更优方案恳请各位大佬不吝赐教!微信公众号:万能的Excel

    功能说明:

    本案例是应用在股票系统分析的时候,需要从原始数据的表格中,筛选出自己需要的一些数据,并生成TXT 文件

    本工作表使用VBA实现了如下功能:

    1、跨表格多条件筛选

    2、在新表格输出结果

    3、将结果生成TXT文件

    关注公众号:万能的Excel     并回复【跨表格】获取源文件!

    附上代码:

    Private Sub CommandButton1_Click()
        Dim d, ar, w%, j%, i As String, tempArr, str, t As String, dir As String
        Set d = CreateObject("Scripting.Dictionary")
        dir = Cells(1, 11)
        
        Open ThisWorkbook.Path & "\" & dir & ".txt" For Output As #1
        Application.ScreenUpdating = False
        With GetObject(ThisWorkbook.Path & "\" & dir & ".xls")
            ar = .Sheets(1).[a1].CurrentRegion: .Close 0
            End With
    
        For w = 2 To UBound(ar)
        If ar(w, 4) <> "--" Then
            tempArr = Split(ar(w, 1), ".")
            If tempArr(1) = "SZ" Then
                i = 0
            ElseIf tempArr(1) = "SH" Then
                i = 1
            End If
            Sheet1.Cells(w - 1, 1).Value = i + "|" + tempArr(0) + "|" + "【" + ar(w, 4) + "】"
            t = "," + Sheet1.Cells(w - 1, 1)
            Print #1, Mid(t, 2)
            t = vbNullString
        End If
        Next
        Close #1
    End Sub

     

    展开全文
  • VBA编程的工程性规划

    2017-07-17 18:20:00
    看过很多人写的VBA代码,一团一团的,一点规划都没有,为了VBA编程更具工程性,这里讨论一下,并列出自己的一些建议:0.给VBA工程定义一个名字,而非直接使用默认的名称——"VBAProject",以方便以后可能要进行的跨...
  • Excel 2003 VBA编程参考

    千次阅读 2007-01-27 17:23:00
    Excel 2003 VBA编程参考关于作者Paul KimmelPaul Kimmel于1990年创立了Software Conceptions公司,并从那时开始设计和创建软件以及编写计算机图书。Paul Kimmel是几本关于VBA、VB、VB.NET、C#、Delphi和C++书籍的...
  • VBA编程问答集(一)

    千次阅读 2010-05-31 14:04:00
    在学习ExcelVBA编程的过程中,经常会遇到一些问题,有些可能是新碰到的,有些则是以前已遇到过但暂时忘掉了解决办法的,VBA编程问答将把我所收集到的问题和自已所遇到的问题及解决办法进行归纳整理,以方便查阅和...
  • Excel VBA编程常用语句300句

    万次阅读 2011-10-28 12:04:41
    Excel VBA编程常用语句300句 ************** * VBA 语句集 * * (第 1 辑) * ************** **************** * 定制模块行为 * **************** (1) Option Explicit '强制对模块内所有变量进行声明 ...
  • VBA研究】排序编程代码

    千次阅读 2015-10-29 15:11:04
    1、在对Excel处理时经常会对工作表中的数据排序,排序代码怎么写?通过录制宏可以很容易得到(我学习VBA的方法基本就是查资料、录制宏),例如2003版可以得到如下排序语句: Rows("1:1500").Select Selection.Sort ...
  • VBA编程常用语句

    2015-12-24 15:38:00
    1、Option Explicit '强制对模块内所有变量进行声明 Option Private Module '标记模块为私有,仅对同一工程中其它模块有用,在宏对话框中不显示 ...2、On Error Resume Next '忽略错误继续执行 VBA代...
  • # Excel VBA编程常用语句300句 * 本文转自:**http://blog.sina.com.cn/codelee** 博主:**代码农夫** 感谢大佬总结并分享出来~ ************** # * VBA 语句集 * * (第 1 辑) * ************** ***************...
  • Excel通过VBA实现筛选多选功能

    千次阅读 2019-01-18 17:19:46
    今天下午一直比较纠结,想形成Excel筛选多选功能,发现通过 数据–数据验证–数据验证功能,只能实现 序列单选功能,如图: 而我想实现多选功能,肿么办?网上搜索,大部分是ExcelHome技术网站上大牛蓝桥玄霜的示例...
  • WPS EXCEL中的VBA编程

    千次阅读 2013-09-11 17:47:52
    原本excel中的宏在wps中不能正常使用,没办法,任务落到了从没有接触vba编程的我手中。 我安装了wps2013个人版+vba插件。 1,问题描述  Set MyPivotTable = MyPivot.PivotTableWizard(SourceType:=xlDatabase, ...
  • Excel中VBA编程学习笔记(一)

    千次阅读 2018-11-25 16:45:29
    在Excel VBA中类模块就相当于一个类,类模块的名字就是类名。 下面为定义的一个类Class1,并且有些基本属性及一个初始化函数   【例】 下面定义一个类Class1, Private name, sex As String ...
  • VBA编程——范例二

    2018-09-02 15:00:00
    通过上面描述,很明显,这样的功能不可能通过excel的基本函数来实现,必须借助excel宏,即VBA编程来实现。首先,创建一个新的excel文件,保存文件名为“残疾人列表信息03.xlsm”(如图一所示),注意,扩展名必须以...
  • VBA编程常用语句300句

    千次阅读 2010-05-13 22:07:00
    *************** VBA 语句集 ** (第 1 辑) ******************************** 定制模块行为 *****************(1) Option Explicit 强制对模块内所有变量进行声明 Option Private Module 标记模块为私有,仅对同一...
  • 上一篇我们已经用VBA实现SQL检索,并实现相同项求和的功能。那么如何根据日期范围筛选我们需要的数据呢?今天我们看看另外一个SQL查询结构: SQL = "select 字段1 from [原始数据$] where 出库时间 between #开始...
  • 在介绍编程代码之前,先把通用的几种逻辑和方法说明一下,如果没有特殊说明,一般都是在Excel中做的分析,(写这个文章也是为自己做个记录和总结)。 1,在一个系列不同SKU中做分析: DataSource:BOM,SKU List。...
  • 本文测试文档下载地址:百度文库 随着义教均衡发展工作的稳步推进,要求学校功能室实行规范化管理。若有报废或新增等仪器设备变动,则必须...也可使用Excel内置的系统开发工具VBA(Visual Basic for Application)对E...
  • VBA多条件筛选

    2019-01-18 17:15:04
    Visual Basic for Applications(VBA)是Visual Basic的一种宏语言,是微软开发出来在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
  • vba自动筛选数据透视表 自动更新特定的数据透视表 (Update Specific Pivot Tables Automatically)In Excel 2010, you can use Slicers to change multiple pivot tables. However, you might be working in an ...
  • 功能: 1、根据输入的关键字,实时搜索数据库筛选 2、不限数据库大小
  • VBA++ 题记:一剪闲云一溪月,一程山水一年华。一世浮生一刹那,一树菩提一烟霞。岁月静好,现世安稳。纵算云水漂泊,心若安宁,亦可淡若清风。希望见者与不见者都能安康。静下心,多学习有用的知识,多提高自己的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 778
精华内容 311
关键字:

vba编程筛选代码