美文网首页
Excel表VBA的3个实例

Excel表VBA的3个实例

作者: robotor | 来源:发表于2016-05-26 23:20 被阅读194次
 由于工作的需要,搞起了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语句都来源于网上,版权属于原作者,笔者只是搬运工,侵删。

相关文章

网友评论

      本文标题:Excel表VBA的3个实例

      本文链接:https://www.haomeiwen.com/subject/gjvxdttx.html