excel宏编程代码例子_VBA教程连载:第八节:了解Excel基本结构(2)

本文介绍了Excel VBA中关于Worksheet的引用方法,通过实例演示了如何批量复制工作表并重命名,讲解了连接符号"&"的作用,以及在处理0开头的学号时如何使用字符串和变量。文章还提醒了在处理特定情况时需要的if判断,提供了一个实用的VBA代码示例。
摘要由CSDN通过智能技术生成

上节,我们讲到了Excel五大结构的range和value结构,也就是单元格和单元格属性。这节,我们开始分析worksheet结构。

一、了解Worksheet引用方法

在将之前,我们先录一个宏,测试一下。录制宏的内容,就是在sheet2工作表的range(“A1”)单元格写入”1″,录制完成的代码如下:

Sub 测试sheet2()'' 测试sheet2 宏''Worksheets("Sheet2").Select '选中sheet2工作表Range("A1").Select '再选中A1单元格ActiveCell.FormulaR1C1 = "1" '在输入框输入"1"End Sub

从上面的代码可以看出,工作表在引用的时候,采用的不是worksheet,而是用worksheets。那么问题来了,两者有啥区别呢?

Worksheet 与 Worksheets

worksheet:单指一张工作表,它只是单独指一个名词。

worksheets:指很多个工作表的集合,只有使用它,才可以引用工作表

举个栗子,我要找某个人,worksheet就是指人,worksheets,就是某些人的集合,比如某个班,某个村。只有通过worksheets,才能正确引用工作表。同理,Workbook也要通过Workbooks才能引用。

二、实战篇——写一个批量复制工作表的宏

假设现在小编正在做一个老师,需要把学生的学号,成绩单录入,打印出来。假设班级上共有88位学生。小编需要做多个工作表,每个工作表里面录入学生的学号(其它的姓名,班级,成绩本节课暂时不录入),并且每个学生都占用一张工作表。工作表如下:

cdb69c08edbe33f5323a68a968fd6c8f.png

小编瞎编的成绩单

我们要做的就是,复制一个单元格,重命名为其学号,然后再填入学号,然后继续复制工作表。假设学号以001开头,088结尾。

我们可以先试着复制一张表格,填入一个学号试试。把这个过程录制下来,看看宏是怎么写的。总共分为以下几个步骤。

1.设置学号栏的单元格格式为文本(非文本没法填入0开头的数字)

2.填入学号“001”

3.复制“001”工作表,并将它放到最后面

4.重命名工作表“001(2)”为“002”

5.在学号单元格填入学号

Sub 看看宏怎么写的()'' 看看宏怎么写的 宏'Range("D2").Select '选中D2单元格Selection.NumberFormatLocal = "@" '将单元格格式设置为文本ActiveCell.FormulaR1C1 = "001" '输入框输入001Sheets("001").Select '选中工作表"001"Sheets("001").Copy After:=Sheets(1) '复制单元格,并且把他丢到工作表1后面Sheets("001 (2)").Select '选中新复制的001(2)工作表Sheets("001 (2)").Name = "002" '将它的工作表重命名为"002"Range("D2").Select '选中D2单元格 ActiveCell.FormulaR1C1 = "002" '填入数据002End Sub

可以看出,基本我们要循环利用的就是步骤3,4,5了

但是问题来了,我们怎么样,让001变成00i(i代表变量)?

如果是数字类型的话,我们可以利用a=000+i,但是,这,加起来后,不一定是三位数呀。

而且,它是文本类型,也就是字符串类型(也就是带双引号的),那他如何加入变量呢?

这里我们要提到一个vba常用的符号“&”——连接符号

在excel表格中,我们常用符号“&”来连接文本单元格,举个栗子:比如我们要将三个文本类型的单元格拼接到一个单元格里面,我们可以这么写

d089b48a2c10e4ec264a1f3e515592b0.png

利用与符号,可以轻松连接字符串与变量。我们只需要,把原来的“001”改成“00”&i即可。

Sub 看看宏怎么写的()'' 看看宏怎么写的 宏''Dim i As Integer '定义i为整数For i = 1 To 1 '写个循环,为后期做准备Sheets("00" & i).Select '选中工作表"00i"Sheets("00" & i).Copy After:=Sheets(i) '复制单元格,并且把他丢到工作表i后面Sheets(i + 1).Select '选中第二i+1个工作表Sheets(i + 1).Name = "00" & (i + 1) '将它的工作表重命名为00(i+1)Range("D2").Select '选中D2单元格Selection.NumberFormatLocal = "@" '设置为文本,以防万一ActiveCell.FormulaR1C1 = "00" & (i + 1) '填入数据00(i+1)NextEnd Sub

友情提醒:worksheets(),括号里面可以写数字,代表第几个工作表,也可以写双引号,代表工作表的名称,如果要重命名,建议用数字代表工作表。

运行这个宏后,发现基本ok。但是问题又来了。如果i循环到9的时候,最后两行代码”00″ & (i + 1) 是不是不适用了,这个时候就变成“0010”,所以我们要加入一个if判断。如果为9,后面的代码就改成 “0″ & (i + 1) ,如果为10的话,前面的两个 “00” & i 也不对了,不存在这个表格。所以我们这里也要加入一个if判断。最后代码如下:

5320971249aef2954be8b7c32d3f0e87.png

代码较多,这里就不粘贴了。需要的请关注公众号回复”代码8“获取代码以及示范表格链接。

注意”&“除了作为连接符号外,还有或的意思。比如if i>2 & i<0,就是就是两者同时满足一个即可。

而and 就是要两者同时满足,才能运行。

运行效果如下:

7e4e316470480c4c085cdb8de26cd591.png

今天就到这里了,我们下期再见。

前文回顾:

第七节:了解Excel基本结构(1)

第六节:VBA编程基础(续)

第五节:VBA编程基础

第四节:如何录制宏

第三节:运行一个宏试试吧

第二节:使用宏所需要的环境

第一节:什么是vba

下一节:

第九节:了解Excel结构(3)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值