首页 > 其他 > 详细

操作工作表

时间:2021-03-09 22:22:14      阅读:31      评论:0      收藏:0      [点我收藏+]

操作工作表

基础

我们可以对表做哪里操作?无非是增删改查,也就是方法

  • select
  • add
  • delete
  • copy

有哪些信息可以获取?也就是属性;

  • 表的名字,也就name
  • 表的数量,也就是count

关于表的名字?
我们知道我们可以对表进行重命名,那我们命名的那个名字算是表的名字吗?可以算是,这个表可以叫某个名字,那个表也可以叫这个名字,并不唯一;但表还有一个其它的名字,那就是一个绝对的名字,这个绝对的名字在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")来表示,后者看起来麻烦,但后者支持变量,而前者不支持;

进阶操作

add

在当前表的前面添加一张表

sub shishi()
    sheets.add
end sub

在第三表张的后面插入6张,指定位置,还可以通过before

sub shishi6()
    sheets.add after:=sheet3,count:=6
end sub

shetts与for连用

我们可以插一张,然后通过循环执行100次,如下所示。

sub shishi()
    for i = 1 to 100
        sheets.add
    next
end sub

sheets表与range连用

我们使用range的时候,默认操作都是当前这张表,那我们通过sheets与range连用时,就可以突破这个限制,可以指哪打哪了,如下所示,直接指名表3的a1接口。

sub shishi9()
    sheet3.range(a1)=100
end sub

range与count连用

count一看就是用来计数的,就是算一个当前有几张表;

Sub shishi()
    Range("a1") = Sheets.Count
End Sub

count的作用;
比如我们想要写一个脚本,永远在当前表的最后面插入表,这样的话通过before或after直接写死就无法实现,我们可以在after后面跟一个变量,而这个变量就是当前表的总和;

sheets.add after:=sheets(sheets.count)

属性与方法

属性使用的时候都是带一个等号,如上面的例子所示;方法往往是一个动作,比如count;

中阶操作

name

改表名
将第一张表的名字改成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

高级操作

delete

上山容易下山难,add简单,而delete要难一点;

关闭警告,一般是固定的的格式,当我们删除一张表的时候一般都是会先关闭告警,否则,每次都会弹出一个框,问我们是否要删除,当我们做完操作之后,又要把这个报警给打开,否则后续操作也会有问题;

Sub shishi()
‘关闭报警
Excel.Application.DisplayAlerts = False
‘删除sheet3
Sheet3.Delete
‘打开报警
Excel.Application.DisplayAlerts = True
End Sub

新建100张,然后再删除掉;

这个问题思路分成两步,第一步是新建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 表

在使用copy的时候要注意,如果直接写sheet1.copy会新建一个工作薄,为什么会这样呢?因为sheet1.copy的话并没有指定复制到什么地方去,默认的情况是新建一个工作簿,将表复制到新建的那个工作簿当中,比如:

sub shishi()
    sheet1.copy after:=sheet3
endsub

上述这个案例就是复制sheet1到sheet3的后面,那我们思考一下,

操作工作表

原文:https://www.cnblogs.com/yizhangheka/p/14507515.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!