1.显示多个隐藏的工作表

如果你的工作簿里面有多个隐藏的工作表,你需要花很多时间一个一个的显示隐藏的工作表。

下面的代码,可以让你一次显示所有的工作表

Sub UnhideAllWoksheets()
Dim ws As Worksheet
 For Each ws In ActiveWorkbook.Worksheets
 ws.Visible = xlSheetVisible
 Next ws
End Sub

2.隐藏除了活动工作表外的所有工作表

如果你做的报表,希望隐藏除了报表工作表以外的所有工作表,则可以用一下代码来实现:

Sub HideAllExcetActiveSheet()
Dim ws As Worksheet
 For Each ws In ThisWorkbook.Worksheets
 If ws.Name <> ActiveSheet.Name Then
 ws.Visible = xlSheetHidden
 End if
 Next ws
End Sub

3.用VBA代码按字母的顺序对工作表进行排序

如果你有一个包含多个工作表的工作簿,并且希望按字母对工作表进行排序,那么下面的代码,可以派上用场。

Sub SortSheetsTabName()
Application.ScreenUpdating = False
Dim ShCount As Integer, i As Integer, j As Integer
ShCount = Sheets.Count
 For i = 1 To ShCount - 1
 For j = i + 1 To ShCount
 If Sheets(j).Name < Sheets(i).Name Then
 Sheets(j).Move before:=Sheets(i)
 End If
 Next j
 Next i
Application.ScreenUpdating = True
End Sub

4.一次性保护所有的工作表

如果工作薄里面有多个工作表,并且希望保护所有的工作表,那么下面的代码,可以派上用场。

Sub ProtectAllSheets()
Dim ws As Worksheet
Dim password As String
'用你想要的密码替换Test123
password = "Test123"
 For Each ws In Worksheets
 ws.Protect password:=password
 Next ws
End Sub

5.一次性取消所有的工作表保护

如果你保护了你所有的工作表,那么你只需要修改一下代码,就可以取消所有工作表的保护。

Sub ProtectAllSheets()
Dim ws As Worksheet
Dim password As String
'用你想要的密码替换Test123
password = "Test123"
 For Each ws In Worksheets
 ws.Unprotect password:=password
 Next ws
End Sub

需要注意的是,取消保护工作表的密码, 要与锁定工作表的密码相同,否则程序会抛出异常(出错)。

6.显示所有隐藏的行和列

下面的代码,可以取消所有隐藏的行和列。

如果你从别人那里获得一个Excel文件,并希望没有隐藏的行与列,那么下面的代码对你非常有用。

Sub UnhideRowsColumns()
 Columns.EntireColumn.Hidden = False
 Rows.EntireRow.Hidden = False
End Sub

7.取消所有的合并单元格

把多个单元格合并成一个单元格时常用的做法:

如果你的工作表里面有合并的单元格,使用下面代码可以一次性取消所有合并的单元格。

Sub UnmergeAllCells()
ActiveSheet.Cells.UnMerge
End Sub

8.保存带有时间戳的工作簿

很多时候,您可能需要创建工作的各个版本。

一个好的做法,就是在工作薄名称上,加上时间戳。

使用时间戳将允许您返回到某个文件,查看进行了哪些更改或使用了哪些数据。

下面的代码会自动保存工作簿在指定的文件夹中,并添加一个时间戳时保存。

Sub SaveWorkbookWithTimeStamp()
Dim timestamp As String
 timestamp = Format(Date, "dd-mm-yyyy") & "_" & Format(Time, "hh-ss") ThisWorkbook.SaveAs "C:UsersUsernameDesktopWorkbookName" & timestamp
End Sub

C:UsersUsernameDesktopWorkbookName 你可以制定文件位置和文件名。

"dd-mm-yyyy"指的的日期的格式。

"hh-ss"指的是时间的格式

9.将工作表另存为一个PDF文件

如果您使用不同年份或部门或产品的数据,可能需要将不同的工作表保存为PDF文件。

如果手动完成,这可能是一个耗时的过程,但vba确可以加快速度。

下面是一个将每个工作表保存为单独PDF的VBA代码

Sub SaveWorkshetAsPDF()
Dim ws As Worksheet
 For Each ws In Worksheets
 ws.ExportAsFixedFormat xlTypePDF, "C:UsersSumitDesktopTest" & ws.Name & ".pdf"
 Next ws
End Sub

在上面的代码中,我指定了要保存pdf的文件夹位置的地址。

请注意,此代码仅适用于工作表。

10.将工作簿另存为单独的PDF文件

下面是将整个工作簿保存为指定文件夹中的PDF格式的代码

Sub SaveWorkshetAsPDF()
ThisWorkbook.ExportAsFixedFormat xlTypePDF, "C:UsersSumitDesktopTest" & ThisWorkbook.Name & ".pdf"
End Sub

你可以修改储存文件的文件件。

注意:9~10代码保存为PDF文件,需要在工作表里面设置好打印的区域。如果有空的工作表,那么程序会报错。

11.将所有公式转换为值

如果工作表包含大量公式,并且要将这些公式转换为值,请使用此代码。

Sub ConvertToValues()
 With ActiveSheet.UsedRange
 .Value = .Value
 End With
End Sub

此代码可以自动将使用公式的值转换为值

12.有公式的单元格锁定

当您有大量的计算并且不想意外的删除或更改时,您可能希望使用把有公式的单元格进行锁定。

下面是将锁定所有具有公式的单元格的代码,而所有其它单元格都未锁定。

Sub LockCellsWithFormulas()
 With ActiveSheet
 .Unprotect
 .Cells.Locked = False
 .Cells.SpecialCells(xlCellTypeFormulas).Locked = True
 .Protect AllowDeletingRows:=True
 End With
End Sub

13.保护工作簿中所有的工作表

使用以下代码一次性保护工作簿中的所有工作表

Sub ProtectAllSheets()
 Dim ws As Worksheet
 For Each ws In Worksheets
 ws.Protect
 Next ws
End Sub

此代码将逐个浏览所有工作表并对其进行保护。

如果要取消所有工作表的保护,可以使用 ws.unProtect

14.在所选内容中每隔一行后插入一行

如果要在选定区域中的每一行后插入空行,请使用此代码。

Sub InsertAlternateRows()
Dim rng As Range
Dim CountRow As Integer
Dim i As Integer
Set rng = Selection
CountRow = rng.EntireRow.Count
 For i = 1 To CountRow
 ActiveCell.EntireRow.Insert
 ActiveCell.Offset(2, 0).Select
 Next i
End Sub

同样,您可以修改此代码,以便在所选范围内的每一列之后插入一个空白列

15.自动在相邻单元格中插入日期和时间戳

当您想要跟踪活动时,可以使用时间戳。

使用此代码在创建条目或编辑现有内容时在相邻单元格中插入日期和时间戳。

Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Handler
 If Target.Column = 1 And Target.Value <> "" Then
 Application.EnableEvents = False
 Target.Offset(0, 1) = Format(Now(), "dd-mm-yyyy hh:mm:ss") Application.EnableEvents = True
 End If
Handler:
End Sub

请注意,您需要将此代码插入工作表代码窗口(而不是模块内代码窗口)。因为这是一个事件代码

16.突出显示所选内容中的可选行

突出显示可选行可以极大地提高数据的可读性。

下面是一个代码,它将立即突出显示所选内容中的可选行。

Sub HighlightAlternateRows()
Dim Myrange As Range
Dim Myrow As Range
Set Myrange = Selection
For Each Myrow In Myrange.Rows
 If Myrow.Row Mod 2 = 1 Then
 Myrow.Interior.Color = vbCyan
 End If
Next Myrow
End Sub

注意,代码中指定了颜色为vbCyan(也可以修改成:vbRed, vbGreen, vbBlue)。

17.突出显示拼错单词的单元格

Excel没有像在Word或PowerPoint中那样进行拼写检查。虽然可以按F7键进行拼写检查,但当出现拼写错误时,没有视觉提示。

使用此代码可以立即突出显示其中有拼写错误的所有单元格。

Sub HighlightMisspelledCells()
Dim cl As Range
For Each cl In ActiveSheet.UsedRange
 If Not Application.CheckSpelling(word:=cl.Text) Then
 cl.Interior.Color = vbRed
 End If
Next cl
End Sub

请注意,突出显示的单元格包含Excel认为是拼写错误的文本。当然在许多情况下,它也会其它各种错误。

18.刷新工作簿中的所有透视表

如果工作簿中有多个透视表,则可以使用此代码一次刷新所有这些透视表。

Sub RefreshAllPivotTables()
Dim PT As PivotTable
 For Each PT In ActiveSheet.PivotTables
 PT.RefreshTable
 Next PT
End Sub

19.将所选单元格的字母大小写改为大写

虽然Excel有更改文本字母大小写的公式,但它使您可以在另一组单元格中进行更改。

使用此代码可以立即更改所选文本中文本的字母大小写。

Sub ChangeCase()
Dim Rng As Range
For Each Rng In Selection.Cells
 If Rng.HasFormula = False Then
 Rng.Value = UCase(Rng.Value)
 End If
Next Rng
End Sub

注意,在本例中,使用了UCase将文本大小写设为大写。

20.突出显示有批注的单元格

使用下面的代码突出显示其中包含注释的所有单元格。

Sub HighlightCellsWithComments() ActiveSheet.Cells.SpecialCells(xlCellTypeComments).Interior.Color = vbBlue End Sub

在本例中,使用vblue为单元格赋予蓝色。如果你想的话,你可以把这个换成其他颜色。

【转载】EXCEL VBA 20个有用的ExcelVBA代码的更多相关文章

  1. C#调用Excel VBA宏[转载]

    原文地址:https://www.cnblogs.com/heekui/archive/2008/03/30/1129355.html 近日的一系列工作是做网站的营运维护,因此做了大量的支持工具.有E ...

  2. 来吧!带你玩转 Excel VBA

    来吧!带你玩转 Excel VBA 从错失良机到艰辛的DOS征程,从坎坷购机自学路到转机起程,从爱好到事业,他从一个完全不懂电脑的人到VBA高级应用者,一切全是自学…… 我是罗刚君,来自四川的一个小县 ...

  3. Excel VBA语句集

    Excel VBA语句集 引子 最近批阅学生成绩,用Excel 处理学生成绩,用到VBA 提高办公效率.需要经常查阅VBA的一些用法 正文 定制模块行为 (1) Option Explicit '强制 ...

  4. Excel VBA to Interact with Other Applications

    转载自:https://analysistabs.com/excel-vba/interact-with-other-applications/ Interact with PowerPoint fr ...

  5. C#调用Excel VBA宏

    近日的一系列工作是做网站的营运维护,因此做了大量的支持工具.有Excel中写VBA的,也有直接C#做的工具.有时需要在C#中执行Excel VBA宏,甚至有时还需要在执行了VBA宏之后,获取返回值再进 ...

  6. 2017-5-29 Excel VBA 小游戏

    ---恢复内容开始--- 转一个Excel VBA的小游戏,最近对excel有了更深入的了解,功能很强大,也刷新了我对待事情的态度. 一.准备界面 我们先来把游戏界面准备好,选中前4行,行高调成50, ...

  7. Excel VBA 教程

    https://www.w3cschool.cn/excelvba/  Excel VBA 编程教程 https://www.yiibai.com/vba   VBA教程 http://www.acc ...

  8. [转]C#调用Excel VBA宏

    [转载自]http://www.shangxueba.com/jingyan/95031.html 附上一段原创常用代码 计算列标题字符串 Function CalcColumn(ByVal c As ...

  9. Office EXCEL VBA数组如何使用

    Excel VBA数组入门教程 1. 前言:不要把VBA数组想的太神秘,它其实就是一组数字而已. 2. 数组的维数: Sub 数组示例()  Dim x As Long, y As Long  Dim ...

  10. Excel VBA 操作 Word(入门篇)

    原文地址 本文的对象是:有一定Excel VBA基础,对Word VBA还没有什么认识,想在Excel中通过VBA操作Word还有困难的人.   一.新建Word引用 需要首先创建一个对 Word A ...

随机推荐

  1. 糟了,线上服务出现OOM了

    前言 前一段时间,公司同事的一个线上服务OOM的问题,我觉得挺有意思的,在这里跟大家一起分享一下. 我当时其实也参与了一部分问题的定位. 1 案发现场 他们有个mq消费者服务,在某一天下午,出现OOM ...

  2. 在开发中关于javaweb中的路径问题小结

    转自http://blog.csdn.net/yinyuehepijiu/article/details/9136117 在javaweb项目中添加配置文件,满足连接数据库配置参数以及其他自定义参数存 ...

  3. 什么是Scrum?Scrum的核心要点和精髓

    有点长,期望你能通过本文彻底了解 Scrum. 上一篇文章<研发效能组织能力建设之特性团队FeatureTeam(上)>,我们介绍了一个非常有意思且高效的组织模式-特性团队.我们首先介绍了 ...

  4. YOLOv5】LabVIEW+OpenVINO让你的YOLOv5在CPU上飞起来

    前言 上一篇博客给大家介绍了使用opencv加载YOLOv5的onnx模型,但我们发现使用CPU进行推理检测确实有些慢,那难道在CPU上就不能愉快地进行物体识别了吗?当然可以啦,这不LabVIEW和O ...

  5. Day3 最短路 最小生成树 拓扑排序

    Day3 最短路 最小生成树 拓扑排序 (一)最短路 一.多源最短路 从任意点出发到任意点的最短路 1. Floyd \(O(n^3)\) for(int k=1;k<=n;k++) for(i ...

  6. JUC(1)线程和进程、并发和并行、线程的状态、lock锁、生产者和消费者问题

    1.线程和进程 进程:一个程序,微信.qq...程序的集合.(一个进程包含多个线程,至少包含一个线程.java默认有两个线程:主线程(main).垃圾回收线程(GC) 线程:runnable.thre ...

  7. Java 动态代理原理图解 (附:2种实现方式详细对比)

    ​ 动态代理在 Java 中有着广泛的应用,例如:Spring AOP 面向切面编程,Hibernate 数据查询.以及 RPC Dubbo 远程调用等,都有非常多的实际应用@mikechen 目录 ...

  8. 野火 STM32MP157 开发板内核和设备树的编译烧写

    一.环境 编译环境:Ubuntu 版本:18.4.6 交叉编译工具:arm-linux-gnueabihf-gcc 版本:7.4.1 开发板:STM32MP157 pro 烧写方式:STM32Cube ...

  9. VBA粗犷整理

    PART1: 三.查找 1.从某一行向上/下找到第一个不为空的行 intRowPntEnd = ActiveSheet.Cells(intRowPntStart, intColPnt).End(xlD ...

  10. Windows操作系统搭建Lsky Pro

    写在前面 本文主要介绍在Windows下部署兰空图床,以及安装过程, 非Windows系统可以参考本文章的安装流程,结合自己系统版本进行部署 图床用处 图床在日常的用处非常广泛,尤其对于经常写博客的人 ...