上几期手把手教大家如何用VBA代码来删除空行、如何显示行列号以及如何一键导出PDF。这些都在一个工作表里通过按钮的操作。

也就是说换个工作表都不能再用了,更别说换到另外一个工作簿了。

这里说一下工作簿和工作表的区别,工作簿是一个Excel文件(红框),工作簿英文叫workbook。而一个工作簿里有很多工作表(绿框),工作表英文叫worksheet。具体见下图:

如何区别工作簿和工作表的不同

这个请大家注意!这个在以后写代码时要特别小心,必须特别清楚,个中原因只能自己体会。

那回到正题,正如我上一期说的,我们下一步来如定制我们自己的Excel。

而开始之前,这里还需要注意Excel的版本问题,大家都知道Excel有32位和63位之分。我前一段时间更新换了64位(这玩意太坑了)。

结果发现方法还不一样。我会分开来说这两个版本如何的,请注意啊:

  1. 如果是32位的Excel,是通过把代码放在这个“个人宏工作簿“里才可以实现我说的这个功能。
  2. 如果是64位的Excel这个方法却不好使了,我试过没搞定,最后是通过加载宏的方法处理的。

所以这一期我先说32位下的Excel的处理方法:

第一步:我们要先启用”宏“,如果已经启用“宏”请略过。方法是打开任意一个Excel工作簿,点击左上角“文件”==》再点击“选项”==》再点击“信任中心”==》再点击“宏设置”

最后选中最后一项“启用所有宏。。。。”,点击“确定”。

如何启用宏

第二步:如果我们的Excel的主菜单上面没有“开发工具”,我们就把“开发工具”增加上去,如果有了”开发工具“也请就略过。添加的方法比较简单,先将鼠标放在主菜单位置,然后右击鼠标。

选中出现菜单中的“自定义功能区。。”,要接下来出现的窗口点击选中“开发工具”,然后确定。我们的主菜单里就可以找看到有“开发工具”了。

如何增加”开发工具“

第三步:我们来处理“个人宏工作簿”,因为前面说过我们要把代码放在“个人宏工作簿“里。正常情况下我们的电脑是没有这个文件的。我们创建“个人宏工作簿”才能出现。

一个最简单的办法:我们通过录制宏的方法来创建“个人宏工作簿”。

这里多说一句,录制宏是我们学习VBA的一个好方法,很多时候能帮我们大忙。那如何录制宏呢?

我们点击“开发工具”,在左边,点击”录制宏“,接下来的窗口,只需要在”保存到“里,选择“个人宏工作簿”,一定一定,切记切记!

接着在鼠标在工作表任意点击几下。然后再点击”停止录制“。这样“个人宏工作簿“就搞定了。

如何通过录制宏,新建个人宏工作簿

但是,这个“个人宏工作簿“放在一个系统指定的地方,我们要进去打开这个工作簿,它的位置在:C:Users用户名称(登录名)AppDataRoamingMicrosoftExcelXLSTART

我们一步一步打开这个文件夹,打开个人宏工作簿这个文件,然后进入VBA编辑器(不记得如何进的,可以查上几期的方法),就会发现模块1里有我们刚刚鼠标动作都被记录下来了。

然后我们将文后的这三个代码复制进去,见上图。记得设置这个”个人宏工作簿“为”隐藏“(视图==》隐藏),先保存一下再关闭!为什么要隐藏呢,你试试不隐藏,看看有啥效果,嘎噶。

第四步:我们最后来定制我们Excel,打开任意一个Excel工作簿,用第二步中提到的方法进入”自定义功能区“,右侧选择”主选项卡“,点击下方的”新建选项卡“,编辑成自己喜欢的名字,越霸气越个性越好,哈哈。

然后选中刚刚新建的选项卡,点击下面的”新建组“,在新建的选项卡下面新建三个组。组也可以自己命名,也可以不命名。

新建选项卡和组

第五步:也是最后一步,给这些新建组来指定宏。先选中我们刚刚新建三个组中的任意一个,在右侧栏中选择”宏“,下面会出现我们第三步粘贴进去的三个代码。

依次选中这三个代码,点击中间的”添加“按钮,将它们依次添加进去,当然你也可以修改名称和图标,选择你喜欢的样子。

指定宏


最后我就会看到我们的主菜单就会变成下面这个样子。也可以试试这几个命令,是不是觉得通打天下了,瞬间开启了另外一个世界呢。

我的地盘我做主


在别人面前,打开Excel. 是不是觉的有一点点吊呀!

It's your time to show off!


以下是上文提到的删除空行、另存为PDF和显示行列号的三个小工具的代码:

Sub ShowRowColumNo()

MsgBox "当前行号:" & ActiveCell.Row & Chr(13) & "当前列号:" & ActiveCell.Column

End Sub

Sub SaveAsPDF()

On Error Resume Next

Dim sName

sName = ActiveWorkbook.path & "" & Split(ActiveWorkbook.Name, ".")(0) & ".pdf"

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=sName, Quality:=xlQualityStandard, _

IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=True

End Sub

Sub DeleteEmptyRow()

Dim i

Application.DisplayAlerts = True

For i = ActiveSheet.UsedRange.Rows.Count To 2 Step -1

If Application.WorksheetFunction.CountA(Rows(i)) = 0 Then

Rows(i).Delete

End If

Next

Application.DisplayAlerts = False

End Sub


其它的工具,就照葫芦画瓢的事情!祝大家玩得愉快!