Worksheet对象应用大全(3)-UsedRange属性详解

更新时间:2024-06-20 17:41:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Worksheet对象应用大全(3)-UsedRange属性详解

2009年07月20日, 1:36 下午 分享到微博:

(3 人投票, 平均: 5.00 out of 5)这是在以前的博客中发表的一篇日志,对其内容稍加整理并补充后,辑录于此,作为VBA应用大全系列的一部分。 关于UsedRange属性的基本概念

UsedRange属性应用于Worksheet对象,返回Range对象,代表指定工作表中已使用的区域,即返回工作表中已使用的单元格区域。因此,该属性也可以用于选取单元格区域。 下面用一个简单的例子来说明UsedRange属性的功能。如下图1所示的工作表:图1:一个带有数据的工作表 然后,在VBE编辑器中输入如下代码:Sub sample01() Worksheets(\End Sub

代码运行后,上面的工作表显示如下图2所示:图2:代码运行后的工作表

即在指定工作表中(本例为工作表Sheet1)已使用的范围被全部选中。可以看出,UsedRange属性返回工作表中所有已使用范围的单元格区域,而不管该区域数据间是否有空行或空格。

UsedRange属性的一些常见用法

(1)返回工作表中已使用区域的行数或列数

语句Activesheet.UsedRange.Rows.count返回当前工作表中已使用单元格区域的行数。同样,语句

Activesheet.UsedRange.Columns.count返回当前工作表中已使用单元格区域的列数。在上例中,您可以在立即窗口中输入下面语句,将返回相应的值。 Activesheet.UsedRange.Rows.count 20

Activesheet.UsedRange.Columns.count 4

一般写法为<在此输入引用对象

>.UsedRange.Rows.Count和<在此输入引用对象>.UsedRange.Columns.Count。

(2)返回工作表中已使用单元格区域的地址

语句Activesheet.UsedRange.Address 返回当前工作表已使用单元格区域的地址。在上例中,您可以在立即窗口中输入下面语句,将返回已使用单元格区域地址为$A$1:$D$20。 Activesheet.UsedRange.Address $A$1:$D$20

一般写法为<在此输入引用对象>.UsedRange.Address (3)设置工作表中已使用单元格区域对象,并进行引用或

操作。如下代码所示:Dim cellRange As Range,RowNum As Long,ColNum As Long

Set cellRange=Worksheets(\设置已用单元格区域并赋值给变量

RowNum=cellRange.Rows.Count '已用单元格区域的行数 ColNum=cellRange.Columns.Count '已用单元格区域的列数UsedRange属性应用示例现在,我们举几个例子,进一步说明UsedRange属性的用法。[示例一]下面的程序在活动工作表已使用单元格区域中,当该区域不包含任何公式时,清除该区域不能打印的字符。其中,ActiveSheet.UsedRange 代表当前工作表中已使用单元格区域组成的Range对象。(By Chip Pearson) Sub CleanUp()

Dim TheCell As Range

For Each TheCell In ActiveSheet.UsedRange With TheCell

If .HasFormula = False Then .Value =

Application.WorksheetFunction.Clean(.Value) End If End With Next TheCell

End Sub

[示例二]下面的程序将当前工作表中已用单元格区域或所选单元格中第一个字符删除,其中,

ActiveSheet.UsedRange.Address代表当前工作表中已用单元格区域的地址。Public Sub

Delete_First_Character(Optional ByRef objRange As Range = Nothing) Dim objCell As Range On Error Resume Next

If (objRange Is Nothing) Then

Set objRange = Application.InputBox(Prompt:=\请选择单元格区域\

Title:=\删除第一个字符\ Type:=8, _

Default:=ActiveSheet.UsedRange.Address) '设置缺省选区为已用区域 End If

Err.Clear

Set objRange =

objRange.SpecialCells(xlCellTypeConstants)

If (Err.Number <> 0&) Or (objRange Is Nothing) Then

MsgBox \在指定的单元格区域中没有符合要求的单元格.\

vbExclamation Or vbOKOnly, _ ActiveWorkbook.Name Exit Sub End If

On Error GoTo Exit_Delete_First_Character

Application.ScreenUpdating = False

For Each objCell In objRange objCell = Mid$(objCell, 2) Next objCell

Exit_Delete_First_Character:

On Error Resume Next

Application.ScreenUpdating = True End Sub

[示例三]在本示例中,当您在工作表的E列中的单元格中输入“finish”后,点击右侧按钮,将会对此行用指定的背景色进行标识,如图3和图4。图3:在E8单元格中输入“finish”图4:点击按钮后的效果

当您删除单元格E6中的数据,如下图5所示。图5:删除单元格E6中的数据图6:点击按钮后的效果 本示例中按钮所附加的代码如下,其中,

UsedRange.Rows.Count表示当前工作表中已使用区域的行数。Private Sub CommandButton1_Click() Dim r As Long

For r = UsedRange.Rows.Count To 1 Step -1 If Range(\

Range(\10

Next r

For r = UsedRange.Rows.Count To 1 Step -1 If Range(\

Range(\2

Next r End Sub

[提示]您可以将此代码放置在工作表变化事件中,这样,当工作表变化时,符合条件的相应行会自动标记背景色。 [示例四]本示例演示了删除行操作,即在活动工作表已使用单元格区域中,若某单元格中包含有“AND”(如为ANDXXX或XXXANDXX或XXXAND等,不区分大小写),则删除该单元格所在行。ActiveSheet.UsedRange.Find(what)表示在当前工作表所有已使用单元格区域中查找含有变量what中的内容的单元格,程序代码如下:(by Patrick Molloy)Sub Find_AND()

Dim rng As Range Dim what As String what = \ Do

Set rng = ActiveSheet.UsedRange.Find(what) If rng Is Nothing Then Exit Do Else

Rows(rng.Row).Delete

End If Loop End Sub

[提示]您可以更改程序中所查找的字符,从而实现您所想要的目的。 示例文档下载:

本文来源:https://www.bwwdw.com/article/u2m3.html

Top