分享

30个有用的Excel VBA代码

 东西二王 2019-04-20

30个有用的Excel VBA代码(1~10)

原创 浮云Excel 2019-03-30 11:59:00
30个有用的Excel VBA代码(6~10)


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文件,需要在工作表里面设置好打印的区域。如果有空的工作表,那么程序会报错。

30个有用的Excel VBA代码(1~5)

私信 SQL 可以获取SQL代码的Excel文件

私信 视频 可以获取54集VBA入门视频

私信 VBA或 vba 可以获取文章中含VBA代码的Excel文件

17 条评论
评论
  • 这代码用得着保留吗? 直接录制宏都会自动生成,稍微修改下就行。

  • 1-5呢?


  • 计划更新30个有用的vba代码。

  • 计划更新30个有用的vba代码。

  • 我有个表格是一个单元格一级路径,一级路径下有4个二级路径,二级路径下又各有4个三级路径,一直到五级路径!有什么办法让1-5级合并成一个完整路径

  • 有没有,多个工作薄,每个工作薄中三个工作表各独立汇总,不要复制标题行

  • 才5个啊,还有25个呢?

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多