VBA学习笔记之单元格

‘单元格对象在VBA中一个非常基础,同时也很重要的。
‘它的表达方式也是非常的多样化。
‘----------------------------------------------------
‘Range 对象
‘代表某一单元格、某一行、某一列、某一选定区域(该区域可包含一个或若干连续单元格区域),或者某一三维区域。

‘Range ("文本型装单元格地址")

‘range的常见写法
Sub rng()
Range("a1").Select         ‘单元格
Range("a:a").Select        ‘列
Range("1:3").Select       ‘行
Range("a1:b10").Select     ‘相邻区域
Range("a1:d7 c4:e8").Select  ‘不相个邻区域(同时选择多个不同区域按住CTRL选择)
End Sub

  Range("a1:d7 c4:e8").Select 注意这里d7后面是空格表示取二者区域的交集若为逗号,则是取二者区域的并集

‘写法:Range ("文本型装单元格地址1","文本型装单元格地址2")
‘range的变化写法
Sub rng变化()
Range("a1:b10").Select ‘一般写法
Range("a1", "b10").Select ‘变化写法1
Range(Range("a1"), Range("b10")).Select ‘变化写法2
Range("a1") = 123
End Sub

‘注意:
‘1.如果在range前没有指定工作表,则默认为活动工作表
‘2.如果对象不是活动工作表(如活动图表),则上面的代码也会出现错误

Sub 单元格对象例子()
Debug.Print Range("a:a").Count ‘计数工作表最大的行数
Debug.Print Range("1:1").Count ‘计算工作表最大的列数
Debug.Print Application.CountA(Range("a:a")) ‘计算工作表已使用的行数  ‘CountA计算有多少个非空单元格’
Debug.Print Application.CountA(Range("1:1")) ‘计算工作表已使用的列数
End Sub

  下面是动态单元格的引用(事先不清楚要引用的单元格)(用变量代替)

‘1.range("地址区域").range("地址区域")
Sub 序号表示法()
Range("b2:d4").Range("b2").Select ‘相对引用的写法‘
‘参照前一个range的左上单元格
End Sub

‘2.range地址区域中支持变量
Sub range的变量支持()
Dim a%
a = 3
Range("a" & a).Select
Range("c3:e5")(2).Select
End Sub

Sub 实例1动态选单元格或区域()
Dim i%
i = Application.CountA(Range("c:c")) ‘找到c列中已使用的最后一个单元格位置
Range("c" & i).Select ‘选择C列最后一格
Range("a1", "c" & i).Select ‘选择A1到C列的最后一格(方法一)
Range("a1:c" & i).Select ‘选择A1到C列的最后一格(方法二)
‘小结:动态单元格区域的定位,可以应用到单据的保存等实际工作中
End Sub


Range的引用:

Sub test()
Range("a1:c3")(3).Select
Range("a1:c3")(4).Select
End Sub

  结果第一次选择的是C1,第二次选择的是A2

总结:range(......)(number)引用的顺序是从左往右,然后从上往下,并且number是对前面区域的相对位置的引用,当然number可以为(2,3)这样的坐标

即:number是相对引用,并且有一定顺序

时间: 08-06

VBA学习笔记之单元格的相关文章

VBA学习笔记之单元格查询系统制作

1 Sub 自己写查询系统() 2 end_num = Columns(1).Find("*", searchdirection:=xlPrevious).Row '动态找到A列的最后一个单元格 3 k = 1 4 m = 1 5 Range(Cells(3, "h"), Cells(999, "l")).Clear 6 For Each Rng In Range("a2:" & "a" &

VBA学习笔记之单元格格式实例

1 Sub 格式化工资条() 2 Dim i% 3 i = Cells(Rows.Count, 1).End(xlUp).Row 4 For j = 1 To i 5 If j Mod 2 Then 6 'If j Mod 2 =1 Then 与上一句等效,因为1相当于Ture这个逻辑值,0相当于False 7 '这一句是对奇数行进行操作 8 With Cells(j, 1).EntireRow.Range("a1:g1").Font 9 'EntireRow 选取到整行 10 .Bo

VBA学习笔记之VBA学习思路

进阶的知识点 1. SQL查询语句和ADO2. 正则表达式和网抓3. 窗体与控件4. API 类模块 等等 作者:SOROSay链接:https://www.zhihu.com/question/26078625/answer/132542043来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 1小时 熟悉数据类型.变量.常量和运算符 1.了解VBA有哪些数据类型 2.知道如何定义变量,了解public/dim/private定义变量时的区别 3.知道如何定义常量

在Excel里用vba给合并的单元格添加注释

Excel里使用VBA对已经合并的单元格添加注释,直接使用AddComment会报: 运行时错误 '1004':应用程序定义或者对象定义错误 找了很多文章都没找到怎么解决,最后发现在AddComment之前,先ClearComments一下,就好了 Excel using vba to add comment to a merged cell if occur runtime error 1004, before invoking addcomment, first  invoke ClearC

VBA学习笔记(4)--数组和单元格互相转换

说明(2017.3.23): 1. VBA的数组还是很难用的,其实就是非常难用! 2. 要先定义一个数组,可以是空的,也可以里面写个数字作为数组长度. 3. 如果是空数组,可以后面redim重新定义数组长度.如果不是空的,再用redim就会报错"数组维数已定义"! 4. dim里面不能用变量,报错"只能用常数表达式",里面只能用具体数字. 5. redim不能重新定义数组维数,就是说本来dim了一个一维数组,redim不能把它改成二维数组. 6. redim里面貌似

VBA学习笔记之合并单元格

Range.Merge 注意合并区域左上单元格 1 Sub 太复杂不过也行() 2 num = Application.CountA([a:a]) 3 For i = 2 To num 4 If Cells(i, 1) = Cells(i + 1, 1) Then 5 n = n + 1 6 Else 7 Range(Cells(i - n, 1), Cells(i, 1)).Merge 8 n = 0 9 End If 10 Next 11 End Sub 1 Sub 改进版() 2 Appl

VBA学习笔记之End属性&查找最后的单元格方法总结

'Range.End 属性'返回一个 Range 对象,该对象代表包含源区域的区域尾端的单元格.'等同于按键 (End+向上键.End+向下键.End+向左键.End+向右键),或者CTRL+上下左右 '语法'表达式.End (Direction)'表达式 一个代表 Range 对象的变量.'方向 写法 值'向上 xlUp - 4162'向下 xlDown - 4121'向左 xlToLeft - 4159'向右 xlToRight - 416 1 Sub 分期付款最后月自己写() 2 num

HTML&CSS基础学习笔记1.18-表格的边框

今天的内容比较简单~来看看HTML里表格的边框是怎么设置的吧 表格的边框 前面为了方便观察表格单元格的情况,我们给<table>加了border属性.<table>的border属性规定围绕表格的边框的宽度. [border]属性会为每个单元格绘制边框,并用边框围绕表格.如果border属性的值发生改变,只有表格周围边框的尺寸会发生变化,表格内部的边框不受影响. <!DOCTYPE html> <html lang="en"> <h

iOS笔记【单元格右滑手势】 2017-09-09

// 响应单元格右滑手势 override func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? { let actionShare = UITableViewRowAction(style: .normal, title: "分享") { (_,IndexPath) in // 定义滑动菜单样式和标题 let ac