ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: 兰色幻想

[求助] 带你入门VBA,第五讲:如何控制单元格

[复制链接]

TA的精华主题

TA的得分主题

发表于 2006-7-13 22:59 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

第五讲的内容没有完全理解

第五讲的内容没有完全理解,以前四讲内容基本上都理解了,虽然来得很晚,但是看过大伙的跟贴还是收获很大,谢谢兰色幻想版主

TA的精华主题

TA的得分主题

发表于 2006-7-25 18:37 | 显示全部楼层
请问用VBA语句如何判断当前单元格是否在选择范围内?

TA的精华主题

TA的得分主题

发表于 2006-8-22 11:51 | 显示全部楼层
QUOTE:
以下是引用兰色幻想在2004-10-25 23:40:00的发言:

     其实这中间有个规律:如果你输入的是非数字的字符,即使你删除了,也被当做已用区域(已用过的区域),而当你删除的是你输入的数字时则不受这个限制)

这句话怎么理解?我运行的结果是无论是何种字符,只要删除,既不是已用过的区域

TA的精华主题

TA的得分主题

发表于 2006-8-22 15:44 | 显示全部楼层

由于先前四讲的基础,本章节相对来说简单一点,现总结如下:

本章主要讲述了在vba中如何控制单元格以及单元格区域

一、单元格表示方法

1、Range方法 (1)range("a1") 单一单元格 (2)range("a1:b10")连续单元格

(3)range("a1:a10,b1:c10,e2:e10")不连续多单元格,相当于union,不连续单元格引进变量

Sub test()
a = 1
b = 3
Range("a" & a & ":b" & b & ",e" & a & ":f" & b).Select

End Sub
注意逗号也在引号内。如果写成这样:

Range("a" & a & ":b" & b, "e" & a & ":f" & b).Select 他可是一个连续区域,其实质就是range("a1","c2").select他选定的是a1:c2连续区域

2、cells方法,cells表示单元格的集合,也就是所有的单元格,除此之外cells只能代表单一单元格,如果引入单元格区域就必须结合range解决

(1)cells(行号,列标) 单一单元格

(2)range(cells(irow,jcolumn),cells(mrow,ncolumn))他表示一个区域

3、其他

(1)offset(row,column)表示单元格偏移 一般表示如下:

range.offset(row,column)表示单元格或者单元格区域range以其右上角单元格为定点,向下偏移row行,向右偏移column列,实质上range的维数不变,只是发生了一些相对位移,右上角单元格也发生了位移

(2)resize(row,column)表示重新定义单元格的维数,维数发生变化,而右上角单元格不变,如:

Sub test6()
'a1:b2区域向下偏移3行,向右偏移1列,即b4:c5,实质上是移动区域右上角单元格,最终返回结果维数不变
Range("a1:b2").Offset(3, 1).Select
'a1:c3区域重新定义区域为4行5列,即a1:e4,实质上区域右上角不变,而维数改变,刚好和offset相反
Range("a1:c3").Resize(4, 5).Select
'a1:b2重新定义维数,行数在原来的基础上+2,列数在原来的基础上加4,即返回4行6列,也就是a1:f4
Range("A1:B2").Resize(Range("A1:B2").Rows.Count + 2, Range("A1:B2").Columns.Count + 4).Select

End Sub

(3)union(range1,range2)表示range1和range2的合并区域,取其并集

(4)intersect(range1,range2)表示range1和range2的公共区域,取其交集

Sub test8()
Dim Rng1 As Range
Dim Rng2 As Range
Dim UAimRng As Range
Dim SAimRng As Range
Dim Msg As String
Set Rng1 = [a1:c7]
Set Rng2 = [b5:e11]
Set UAimRng = Union(Rng1, Rng2)
'注意,如果不存在交集,则返回错误,故此处用on error resume next
On Error Resume Next
Set SAimRng = Intersect(Rng1, Rng2)
Msg = "区域" & Rng1.Address & "和区域" & Rng2.Address & "的合并区域为:" & UAimRng.Address
Msg = Msg & Chr(13) & Chr(13) & Chr(10)
Msg = Msg & "区域" & Rng1.Address & "和区域" & Rng2.Address & "的公共区域为:" & SAimRng.Address
MsgBox Msg
End Sub
(5)usedrange表示已使用过的单元格,返回一个矩形区域

二、零碎小知识

1、activesheet表示活动工作表

2、worksheets("sheet1")特指sheet1工作表,其中sheet1为工作表的名称

3、sheet1无论如何命名sheet1和sheets(1)都表示第一个工作表,工作表标签从左向右依次为第一个工作表、第二个工作表....

4、specialcells类似编辑定位功能,可以在excel中按ctrl+g编辑定位查看定位内容

  

n6XnwLdx.rar (11.5 KB, 下载次数: 38)

TA的精华主题

TA的得分主题

发表于 2006-8-28 20:32 | 显示全部楼层

谢谢斑竹,

上月买了本斑竹的 <Excel VBA基础入门>

感觉贴子比书还好

TA的精华主题

TA的得分主题

发表于 2006-8-28 21:00 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
如何将鼠标任意选择的某一行的行号赋给某一变量

TA的精华主题

TA的得分主题

发表于 2006-9-7 20:32 | 显示全部楼层

Range("a1") = ActiveCell.Row

学习啦,谢谢各位老师!

TA的精华主题

TA的得分主题

发表于 2006-11-5 14:55 | 显示全部楼层

都下载了,慢慢消化啊!

继续学习!

感谢各位老师!

TA的精华主题

TA的得分主题

发表于 2006-12-13 16:02 | 显示全部楼层

 

[em17][em17][em17]

不错啊,学了很多,还想请教一下楼上的兄弟你是怎么下载的呀?

TA的精华主题

TA的得分主题

发表于 2007-1-18 13:39 | 显示全部楼层

感谢兰老师,这此天辛苦了!

同时感谢hner的总结!

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-20 09:15 , Processed in 0.044663 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表