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

Excel中VBA编程学习笔记(十)--单元格(cell)相关推荐

  1. Excel中VBA编程学习笔记(十二)--自动筛选

    Range.AutoFIlter方法可以进行自动筛选,语法结构如下: Range.AutoFilter(Field,Criteria1Operator,Criteria2,VIsibleDropDow ...

  2. Excel中VBA编程学习笔记(一)

    1.注释及编码规则 注释: 单引号:可以位于句子结尾或者单独一行: Rem:单独一行 编码规则: 如果VB中的关键字是由多个英文字母组成,则系统自动将每个单词的首字母转换成大写字母,其余字母一律转换成 ...

  3. Excel中VBA编程学习笔记(七)--窗口应用(WINDOW)

    1.修改并获取当前窗口标题 Private Sub test() Windows(1).Caption = "My Excel" MsgBox ("当前窗口标题:&quo ...

  4. Excel中VBA编程学习笔记(十一)--正则表达式

    在VBA中使用正则表达式受限需要引用Microsoft VBScript Regular Expressions 5.5类库.在VBA界面,"工具"-->"引用&q ...

  5. c修改datatable单元格的值_神奇的VBA编程:批量拆分单元格数据

    批量对单元格区域内每个单元格中的数据按照一定的规则进行拆分是职场工作中经常碰到的操作.Excel数据选项卡中"分列"提供了基础的功能.能帮助用户通过鼠标快速分列数据. 本篇< ...

  6. html怎么把excel表格合并单元格,Excel中如何快速合并多个单元格

    Excel是Microsoft为使用Windows和Apple Macintosh操作系统的电脑编写的一款电子表格软件.当我们制作表格中重复信息过多,通常会把重复信息的单元格进行合并.下面就给大家介绍 ...

  7. PHPSpreadsheet学习笔记——访问单元格

    文章目录 一.实例化对象 二.访问单元格 2.1获取单元格 2.2单元格赋值 2.3excel数据类型 2.3.1在单元格设置公式 2.3.2在单元格设置日期和时间值 2.3.3 设置带前导零的数字 ...

  8. vba excel学习笔记-从单元格获取数据,修改数据

    从单元格获取数据 获取sheet名字为 "sheetname"的表格中的第一行第五列的值 赋值给变量a a = Sheets("sheetname").Cell ...

  9. Excel中按方向键,没有跳动单元格

    联想ThinkPad笔记本无Scroll Lock键的解决办法 今天我朋友找我帮忙,因为他在Excel中按方向键,出现了类似滚动条的效果,即按下,表格就往下滚了一格.正常的情况应该是选中的单元格往下移 ...

最新文章

  1. HDU4080 Stammering Aliens(二分 + 后缀数组)
  2. 未来50年的神经科学会是什么样呢?
  3. Python Generators(生成器)——yield关键字
  4. 安装 | MatlabR2021bMac链接及Matlabx运行图基本运行代码与图像
  5. SIGIR 2019 eBay高精度召回任务挑战赛冠军团队DeepBlueAI技术分享
  6. java值传递和引用传递的题目_Java 值传递和引用传递
  7. 多线程-使线程具有有序性
  8. 编程通用知识 系统编程
  9. multipart form-data boundary 说明
  10. 小程序入门学习19--springboot之HelloWorld
  11. Teradata中的四舍五入问题
  12. 无聊特意去拍月亮。呵呵
  13. ubuntu使用笔记一
  14. 经典java算法大全
  15. java五子棋程序_Java五子棋游戏
  16. 【高等数学】高阶偏导数与隐函数的高阶偏导数的深度辨析
  17. Java 导出时序折线图到Excel
  18. Android ListView异步获取网络图片
  19. dism 错误 14
  20. 从学会用橡皮鸭 debug 的那天,我,走上一条不归之路

热门文章

  1. 教你1块钱解决魔法上网问题(合法!!!)
  2. 电商后台系统:管理后台篇之库存管理
  3. maven配置阿里云镜像仓库
  4. raid 磁盘列阵的使用
  5. RFID reader impinj r420 inventory
  6. springboot毕设项目酷玩平台设计43qgi(java+VUE+Mybatis+Maven+Mysql)
  7. windows7系统损坏修复_iPad 运行 win7 系统,微信 7.0.11 来了
  8. Kaggle座头鲸识别赛,TOP10团队的解决方案分享
  9. myeclipse5.1GA下WebService开发日记(2)
  10. 关于数据中台系统,需要了解哪些技术?