第1个回答 2020-11-13
各位朋友好,在上一讲VBA代码解决方案之二十一中,我们讲了如何引用工作表的方法,今日我们讲如何选择工作工作表的方法,在选择工作表时有选择单个工作表和选择多个工作表两种方案,今日会分别讲解:
一 选择单个工作表的方法
在VBA中需要激活或者选择某个工作表时可以使用Select方法,如下面的代码所示。
代码一: Sub MySelectSh1()
Worksheets("Sheet1").Select
End Sub
上面的代码非常简单,却是非常有用的,在实际应用中应用的非常广泛。
在VBA中需要激活或者选择某个工作表时也可以使用Activate方法,如下面的代码所示。
代码二: Sub MyActivateSh2()
Worksheets("Sheet1").Activate
End Sub
Activate可以视为激活,激活后就可以在这个工作表中进行一些操作了。
代码解析:
a) MySelectSh过程使用Select方法选择“Sheet1”工作表,而MyActivateSh过程则使用Activate方法选择“Sheet1”工作表.
b) 从表面看两者的作用是相同的,但是如果“Sheet1”工作表是隐藏的,Activate方法可以正常运行,而Select方法将会出现错误,这一点要务必注意。
二 选择多个工作表的方法
如果需要同时选中工作簿中的多个工作表,则只能使用Select方法而不能使用Activate方法,如下面的代码所示。
代码三: Sub MySelectShs3()
Dim Shs As Worksheet
For Each Shs In Worksheets
Shs.Select False
Next
End Sub
代码四: Sub MySelectSheets4()
Worksheets.Select
End Sub
代码五: Sub MyArraySheets5()
Worksheets(Array(1, 2, 3)).Select
End Sub
代码解析:
a) MySelectShs过程遍历工作表并使用带参数的Select方法选中所有工作表。应用于Worksheet对象的Select方法的语法如下:Select(Replace)
参数Replace是可选的。如果该值为True,则用指定对象替代当前选定对象。如果该值为False,则延伸当前选定对象以包括任何以前选定的对象。
b) MySelectSheets过程使用Worksheets集合的Select方法选中集合中所有的对象。
c) MyArraySheets过程使用Array 函数返回工作簿中的前三张工作表并使用Worksheets集合的Select方法选中前三张工作表。
三:实例讲解
代码截图:
页面视图:
代码四的运行结果:
今日内容回向:
1 select 方法如何应用?
2 active 方法如何应用?
3 上述两种方有何不同?本回答被网友采纳
第2个回答 2018-11-23
我都忘了,你应该知道我的意思,不行再改改:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Dim rng1 As Range, st1 As Sheet
For Each st1 In Sheets
'For Each rng In Application.Intersect(Columns(1), Sheets(1).UsedRange)
For Each rng In Application.Intersect(Columns(1), st1.UsedRange)
If rng.Interior.ColorIndex <> xlNone Then
If rng1 Is Nothing Then
Set rng1 = rng
Else
Set rng1 = Union(rng, rng1)
End If
End If
Next rng
Next st1
rng1.Select
Application.ScreenUpdating = True
End Sub本回答被网友采纳