我们可以对表做哪里操作?无非是增删改查,也就是方法
有哪些信息可以获取?也就是属性;
关于表的名字?
我们知道我们可以对表进行重命名,那我们命名的那个名字算是表的名字吗?可以算是,这个表可以叫某个名字,那个表也可以叫这个名字,并不唯一;但表还有一个其它的名字,那就是一个绝对的名字,这个绝对的名字在VBA当中可以看到,比如第一张表,往往他的绝对名字就叫做sheet1;类似于名字与身份证好的区别;
选择某张表,通过绝对名字,如下所示:
sub shishi()
sheet1.select
end sub
选择某张表,通过最直观的名字,假如sheet1那张表的名字叫1月的话,如下所示:
Sub shishi2()
Sheets("1月").Select
End Sub
上面这两种方式,第一种是强引用,第二种是弱引用,其实还有第三种,第三种比较有意思,不管你的名字是什么,就按照常数量进行排序,1就是排在前面的第1张表,2就是排在前面的第2张表,依次类推;
Sub shishi3()
Sheets(1).Select
End Sub
为什么会这有这么多表示某张表的办法?其实是应用于不同的场景,我们来用单元格来举例子,比如a1单元格,我们可以通过[a1]来表示,也可以通过range("a1")来表示,后者看起来麻烦,但后者支持变量,而前者不支持;
在当前表的前面添加一张表
sub shishi()
sheets.add
end sub
在第三表张的后面插入6张,指定位置,还可以通过before
sub shishi6()
sheets.add after:=sheet3,count:=6
end sub
我们可以插一张,然后通过循环执行100次,如下所示。
sub shishi()
for i = 1 to 100
sheets.add
next
end sub
我们使用range的时候,默认操作都是当前这张表,那我们通过sheets与range连用时,就可以突破这个限制,可以指哪打哪了,如下所示,直接指名表3的a1接口。
sub shishi9()
sheet3.range(a1)=100
end sub
count一看就是用来计数的,就是算一个当前有几张表;
Sub shishi()
Range("a1") = Sheets.Count
End Sub
count的作用;
比如我们想要写一个脚本,永远在当前表的最后面插入表,这样的话通过before或after直接写死就无法实现,我们可以在after后面跟一个变量,而这个变量就是当前表的总和;
sheets.add after:=sheets(sheets.count)
属性使用的时候都是带一个等号,如上面的例子所示;方法往往是一个动作,比如count;
改表名
将第一张表的名字改成8月。
sheet1.name = "8月"
第一个新的工作簿当中,新建第二张表叫二月,新建第三张表是三月,新建第四张表叫四月,就这样连续创建10张表;
思路,这个题目当中肯定要使用for循环,还要使用add和count来实现每次都在最后一张表后面新建一张表,还要使用到name进行改名;
for i = 2 to 10
sheets.add after:= sheets(sheets.count)
sheet(sheets.count).name = i & "月"
next
上山容易下山难,add简单,而delete要难一点;
关闭警告,一般是固定的的格式,当我们删除一张表的时候一般都是会先关闭告警,否则,每次都会弹出一个框,问我们是否要删除,当我们做完操作之后,又要把这个报警给打开,否则后续操作也会有问题;
Sub shishi()
‘关闭报警
Excel.Application.DisplayAlerts = False
‘删除sheet3
Sheet3.Delete
‘打开报警
Excel.Application.DisplayAlerts = True
End Sub
这个问题思路分成两步,第一步是新建100张表,第二步才是删除;
对于新建100张表,我们又有多种思路,我们可以通过add+count+after直接新建100张表,我们也可以通过for+add将新建1张表循环100次;
我们主要看一下删除如何删除呢?我们也可以通过delete+for循环,永远删除第1张表,删除的次数是表的总数;
Sub xinjian()
Dim i As Integer
For i = 1 To 100
Sheets.Add
Next
End Sub
Sub shishi2()
‘删除100张表,但当前总数是101张,最后一张是无法删除的;
Excel.Application.DisplayAlerts = False
Dim i As Integer
For i = 1 To 100
Sheets(1).Delete
Next
Excel.Application.DisplayAlerts = True
End Sub
在上面我们新建和删除都是用的for,但实际上新建不用for也是可以的,比如下面我们换一个方法;
Sub xinjian2()
Sheets.Add Count:=10
End Sub
在使用copy的时候要注意,如果直接写sheet1.copy会新建一个工作薄,为什么会这样呢?因为sheet1.copy的话并没有指定复制到什么地方去,默认的情况是新建一个工作簿,将表复制到新建的那个工作簿当中,比如:
sub shishi()
sheet1.copy after:=sheet3
endsub
上述这个案例就是复制sheet1到sheet3的后面,那我们思考一下,
原文:https://www.cnblogs.com/yizhangheka/p/14507515.html