VBA代码如何表示任意工作表

Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Dim rng1 As Range
For Each rng In Application.Intersect(Columns(1), Sheets(1).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
rng1.Select
Application.ScreenUpdating = True
End Sub

请教以上代码第四行,如何将sheet(1)表示为在任意工作表呢?换言之,希望代码在任意工作表都能运行,不是只在sheet1而已。

在VBA里有一个Application.Inputbox()的方法,基本上可以实现你提到的两个要求。

Set rng=Application.Inputbox()
这样返回的是一个你选择的单元格区域,至于你要提取选择的单元格区域还是其所在的工作表名称,都可以通过代码来完成的。

Application.Inputbox()方法的详细用法,请参考系统帮助。
给你个函数用:
---------------------
Function iExistsSheet(shNm) As Boolean
'检测当前工作薄中是否存在名字为 shNm 的工作表
On Error Resume Next
Dim sh As Worksheet
Set sh = Worksheets(shNm)
iExistsSheet = (Err.Number = 0)
Err.Clear
End Function
-----------------
下面是测试这个函数的程序:
Sub iTest()
Dim s As String, t As Boolean
s = "sheet1"
t = iExistsSheet(s)
MsgBox "工作表<" & s & ">" & IIf(t, "", "不") & "存在。"

'如果不存在,退出程序:
If Not t Then Exit Sub

'如果存在,并要使用这个工作表中的单元格 A1 的数据:
Dim ss
With Worksheets(s)
ss = .Range("A1")
MsgBox "工作表<" & s & ">中 单元格 A1 的值:" & ss
End With
End Sub
温馨提示:内容为网友见解,仅供参考
第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本回答被网友采纳
第3个回答  2018-11-23
Selection
上面就表示选中的单元格

VBA代码如何表示任意工作表
MsgBox "工作表<" & s & ">" & IIf(t, "", "不") & "存在。"'如果不存在,退出程序:If Not t Then Exit Sub '如果存在,并要使用这个工作表中的单元格 A1 的数据:Dim ss With Worksheets(s)ss = .Range("A1")MsgBox "工作表<" & s & ">中 单元格 A1 的值:" & ss E...

VBA 工作薄中所有工作表怎么用代码表示
代码如下:Sub main for each s in sheets'以此循环遍历所有工作表 if s.name= "ABC" then’如果工作表的名称为“ABC”...'则要执行的代码,此处省略,根据需要自行添加 exit for ‘找到工作表后,可以退出循环,提高效率 end if next end sub ...

用VBA编程时,如何对当前的工作表进行选定,
首先,选定一打开的工作薄,可以使用`Windows("abc.xls")`语句,其中"abc.xls"是工作薄的名称。接着,选定特定的工作表,使用`Sheets("Sheet1").Select`,这里的"Sheet1"是工作表的名称。如果需要选定单元格,可以使用`Range("a1").Select`或`cells(1,1).Select`,这里的"a1"或"1,1"是单元...

VBA里面,怎么表示工作呢?因为工作表的名字是在SHEET1里面的a列,a1,a2...
就用工作表的 标签名 就可以引用了,比如名字是 “表1”VBA 里面可以用一下代码表示:sheets("表1")

在Excel VBA中,如何在代码中表达变量的工作表名
b=1 x="测试表" & b sheets(x).select

excelVBA同时选择多个工作表的方法
如果要用VBA同时选择多个工作表,可以利用数组或设置“Select”方法的参数为“False”来扩展所选择的内容,如下面的一些代码:1.用工作表名称:假如工作表名称为“Sheet1”、“Sheet2”、“Sheet3”,同时选择这3个工作表:Sub SelectMultiSheets()Sheets(Array("Sheet3", "Sheet2", "Sheet1"))....

Excel VBA 执行时显示工作表
使用Application.Sendkeys模拟快捷键Alt+空格后N(最小化),最小化VBE窗口即可。在原代码开始处添加以下两句代码:Application.SendKeys "% ", True Application.SendKeys "n", True 缺点是Sendkeys存在Bug,会关闭NumLock小键盘锁。

如何用VBA在一个窗体显示多个工作表
1、双击sheet2 表中的B2单元格 输入公式:=IFERROR(VLOOKUP($A2,Sheet1!$A:$E,COLUMN(B1),FALSE),""),回车 然后再复制,粘贴到表格中B列至E列其他单元格(表头除外)见图三 2、双击sheet2 表中的B2单元格 输入公式:=IFERROR(F2*E2,0),回车 下拉到表格内的G列其他单元格 见图四 3、...

VBA代码,随机命名工作表
Sub 宏1() Dim i, st i = Empty For Each st In Sheets If st.Range("B1")="" Then st.Name = "待开单" & i i = i + 1 End If Next stEnd Sub

利用VBA代码实现自动隐藏、显示指定Excel工作表
10).Value If str5 = "AIRC" Then Sheet1.Visible =1 '显示工作表 NextEnd SubIf str5 = "AIRC" Then Sheet1.Visible =1 '显示工作表 你是试一下这样改。或者改成 善良的猪头3 If str5 = "AIRC" Then Sheet1.Visible =true '显示工作表这样的代码,试试。

相似回答