由于工作的需要,搞起了excel表。简单学习了一些VBA,记录下来,分享一下。
什么是VBA:Visual Basic for Applications(VBA)是Visual Basic的一种宏语言,是微软开发出来在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。主要能用来扩展Windows的应用程式功能,特别是Microsoft Office软件。也可说是一种应用程式视觉化的Basic 脚本。该语言于1993年由微软公司开发的的应用程序共享一种通用的自动化语言--------Visual Basic For Application(VBA),实际上VBA是寄生于VB应用程序的版本。微软在1994年发行的Excel5.0版本中,即具备了VBA的宏功能。
以上定义来源百度百科。
由于临时抱佛脚,只好祭起实用主义的大旗,需要什么就学什么吧。
第一个需求:把若干Excel工作簿中的sheet全部copy到一个新的工作簿中去。具体语句如下。
Sub 工作薄间工作表合并()
Dim FileOpen
Dim X As Integer
Application.ScreenUpdating = False
FileOpen = Application.GetOpenFilename(FileFilter:="Microsoft Excel文件(.xls),.xls", MultiSelect:=True, Title:="合并工作薄")
X = 1
While X <= UBound(FileOpen)
Workbooks.Open Filename:=FileOpen(X)
Sheets().Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
X = X + 1
Wend
ExitHandler:
Application.ScreenUpdating = True
Exit Sub
errhadler:
MsgBox Err.Description
End Sub
第二个需求:把新生成的Excel工作簿中的sheet按照拼音顺序排序。具体语句如下。
Sub 工作表标签排序搜索()
n = Sheets.Count
For i = 1 To n
Cells(i, Columns.Count).NumberFormatLocal = "@"
Cells(i, Columns.Count) = Sheets(i).Name
Next
Cells(1, Columns.Count).Resize(n).Sort Cells(1, Columns.Count)
R = Cells(1, Columns.Count).Resize(n)
Cells(1, Columns.Count).Resize(n) = ""
For i = 1 To n
Sheets(R(i, 1)).Move Sheets(1)
Next
End Sub
第三个需求:合并当前工作簿中所有的sheet到一个新的sheet上去。
Sub 合并当前工作簿下的所有工作表()
Application.ScreenUpdating = False
For j = 1 To Sheets.Count
If Sheets(j).Name <> ActiveSheet.Name Then
X = Range("A65536").End(xlUp).Row + 1
Sheets(j).UsedRange.Copy Cells(X, 1)
End If
Next
Range("B1").Select
Application.ScreenUpdating = True
MsgBox "当前工作簿下的全部工作表已经合并完毕!", vbInformation, "提示"
End Sub
以上VBA语句都来源于网上,版权属于原作者,笔者只是搬运工,侵删。