专栏名称: 完美Excel
Excel与VBA技术学习与实践
目录
相关文章推荐
完美Excel  ·  Excel数据输入显示秘技 ·  2 天前  
完美Excel  ·  开启出差之旅 ·  4 天前  
Excel之家ExcelHome  ·  用好数据透视表,一堆工作等你搞 ·  4 天前  
Excel之家ExcelHome  ·  Excel版简易日历,其实很简单 ·  1 周前  
茶瓜子的休闲馆  ·  按列筛选、金额占比抽样 ·  5 天前  
51好读  ›  专栏  ›  完美Excel

自动生成操作工作表的通用代码

完美Excel  · 公众号  · Excel  · 2024-12-11 05:56

正文

学习Excel技术,关注微信公众号:
excelperfect

标签:VBA

在编写代码时,通常需要声明工作表变量、设置一些环境变量状态等,例如声明工作表变量:

Dim wsSHEET1 as Worksheet

然后给其赋值:

Set wsSHEET1 = wb.Sheets("Sheet1")

下面的代码可以自动生成这些通用代码:

Sub CreateWorksheetGenCoding() Dim ws As Worksheet Dim wsName As String Dim sName As String Dim sNames As String Dim blnSheetsWanted As Boolean c00 = "Dim ws" c01 = " as Worksheet" c02 = "Set ws" c03 = " = wb.Sheets(""" c04 = " = Nothing" sNames = "/" For i = 1 To ActiveWorkbook.Sheets.Count   Set ws = ActiveWorkbook.Sheets(i)   wsName = ws.Name   ws.Activate   sName = ""   Do sName = Trim(UCase(Application.InputBox( _     IIf(ws.Visible = xlSheetHidden, "隐藏的 - " & vbCr & vbCr, IIf(ws.Visible = xlSheetVeryHidden, "深度隐藏的 - " & vbCr & vbCr, "")) & _     "工作表代码名 = " & wsName, "工作表名称", UCase(wsName), , , , , 2)))   Loop Until sName = "" Or   InStr(sNames, "/" & sName & "/") = 0   sNames = sNames & sName & "/" Next blnSheetsWanted = (Len(Trim(Replace(sNames, "/", ""))) > 0) If blnSheetsWanted Then sNames = Mid(sNames, 2, Len(sNames) - 2) sq = Split(sNames, "/") Debug.Print "Sub MyProc()"
' sOutput "" sOutput "Dim wb As Workbook" If blnSheetsWanted Then For i = 0 To UBound(sq) If Len(sq(i)) Then       sOutput c00 & sq(i) & c01 End If Next End If sOutput "" sOutput "Set wb = ActiveWorkbook" If blnSheetsWanted Then For i = 0 To UBound(sq) If Len(sq(i)) Then       sOutput c02 & sq(i) & c03 & ActiveWorkbook.Sheets(i + 1).Name & """)" End If Next End If sOutput "" sOutput "Application.ScreenUpdating = False" sOutput "Application.Calculation = xlCalculationManual" For i = 1 To 10 sOutput "" Next sOutput "" sOutput "Application.ScreenUpdating = True" sOutput "Application.Calculation = xlCalculationAutomatic" sOutput "" sOutput "Set wb = Nothing" If blnSheetsWanted Then For i = 0 To UBound(sq) If Len(sq(i)) Then       sOutput c02 & sq(i) & c04 End If Next End If sOutput "" sOutput "MsgBox ""代码结束."", vbInformation, ""状态""" Debug.Print "End Sub"End SubSub sOutput(s As String) Debug.Print vbTab & sEnd Sub

对于下图1所示的工作簿,其中工作表Sheet4Sheet5是隐藏的工作表。

1
生成的代码如下图2所示。

2
在代码运行过程中,通过对话框可自定义工作表代码名,如下图3所示。

3
示例中保留了默认名。如果不输入任何名称,则不会对该工作表生成代码。

欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。
欢迎到知识星球:完美Excel社群,进行技术交流和提问,获取更多电子资料,并通过社群加入专门的微信讨论群,更方便交流。

推荐文章
完美Excel  ·  Excel数据输入显示秘技
2 天前
完美Excel  ·  开启出差之旅
4 天前
Excel之家ExcelHome  ·  用好数据透视表,一堆工作等你搞
4 天前
Excel之家ExcelHome  ·  Excel版简易日历,其实很简单
1 周前
茶瓜子的休闲馆  ·  按列筛选、金额占比抽样
5 天前