精华内容
下载资源
问答
  • Range的用法: 下面是常见的比较基础的range的用法,想要学习更多用法可自行查资料或者私信我! 1.选择A1单元格,不做任何操作 SubrangeTest() Range("a1").SelectEndSub 2.选择A1单元格,并且赋值“I am a1” ...

    Range的用法:

    下面是常见的比较基础的range的用法,想要学习更多用法可自行查资料或者私信我!

    1.    选择A1单元格,不做任何操作

    SubrangeTest()    Range("a1").SelectEndSub

    2.    选择A1单元格,并且赋值“I am a1”

    SubrangeTest()    Range("a1") ="i am a1"EndSub

    3.    选择A1C5单元格,不做任何操作

            选择A1到C5有两种写法,逗号分隔是一种,还有冒号分隔也是一种。

    SubrangeTest()    Range("a1", "c5").Select    Range("a1:c5").SelectEndSub

    4.    选择A1C5单元格和E5G6两个不连续的区域,不做任何操作

    SubrangeTest()    Range("a1: c5,e5:g6").SelectEndSub

     

    5.选择第一行,不做任何操作

    SubrangeTest()    Range("1:1").SelectEndSub

    6.选择第A列,不做任何操作

    Sub rangeTest()    Range("a:a").SelectEnd Sub

    If的用法:

        格式如下:

            if  判断条件  then

            else

            endif

        例子:      

           如果a1单元格为 "GIVE THANKS TO GOD",那么a1单元格为true,否则a1单元格为false.

    If  Range("a1")= "GIVE THANKS TO GOD"  then        Range("a1")= "true"Else        Range("a1") ="false"End if
    

        多条件判断

    If  Range("a1") ="1" then       Range("a1") ="1"Else if Range("a1")= "2" then      Range("a1")= "2"Else      Range("a1")= "3"End if

     

    已经学习了range和if的用法,我们开始做一个练习吧

    案例1

    题目:

        1.实现表格中性别是男的,称呼为先生,性别为女的称呼为女士;

        2.实现专业为理科的专业代码为lg,专业为文科的专业代码为wk,专业为财经的专业代码为cj

        3.姓名为空的数据删除掉,表格如下图:

    分析:

        重复操作可用宏来执行

    目标:

        练习range和if的使用,熟练掌握range和if。

    操作:

        第一步:点击visual Basic,在表格上面右键-》点击插入-》选择模块

    第二步:写代码

     Sub pd()     Dimi as interge     For  i = 1 to 30        //处理性别的代码,因为i是变量,所以range(“ai”)的写法应为Range(“a” & i)        If Range(“e” & i)=”男” then             Range(“f”& i)=”先生”        Else             Range(“f”& i)=”女士”        End if              //处理专业的代码        If Range(“b” & i)=”理科” then             Range(“c”& i)=”lg”         Else if Range(“b” & i)=”文科” then             Range(“c”& i)=”wk”         Else             Range(“c” & i)=”cj”         End if    NextEnd Sub

    结果如下图:

    如果姓名为空删除整行,因为我们不会写删除的代码所以可以通过录制宏,选中姓名为空的单元格,右键点击删除,选择删除整行。删除代码如下

    Range(“d4”).select //选中D4单元格

    Selection.EntireRow.Delete //删除整行

    所以我们的代码中要加上姓名为空的数据删除掉的逻辑,代码如下:

    Sub pd()   Dimi as interge   For  i = 1 to 30       //处理性别的代码,因为i是变量,所以range(“ai”)的写法应为Range(“a” & i)       If Range(“e” & i)=”男” then             Range(“f”& i)=”先生”       Else             Range(“f”& i)=”女士”       End if              //处理专业的代码       If Range(“b” & i)=”理科” then              Range(“c”& i)=”lg”       Else if Range(“b” & i)=”文科” then              Range(“c”& i)=”wk”       Else              Range(“c”& i)=”cj”       End if              //判断姓名是否为空       If Range(“d” & i)=”” then              Range(“d”& i).select //选中D4单元格              Selection.EntireRow.Delete //删除整行        End if    NextEnd Sub

    但是仔细思考一下,我们上面的代码其实是有问题的,因为删除一行单元格,下面的单元格会上移,i是一直增加的,会导致一些行被漏掉,比如说第四行被删除了,应该执行第五行,但是原来的第五行因为第四行被删除上移变成了第四行,所以第五行就被漏掉了未执行!

    所以当我们遇到删除操作的时候,要从下往上删。vba遇到删除问题的时候都要考虑这个问题,尽量从后往前删。

    代码如下:

    Sub pd()   Dimi as interge   For  i = 30 to  1  step -1  //可通过step规定for的步长,负数时代表递减   //处理性别的代码,因为i是变量,所以range(“ai”)的写法应为Range(“a” & i)       If Range(“e” & i)=”男” then             Range(“f”& i)=”先生”       Else             Range(“f”& i)=”女士”       End if      //处理专业的代码       If Range(“b” & i)=”理科” then              Range(“c”& i)=”lg”       Else if Range(“b” & i)=”文科” then              Range(“c”& i)=”wk”       Else              Range(“c”& i)=”cj”       End if              //判断姓名是否为空       If Range(“d” & i)=”” then              Range(“d”& i).select //选中D4单元格              Selection.EntireRow.Delete //删除整行       End if    NextEnd Sub

    对数据分析或者vba有兴趣的朋友可以关注我的公众号,我会在公众号里面发学习笔记,全是干货。一起学习一起成长!

    展开全文
  • Excel VBA Range单元格操作实例

    千次阅读 2020-02-16 21:51:53
    四、Range操作 4.2取得最后一个非空单元格 xlDown/xlToRight/xlToLeft/xlUp Dim ERow as Long Erow=Range("A" & Rows.Count).End(xlUp).Row 4.3 复制单元格区域 注意:使用PasteSpecial方法时指定xlPasteAll...

    四、Range操作

    4.2取得最后一个非空单元格

    xlDown/xlToRight/xlToLeft/xlUp

    Dim ERow as Long
    Erow=Range("A" & Rows.Count).End(xlUp).Row
    

    4.3 复制单元格区域

    注意:使用PasteSpecial方法时指定xlPasteAll(粘贴全部),并不包括粘贴列宽

    Sub CopyWithSameColumnWidths()
        Sheets("Sheet1").Range("A1").CurrentRegion.Copy
        With Sheets("Sheet2").Range("A1")
            .PasteSpecial xlPasteColumnWidths
            .PasteSpecial xlPasteAll
        End With
        Application.CutCopyMode = False
    End Sub
    Sheets("Sheet2").Range("A1").PasteSpecial Paste:=xlPasteValues '粘贴数值
    

    4.9 设置字符格式

    4.9.1设置单元格文本字符串格式

    Sub CellCharacter()
        With Range("A1")
            .Clear
            .Value = "Y=X2+1"
            .Characters(4, 1).Font.Superscript = True '将第4个字符设置为上标
            .Characters(1, 1).Font.ColorIndex = 3
            .Font.Size = 20
        End With
    End Sub
    

    通过Range对象的Characters属性来操作指定的字符。

    Characters属性返回一个Characters对象,代表对象文字的字符区域。Characters属性的语法格式如下

    Characters(Start, Length)
    

    4.9.2 设置图形对象文本字符格式

    如下示例为A3单元格批注添加指定文本,并设置字符格式。

    Sub ShapeCharacter()
        If Range("A3").Comment Is Nothing Then
            Range("A3").AddComment Text:=""
        End If
        With Range("A3").Comment
            .Text Text:="Microsoft Excel 2016"
            .Shape.TextFrame.Characters(17).Font.ColorIndex = 3'返回从第17个字符开始到最后一个字符的字符串
        End With
    End Sub
    

    TextFrame属性返回Shape对象的文本框对象,而Characters属性返回其中的文本字符。

    4.10 单元格区域添加边框

    使用Range对象的Borders集合可以快速地对单元格区域全部边框应用相同的格式。

    Range对象的BorderAround方法可以快速地为单元格区域添加外边框。

    Sub AddBorders()
        Dim rngCell As Range
        Set rngCell = Range("B2:F8")
        With rngCell.Borders
            .LineStyle = xlContinuous '边框线条的样式
            .Weight = xlThin '设置边框线条粗细
            .ColorIndex = 5 '设置边框线条颜色
        End With
        rngCell.BorderAround xlContinuous, xlMedium, 5 '添加一个加粗外边框
        Set rngCell = Nothing
    End Sub
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RKKb9Tpw-1581860892362)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20200206164323610.png)]

    在单元格区域中应用多种边框格式

    Sub BordersIndexDemo()
        Dim rngCell As Range
        Set rngCell = Range("B2:F8")
        With rngCell.Borders(xlInsideHorizontal) '内部水平
            .LineStyle = xlDot
            .Weight = xlThin
            .ColorIndex = 5
        End With
        With rngCell.Borders(xlInsideVertical) '内部垂直
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = 5
        End With
        rngCell.BorderAround xlContinuous, xlMedium, 5
        Set rngCell = Nothing
    End Sub
    

    Borders(index)属性返回单个Border对象,其参数index取值可为以下:

    名称说明
    xlDiagonalDown5从区域中每个单元格的左上角到右下角的边框。
    xlDiagonalUp6从区域中每个单元格的左下角到右上角的边框。
    xlEdgeBottom9区域底部的边框。
    xlEdgeLeft7区域左边缘的边框。
    xlEdgeRight10区域右边缘的边框。
    xlEdgeTop8区域顶部的边框。
    xlInsideHorizontal12区域中所有单元格的水平边框(区域以外的边框除外)。
    xlInsideVertical11区域中所有单元格的垂直边框(区域以外的边框除外)。

    去除边框

    Sub Restore()
        Columns("B:F").Borders.LineStyle = xlNone
    End Sub
    

    4.11 高亮显示单元格区域

    高亮显示是指以某种方式突出显示活动单元格或指定的单元格区域,使得用户可以一目了然地获取某些信息。

    1.高亮显示单个单元格

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        Cells.Interior.ColorIndex = xlNone'清除所有单元格的内部填充颜色
        Target.Interior.ColorIndex = 5
    End Sub
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eHyHtUS6-1581860892364)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20200206165636905.png)]

    2.高亮显示行列

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        Dim rngHighLight As Range
        Dim rngCell1 As Range, rngCell2 As Range
        Cells.Interior.ColorIndex = xlNone
        Set rngCell1 = Intersect(ActiveCell.EntireColumn, _
            [HighLightArea])
        Set rngCell2 = Intersect(ActiveCell.EntireRow, [HighLightArea])
        On Error Resume Next
        Set rngHighLight = Application.Union(rngCell1, rngCell2)
        rngHighLight.Interior.ThemeColor = 9
        Set rngCell1 = Nothing
        Set rngCell2 = Nothing
        Set rngHighLight = Nothing
    End Sub
    

    命名区域HighLightArea(示例文件已指定B2:H15单元格区域)

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fRfa5MXB-1581860892364)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20200206165756300.png)]

    3.结合条件格式定义名称高亮显示行

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        ThisWorkbook.Names.Add "ActRow", ActiveCell.Row
    End Sub
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cd7d2naO-1581860892364)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20200206165917049.png)]

    4.结合条件格式定义名称高亮显示行列

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        ThisWorkbook.Names.Add "ActRow", ActiveCell.Row
        ThisWorkbook.Names.Add "ActCol", ActiveCell.Column
    End Sub
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2ghE6bHB-1581860892365)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20200206170134713.png)]

    4.12 动态设置单元格数据验证序列

    【数据验证】对话框如下图

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N9c3qcNx-1581860892365)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20200206171335869.png)]

    如下示例代码通过VBA将示例工作簿中工作表“Office 2016"以外的工作表名称设置为工作表“Office 2016"中C3单元格的数据验证序列。

    数据验证序列是由逗号分隔的字符串,两个逗号之间的空字符串将被忽略。

    Sub SheetsNameValidation()
        Dim i As Integer
        Dim strList As String
        Dim wksSht As Worksheet
        For Each wksSht In Worksheets
            If wksSht.Name <> "Office 2016" Then
                strList = strList & wksSht.Name & ","
            End If
        Next wksSht
        With Worksheets("Office 2016").Range("C3").Validation
            .Delete
            .Add Type:=xlValidateList, Formula1:=strList
        End With
        Set wksSht = Nothing
    End Sub
    
    Sub DeleteValidation()
        Range("C3").Validation.Delete
    End Sub
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0hG4eDXy-1581860892365)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20200206171703131.png)]

    Validation对象的Add方法向指定区域内添加数据验证,其语法格式如下:

    Add (Type, AlertStyle, Operator, Formula1, Formula2)
    

    参数Type是必需的,代表数据验证类型。其值可为以下常量之一:

    名称说明
    xlValidateCustom7使用任意公式验证数据有效性。
    xlValidateDate4日期值。
    xlValidateDecimal2数值。
    xlValidateInputOnly0仅在用户更改值时进行验证。
    xlValidateList3值必须存在于指定列表中。
    xlValidateTextLength6文本长度。
    xlValidateTime5时间值。
    xlValidateWholeNumber1全部数值。

    参数Formula2指定数据验证公式的第二部分。仅当Operator为xlBetween或xlNotBetween时有效。

    4.14 判断单元格公式是否存在错误

    Excel公式返回的结果可能是一个错误的文本,包含#NULL、#DIV/0!、#VALUE!、#REF!、#NAME?、#NUM!和#N/A等。

    通过判断Range对象中的Value属性的返回结果是否为错误值,可得知公式是否存在错误。

    Sub FormulaIsError()
        If VBA.IsError(Range("A1").Value) = True Then
            MsgBox "A1单元格错误类型为:" & Range("A1").Text
        Else
            MsgBox "A1单元格公式结果为:" & Range("A1").Value
        End If
    End Sub
    

    IsError函数判断表达式是否为一个错误值,如果是则返回逻辑值True,否则返回逻辑值False。

    4.15批量删除所有错误值

    使用CurrentRegion属性取得包含A1单元格的当前区域。

    Sub DeleteError()
        Dim rngRange As Range
        Dim rngCell As Range
        Set rngRange = Range("a1").CurrentRegion
        For Each rngCell In rngRange
            If VBA.IsError(rngCell.Value) = True Then
                rngCell.Value = ""
            End If
        Next rngCell
        Set rngCell = Nothing
        Set rngRange = Nothing
    End Sub
    

    通过定位功能可获取错误值的单元格对象,并批量修改。

    利用单元格对象的SpecialCells方法定位所有错误值。

    Sub DeleteAllError()
        On Error Resume Next
        Dim rngRange As Range
        Set rngRange = Range("a1").CurrentRegion.SpecialCells _
            (xlCellTypeConstants, xlErrors)
        If Not rngRange Is Nothing Then
            rngRange.Value = ""
        End If
        Set rngRange = Nothing
    End Sub
    

    单元格对象的SpecialCells方法返回一个Range对象,该对象代表与指定类型和值匹配的所有单元格,其语法格式如下:

    SpecialCells(Type,Value)
    

    参数与Type是必需的,用于指定定位类型,可为如下表列举的XlCellType常量之一。

    常量说明
    xlCellTypeAllFormatConditions-4172任何格式的单元格
    xlCellTypeAllValidation-4174含有验证条件的单元格
    xlCellTypeBlanks4空单元格
    xlCellTypeComments-4144含有注释的单元格
    xlCellTypeConstants2含有常量的单元格
    xlCellTypeFormulas-4123含有公式的单元格
    xlCellTypeLastCell11已用区域中的最后一个单元格
    xlCellTypeSameFormatConditions-4173具有相同的格式的单元格
    xlCellTypeSameValidation-4175验证条件相同的单元格
    xlCellTypeVisible12所有可见单元格

    如果参数Type为xlCellTypeConstants或xlCellTypeFormulas,则该参数可用于确定结果中应包含哪几类单元格,参数Value可为以下列举的XlSpecialCellsValue常量之一。将这些值相加可使此方法返回多种类型的单元格。默认情况下,将选择所有常量或公式,无论类型如何。

    常量说明
    xlErrors16有错误的单元格。
    xlLogical4具有逻辑值的单元格。
    xlNumbers1具有数值的单元格。
    xlTextValues2具有文本的单元格。

    4.17 判断单元格是否存在批注

    Function blnComment(ByVal rngRange As Range) As Boolean
        If rngRange.Cells(1).Comment Is Nothing Then
            blnComment = False
        Else
            blnComment = True
        End If
    End Function
    

    返回单元格区域rngRange的第一个单元格是否存在批注。

    注:对于合并单元格的批注,批注对象从属于合并单元格的第一个单元格。

    Range对象的Comment属性返回批注对象,如果指定的单元格不存在批注,则该属性返回Nothing。

    4.18 为单元格添加批注

    Sub Comment_Add()
        With Range("B5")
            If .Comment Is Nothing Then
                .AddComment Text:=.Text
                .Comment.Visible = True
            End If
        End With
    End Sub
    

    使用Range对象的AddComment方法为单元格添加批注。

    编辑批注文本

    使用批注对象的Text方法,能够获取或修改单元格批注的文本。

    Sub Comment_Add()
        With Range("B5")
            If .Comment Is Nothing Then
                .AddComment Text:=.Text
                .Comment.Visible = True
            End If
        End With
    End Sub
    

    Comment对象的Text方法的语法格式如下。

    Text(Text,Start,Overwrite)
    

    参数Text代表需要添加的文本。

    参数Start指定添加文本的起始位置。

    参数OrverWrite指定是否覆盖现有文本。默认值为False(新文字插入现有文字中)。

    vbCrLf常量代表回车换行符。

    4.21 显示图片批注

    为单元格批注添加背景图片或将图片作为批注的内容

    Sub ChangeCommentShapeType()
        With Range("B3").Comment
            .Shape.Fill.UserPicture _
                ThisWorkbook.Path & "\Logo.jpg"
        End With
    End Sub
    

    Comment对象的Shape属性返回批注对象的图形对象

    Fill属性能够返回FillFormat对象,该对象包括指定的图表或图形的填充格式属性,UserPicture方法为图形填充图像

    4.22 设置批注字体

    单元格批注的字体通过单元格批注的Shape对象中文本框对象(TextFrame)的字符对象(Characters)进行设置。TextFrame代表Shape对象中的文本框,包含文本框中的文字。

    Sub CommentFont()
        Dim objComment As Comment
        For Each objComment In ActiveSheet.Comments
            With objComment.Shape.TextFrame.Characters.Font
                .Name = "微软雅黑"
                .Bold = msoFalse
                .Size = 14
                .ColorIndex = 3
            End With
        Next objComment
        Set objComment = Nothing
    End Sub
    
    

    4.23 快速判断单元格区域是否存在合并单元格

    Range对象的MergeCells属性可以判断单元格区域是否包含合并单元格,如果该属性返回值为True,则表示区域包含合并单元格。

    Sub IsMergeCell()
        If Range("A1").MergeCells = True Then
            MsgBox "包含合并单元格"
        Else
            MsgBox "没有包含合并单元格"
        End If
    End Sub
    

    对于单个单元格,直接通过MergeCells属性判断是否包含合并单元格。

    Sub IsMerge()
        If VBA.IsNull(Range("A1:E10").MergeCells) = True Then
            MsgBox "包含合并单元格"
        Else
            MsgBox "没有包含合并单元格"
        End If
    End Sub
    

    当单元格区域中同时包含合并单元格和非合并单元格时,MergeCells属性将返回Null.

    4.24合并单元格时连接每个单元格内容

    在合并多个单元格时,将各个单元格的内容连接起来保存在合并后的单元格区域中。

    Sub MergeValue()
        Dim strText As String
        Dim rngCell As Range
        If TypeName(Selection) = "Range" Then
            For Each rngCell In Selection
                strText = strText & rngCell.Value
            Next rngCell
            Application.DisplayAlerts = False
            Selection.Merge
            Selection.Value = strText
            Application.DisplayAlerts = True
        End If
        Set rngCell = Nothing
    End Sub
    

    使用TypeName函数判断当前选定对象是否为Range对象。

    将DisplayAlerts属性设置为False,禁止Excel弹出警告对话框。

    4.25 取消合并时在每个单元格中保留内容

    Sub UnMergeValue()
        Dim strText As String
        Dim i As Long, intCount As Integer
        For i = 2 To Range("B1").End(xlDown).Row
            With Cells(i, 1)
                strText = .Value
                intCount = .MergeArea.Count
                .UnMerge
                .Resize(intCount, 1).Value = strText
            End With
            i = i + intCount - 1
        Next i
    End Sub
    

    4.26 合并内容相同的单列连续单元格

    Sub BackUp()
        Dim intRow As Integer, i As Long
        Application.DisplayAlerts = False
        With ActiveSheet
            intRow = .Range("A1").End(xlDown).Row
            For i = intRow To 2 Step -1
                If .Cells(i, 1).Value = .Cells(i - 1, 1).Value Then
                    .Range(.Cells(i - 1, 1), .Cells(i, 1)).Merge
                End If
            Next i
        End With
        Application.DisplayAlerts = True
    End Sub
    

    使用For循环结构从最后一行开始,向上逐个判断相邻单元格内容的内容是否相同,如果相同则合并单元格区域。

    展开全文
  • Range 对象,代表某一单元格、某一行、某一列、某一选定区域(该区域可包含一个或若干个单元格)

    Range 对象,代表某一单元格、某一行、某一列、某一选定区域(该区域可包含一个或若干个单元格)

    (一)Range 的常见写法

    Sub rng()

    Range("a1").Select                      '选中a1单元格

    Range("a:a").Select                     '选中a列

    Range("1:1").Select                     '选中第1行

    Range("a1:b10").Select               '选中a1到b10的相连单元格

    Range("a1:d7 c4:e8").Select       '选中两个不相邻区域

    End Sub

    (二)Range 的变化写法

    Sub rng变化()

    Range("a1:b10").Select                                    '一般写法:选中a1到b10的相连单元格

    展开全文
  • 函数作用:按SplitType取得RangeName串值中的起始位置12 '7.函数作用:将金额数字转成中文大写....................13 '8.函数作用:计算某种税金..............................18 '9.函数作用:人民币大、小写转换......
  • Excel VBA - Range对象

    万次阅读 2011-10-27 10:30:02
    Rnd()函数 返回小于1,大于等于0的一个随机数 Cells(1, 1).Interior.ColorIndex = Int(56 * Rnd() + 1) 给单元格内部赋个随机的颜色 Cells(1, 1).EntireColumn 包含此单元格的列 Cells(1, 1).EntireRow ...
    Rows.Count    显示所有行的数目
    
    Columns.Count    显示所有列的数目
    Cells(Rows.Count, 1).End(xlUp).Row    显示第一列从下面数第一个有值的单元格的行号
    Cells(1, Columns.Count).End(xlToLeft).Column    显示第一行从右面数第一个有值的单元格的列号
    Cells(1, 1).BorderAround xlContinuous, xlThin    给A1单元格加入外边框Range("A1:B4").Borders.LineStyle. = xlContinuous    给这个区域加入边框
    Rows(1).AutoFit    为第一行分配合适的行距
    Columns(1).AutoFit    为第一列分配合适的列宽
    Rows(1).Delete    删除第一行
    Columns(1).Delete    删除第一列

    Cells(1, 1).MergeArea.Count    计算合并单元格的总单元格数
    Cells(1, 1).MergeArea.Rows.Count    计算合并单元格的行数
    Cells(1, 1).MergeArea.Columns.Count    计算合并单元格的列数
    Cells(1, 1).MergeCells    返回Boolean,True和False
    Rnd()函数    返回小于1,大于等于0的一个随机数
    Cells(1, 1).Interior.ColorIndex = Int(56 * Rnd() + 1)    给单元格内部赋个随机的颜色
    Cells(1, 1).EntireColumn    包含此单元格的列
    Cells(1, 1).EntireRow    包含此单元格的行
    Cells.Interior.ColorIndex = xlColorIndexNone    所有单元格五色
    Set rng = Application.Union(Target.EntireRow, Target.EntireColumn)    设置合并区域,注意Union方法是在Application下面的
    Set rng = Sheet1.UsedRange.SpecialCells(xlCellTypeFormulas)    找出具有公式的单元格区域
    Sheet1.Range("A:A").ClearContents    清除第一列的所有内容
    Sheet1.Range("A:A").Clear    清楚第一列的所有东西,包括值、格式等
    For Each rng In Sheet2.Range("A1:A40")    遍历区域内的每个单元格

    Range("A:A").Replace "区", "市"    替换
    Range("A:A").Replace What:="区", Replacement:="市"    替换

    Sheet1.Range("A1:G7").Copy Sheet2.Range("A1")    复制区域,高宽变化
    Sheet1.Range("A1:G7").Copy    复制区域
    Sheet3.Range("A1").PasteSpecial xlPasteColumnWidth    黏贴相同宽度,相同高度要自己设置

    Range("B1:B20").Validation.Add Type:=xlValidateList, Formula1:="A,B,C,D,E,F,G"    数据有效性

    Range("A1").TextToColumns Space:=True    通过不定数量的空格来分列字符串

    Cells(3, 4).Top    单元格顶部距离顶部的距离
    Cells(3, 4).Left    单元格左边距离左边的距离
    Cells(3)    表示第一行的第三列的单元格
    ActiveWindow.VisibleRange.Cells(3)    表示当前页面第一行的第三列的单元格
    Cells(1, 1).Previous.Select    向前移一个位置
    Cells(1, 1).Next.Select    向后移动一个位置

     公式计算 

    Range("C2").Formula = "= A2*B2"    简单相乘
    Range("C2").Copy Range("C3:C" & r)    复制单元格公式
    Cells(r + 1, 3).Formula = "=SUM(C2:C" & r & ")"    相加公式,也可以用Range
    Range("C2").FormulaR1C1 = "=RC[-2]*RC[-1]"    按照相对位置来算
    Range("C" & r + 1).FormulaR1C1 = "=SUM(R[-" & r - 1 & "]C:R[-1]C)"    同上,按相对位置来算,注意,向上是“-”
    展开全文
  • VBA函数定义及说明

    千次阅读 2020-06-24 11:18:28
    函数定义,函数返回对象,默认参数,不定长参数
  • 使用Excel VBA操作当然是又准确又高效了。 第一种方式是:1、首先获取最后一行数据所在行数;2、从最后一行开始到第一行逐行检查是否是有效数据行,如果不是则整行删除;3、运行的结果就仅剩有效数据
  • 6个简单而有用的VBA自定义函数

    千次阅读 2019-11-29 07:45:14
    VBA内部有许多有用的内建函数,但对于好些常规任务(或常见的问题)仍然需要编写自定义函数,这些问题是比较通用的。如检查一个文件是否存在等。 这里包括了6个非常有用自定义VBA函数,你可以简单的复制这些代码到你...
  • VBARange的使用方法-Excel VBA学习

    千次阅读 2011-08-17 17:15:22
    选定区域拷贝以下代码报错: ActiveChart.SetSourceData Source:=Sheet4.Range(Cells(1, 1), Cells(max, sampleNo + 1))  我当时百思不得其解,
  • VBA JOIN函数详解

    万次阅读 2019-02-03 05:52:17
    VBA SPLIT函数详解 SPLIT函数实现了字符串拆分,相应的逆运算可以使用JOIN函数,其语法格式如下。 Join(sourcearray[, delimiter]) 参数 含义 sourcearray 必选参数,包含被连接子字符串的一维数组 ...
  • VBA之使用自定义函数

    千次阅读 2020-03-29 19:33:20
    如何在vba中使用自定义的函数呢? 首先在模块里定义好函数,然后注意要往里面传参 然后在excel单元格里调用该函数 1.需求1,判断性别 代码如下 Function zmj(x) zmj = (x / 6.03) - x * 0.03 End Function Function ...
  • 他山之石——VBA自定义函数

    千次阅读 2018-06-24 23:24:50
    VBA自定义函数自己是最近才开始使用的。其好处是可在工作表中直接调用,很方便。这里,这位老师总结的很好,学习了!'1 什么是自定义函数? '在VBA中有VBA函数,我们还可以调用工作表函数,我们能不能自已编写函数...
  • VBA Find函数的常见用法

    万次阅读 2018-05-04 21:47:26
    学习杨老师的全民一起vba课程内容整理:Find语法: Range.Find(What,After,LookIn,LookAt,SearchOrder,SearchDirection,MatchCase,MatchByte,SearchFormat)()What:唯一一个必选参数,含义为需要查询的内容,...
  • 6.按SplitType取得RangeName串值中的起始位置 7.将金额数字转成中文大写 8.计算某种税金 9.人民币大、小写转换 10.查汉字区位码 11.把公元年转为农历 12.返回指定列数的列标 13.用指定字符替换某字符 14.从右边开始...
  • IF(CELL("type",B9)="V",B9*2,0) IF(CELL("ADDRESS",B14)="$b$14",B14*2,0)
  • Range并不是Excel中的函数,而是VBAVBA代码中最常用的对象,Range对象可以是某一单元格、某一单元格区域、某一行、某一列、或者是多个连续或非连续的区域组成的区域。下面一个简单的VBA程序,可以全面地理解Range...
  • vba 常用函数详解.doc

    2021-07-29 02:07:50
    有关在 Visual Basic 中使用 Find 工作表函数的详细信息,请参阅在 Visual Basic 中使用工作表函数。 expression.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, ...
  • VBA函数 find

    千次阅读 2019-06-11 15:30:00
    Range.Find 方法 (Excel) 在区域中查找特定信息。 语法 表达式.Find (What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat) expression 一个表示 Range 对象的变量...
  • 相关知识点 Ubound(s):一维数组最大下标 Lbound(s):一维数组最小下标 Dim s(2 to 5,3 to 7) Ubound(s,1) Ubound(s,2):二...Range.hasFormula:判断单元格是否是公式,是公式就返回Ture,否则返回Fa...
  • VBA 自定义函数

    2013-06-12 21:50:46
    概念了解一、什么是函数一个函数就是预定的一个计算公式,可以快速地完成一个特定的计算。如:sum,indexetc。二、自定义函数自定义函数是用户自己编写的函数;一个自定义函数就是一个function过程;编写了一个...
  • 【Excel VBA】在VBA中调用函数

    万次阅读 2019-03-23 11:10:15
    EXCEL的表函数也可以直接在VBA中直接调用执行,具体调用格式如下: 调用方法1:变量对象= Application.WorksheetFunction.表函数(表函数参数) 实例:Range("d8") = Application.WorksheetFunction.CountIf(Range...
  • 第040篇:VBARange 引用与变量

    千次阅读 2020-05-22 22:06:09
    (一)Range 的相对引用写法 相对引用:Range("地址区域").Range("地址区域") Sub 相对引用写法() Range("b2:d4").Range(b2).Select '第二个范围参照前一个Range的左上单元格 Range("b2:d4").Range(b2) = "我被...
  • 除了内置函数外,VBA还允许编写用户定义的函数。 在本章中,我们将学习如何在VBA中编写自己的函数函数定义 一个VBA函数可以有一个可选的return语句。如果要从函数返回值,则可使用return语句。例如,可以在一个...
  • [code="js"] 方式功能:某个范围的数然后...Function isinrange(quyu As Range, xiao As Integer, da As Integer) As String Dim flag As Boolean flag = False For i = xiao To da For Each ...
  • Sub t1() Dim fNum As Collection ...numStr = "全民VBA" Set fNum = findNum(numStr) For Each num In fNum Range(num).Interior.ColorIndex = 0 Next num End Sub Function findNum...
  • VBA函数

    2021-05-15 12:35:46
    文章目录VBA函数excel函数对应的vba函数countavlookupexcel特有函数vba特有函数vba 字符串函数instrsplitvba 常用函数错误处理控制输入的格式自己写函数带参数的sub代码复用 没完成的任务:张三李四登录p=8 VBA...
  • VBA Excel 自定义函数不能调用成功的问题的解决方法问题以及解决方案的列举(持续更新中) 问题以及解决方案的列举(持续更新中) 自定义函数是自动化各种Excel重复操作的重要函数,我们可以用它实现各种自己的奇葩...
  • 做excel发现现有的函数功能不够用,就自学了一下VBA写了第一个新函数:根据条件连接字符串 比如count()有countif()和countifs(),sum()有sumif()和sumifs(),但是concatenate()却没有类似concatenateifs()的函数,...
  • VBA exit退出循环和函数

    万次阅读 2018-03-04 21:13:36
    VBA退出循环用Exit语句,在循环中使用Exit语句相当于C/C++的break语句,而在函数中使用Exit语句则相当于C/C++的return语句。  一、退出循环。exit for退出for循环,exit do用于退出do 或 do while循环: '获取非...
  • & ActiveSheet.Range( " f5 " ) & " .pdf " , Quality:= xlQualityStandard, _ IncludeDocProperties: = True , IgnorePrintAreas:= False , OpenAfterPublish:= _ True End With End If ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,399
精华内容 1,759
关键字:

vbarange函数

友情链接: uszdnbda.zip