分享

Excel中VBA编程学习笔记(十)

 hdzgx 2019-11-24

1、单元格引用

引用

含义

Range(“A1”)

单元格A1

Range(“A1:B2”)

A1到B2的单元格区域

Range(“C5:D9,G9:H16”)

多块选定区域

·Range(“A:A”)

A列

Range(“1:1”)

第1行

Range(“A:C”)

从A列到C列的区域

Range(“1:5”)

从第1行到第5行的区域

Range(“1:1,3:3,5:5”)

第1,3,5行

 

2、行列引用

引用

含义

Rows(1)

第1行

Rows

工作表上的所有行

Columns(1)

第1列

Columns(“A”)

第1列

Columns

工作表上的所有列

3、活动单元格

Sub test()

    Debug.Print ActiveCell.Address  '活动单元格地址

    [F3].Activate   '激活指定活动单元格

   

    For index = 1 To Selection.Count    '依次激活选中区域的每个单元格

        Selection(index).Activate

    Next

   

    Selection = 1 '设置选中单元格的值

End Sub

 

4、设置单元格对齐

Range.HorizontalAlignment属性设置单元格的水平对齐方式,取值如下:

名称

含义

xlCenter

水平居中

xlDistributed

分散对齐

xlJustify

两端对齐

xkLeft

左对齐

xlRight

右对齐

例:

Worksheets(1).Range("A:B").HorizontalAlignment = xlCenter

 

Range.VerticalAlignment设置垂直对齐方式,取值如下:

名称

含义

xlCenter

居中对齐

xlBottom

底端对齐

xlDistributed

分散对齐

xlJustify

两端对齐

xlTop

顶端对齐

例:

Worksheets(1).Range("A:B").VerticalAlignment = xlTop

 

Range.AddIndent属性指明当前单元格中文本的对齐方式为水平或垂直等距分布时,文本是否自动缩进,设置为true则会自动缩进.

 

5、单元格格式

Range.NumberFormat属性设置单元格数字格式.

例:

Worksheets(1).Columns(1).NumberFormat = "YYYY:MM:DD"

Worksheets(1).Columns(1).NumberFormat = "general"

 

Sub test()

   Debug.Print [a1].NumberFormatLocal   '获取a1单元格格式

   [a1] = "1993/12/25"

   [a:a].NumberFormatLocal = "yyyy年MM月dd日 hh时mm分ss秒"  '设置单元格格式

End Sub

Worksheets(1).Columns(Range("BD1").Column).WrapText = True     ‘设置自动换行

Rem 保留两位小数,并且每三位使用逗号隔开

Workbooks(wbName).Sheets("Sheet1").Columns("J").NumberFormat = "#,##0.00"  

6、单元格字体及背景色设置

【例1】

Sub test()

   With [a1].Font

        .name = "微软雅黑"

        .Size = 12

        .Color = RGB(25, 230, 122)

        .Bold = True

   End With

  

   [a2].Interior.ColorIndex = 3 '背景色设置为红色

   [a3].Interior.Color = RGB(255, 0, 255)

End Sub

【例2】设置单元格中字符格式

Sub test()

   With Worksheets("Sheet2").Range("H1")

        .Clear

        .Value = "Y=X2+2X+3"

        .Characters(4, 1).Font.Superscript = True

        .Characters(1, 1).Font.ColorIndex = 3

   End With

End Sub

说明:将第4个字符设置为上标,第1个字符的颜色设置为红色。注意,在每个单元格中都是用行列两个标号来定位某个字符的,因为一个单元格可能有多行。

结果如下:

 

7、获取用户区域的行数及列数

rowCount = Worksheets(1).UsedRange.Rows.Count

colCount = Worksheets(1).UsedRange.Columns.Count

 

8、设置行高及列宽

Worksheets(1).Range("A:A").ColumnWidth = 20

Worksheets(1).Range("1:1").RowHeight = 120

选中区域列宽:Selection. Width;选中区域行高:Selection. Height;选中区域行数:Selection.Rows.Count;选中区域列数:Selection.Columns.Count;选中区域单元格数:Selection.count.

Rem 自动调整列宽

ThisWorkbook.Sheets("Sheet2").UsedRange.Columns.AutoFit

 

9、设置内容显示格式

Range.Font属性代表指定对象的字体,有如下属性:

名称

说明

Background

返回或设置图表中使用的文本的背景类型

Bold

返回或设置是否加粗

Color

返回或设置对象的主要颜色

FontStyle

返回或设置字体样式,为String类型

Italic

返回或设置是否倾斜

Name

返回或设置字体名称

Size

返回或设置字号

Underline

下划线类型

Strikethrough

如果文本中间有一条水平删除线,则该属性值为true

 

With Worksheets(1).Range("1:1").Font

        .Size = 12

        .Italic = True

        .Color = vbRed

       

End With

 

10、获取或设置隐藏的行

Range.Hidden属性可以获取或设置隐藏的行.

例:

Dim result As String

   result = ""

   For i = 1 To Worksheets(1).UsedRange.Rows.Count

        If Worksheets(1).Rows(i).Hidden = True Then

            result = result & i & ";"

            Worksheets(1).Rows(i).Hidden = False

        End If

   Next

   Worksheets(1).Cells(1, 5) = "隐藏的行数为:" & result

 

11、自动填充

Range.AutoFill对指定区域的单元格执行自动填充功能。语法格式如下:

Range.AutoFIll(Destion,Type)

目标区域必须包含源区域。

【示例】

Set sourcetemp = Worksheets(1).Range("A2:A5")

Set destiontemp = Worksheets(1).Range("A2:A20")

sourcetemp.AutoFill Destination:=destiontemp

 

12、删除对象

Range.Delete删除对象,语法格式如下:

Range.Delete(Shift),参数Shift指定调整单元格以替换删除单元格的方式

【示例】将所有工作表内容为“张三”的单元格全部删除,并且单元格左移。

Dim tmp As Range

    For Each tmp In Worksheets(1).UsedRange

        If tmp.Value = "张三" Then

            tmp.Delete shift:=xlShiftToLeft

        End If

Next

 

13、拷贝与粘贴操作

Range.Copy将单元格区域数据复制到指定的区域或剪贴板中,语法格式如下:

Range.Copy(Destion)

如果省略Destion则复制到剪贴板中.

 

Range.PasteSpecial将内容粘贴到Range,语法格式如下

Range.PasteSpecial(Paste,operation,SkipBlanks,Transpose).

参数paste取值如下:

含义

xlPasteAll

粘贴全部内容

xlPasteAllExcepBorders

粘贴除边框外的全部内容

xlPasteMergingConditionalFormats

粘贴所有内容,并且合条件格式

xlPasteAllUsingSourceFormat

使用源主题粘贴全部内容

xlPasteFormulas

粘贴公式

xlPasteFormulasAndNumberFormats

粘贴公式和数字格式

xlPasteValues

粘贴值

xlPasteValuesAndNumberFormats·

粘贴值和数字格式

……

 

 

operation可选,要粘贴的操作,取值如下:

名称

描述

xlPasteSpecialOperationAdd

2

复制的数据与目标单元格中的值相加。

xlPasteSpecialOperationDivide

5

复制的数据除以目标单元格中的值。

xlPasteSpecialOperationMultiply

4

复制的数据乘以目标单元格中的值。

xlPasteSpecialOperationNone

-4142

粘贴操作中不执行任何计算。

xlPasteSpecialOperationSubtract

3

复制的数据减去目标单元格中的值。

 

SkipBlanks可选,如果设置为true,则不再粘贴剪贴板上区域中的空白单元格。

Transpose可选,如果设置为true,则在粘贴区域转置行和列,默认为false。

【示例1】

Sub test()

    Sheet2.Activate

   [a1:a9].Copy [f1]

   [d1:d9].Copy

   Sheet2.Paste Destination:=[g1]

End Sub

【示例2】

Worksheets(1).Range("A:B").Copy Destination:=Worksheets(2).Range("A:B")

Worksheets(1).Range("A:B").Copy  '拷贝到剪贴板

Worksheets(3).Range("A:B").PasteSpecial skipblanks:=True

 

14、向单元格填充相同数据

(1)Range.FillWodn方法

从指定区域的顶部单元格开始向下填充,直至该区域的底部。区域中首行单元格的内容和格式将复制到区域中的其它行。

(2)Range.FillUp方法

从指定区域的顶部单元格开始向上填充,直至该区域的顶部。区域中尾行单元格的内容和格式将复制到区域中的其它行。

(3)Range.FillLeft方法

从指定区域的最右边单元格开始向左填充。区域中最右列单元格的内容和格式将复制到区域中的其它列。

(4)Range.FillRight方法

从指定区域的最左边单元格开始向右填充。区域中最左列单元格的内容和格式将复制到区域中的其它列。

注:Range对象必须包括数据源单元格,并且数据源单元格为该区域的首单元格。

【示例】

Worksheets(1).Range("A2:H2").FillRight

 

15、删除重复的列

Range.RemoveDuplicates方法从指定的区域中删除重复的值。语法格式如下:

Range.RemoveDuplicates(Columns,Header)

参数说明:

Columns可选,搜索重复的列索引数组,如果省略该参数,则删除所有列都包含的记录;

header可选,指定第1行是否为标题行,xlNo为缺省值,xlYes表示是标题行。

【示例】当第一列与第二列相同时候表示重复,首行为标题行。

Worksheets(1).UsedRange.RemoveDuplicates Columns:=Array(1, 2), Header:=xlYes

 

16、排序操作

Range.Sort进行排序操作。语法格式如下:

Range.Sort(Key1,Order1,Key2,Order2,Key3,Order3,Header,OrderCustom,MatchCase,Oriention,SortMethod,DataOptionl,DataOptional2,DataOptional3)

key1,key2,key3为排序字段,order1, order2, order3为排序顺序,取值为xlAscending(升序)及xlDescending(降序)。

【示例】

Worksheets(1).UsedRange.Sort key1:=Range("A:A"), order1:=xlAscending, key2:=Range("B:B"), order2:=xlDescending, Header:=xlYes

resize属性

17、单元格输入公式或者数组公式

Sub test()

   Range("B1") = "=if(A1=""上海"",""√"",""×"")"   '在B1输入公式

   Range("B1:B3").FillDown  '从B1开始自动向下填充至B3

   Range("C1:C5").FormulaArray = "=row()"   '输入数组公式

  

   With Range("C2")

        If .HasArray = True Then      ‘判断该单元格是否存在数组公式

             .CurrentArray.FormulaArray = "=sum(Row(1:5))"  '将当前的数组公式都变为=sum(Row(1:5)),不只是改变C2单元格的数组公式

        Else

             .FormulaArray = "=100-row()"

        End If

   End With

End Sub

18、其它常用方法

方法

说明

Range.AutoFit

更改指定的列宽或行高以达到最佳匹配。

Range.AtutoFilter

筛选功能

Rnage.BorderAround

设置边框

Range.Clear

清除整个对象

Range.ClearComments

清除指定区域的所有单元格批注

Range.ClearContents

清除区域中的公式

Range.ClearFormats

清除对象的格式设置

Range.ClearHyperlinks

清除指定区域的所有的超链接

Range.Cut

将对象剪贴到指定的区域或剪贴板中.

Range.Find

查找操作

 

例:

Worksheets(1).Rows(1).AutoFit

Worksheets(2).UsedRange.ClearFormats

 

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多