亦有资源网

C++语言基础到进阶学习资源汇总

Excel VBA代码。

一、基础操作代码

1. 单元格操作

' 读写单元格值

Range("A1").Value = "数据" ' 写入值

MsgBox Range("A1").Value ' 读取值

' 批量填充公式

Range("B1:B10").Formula = "=A1*2"

' 合并单元格

Range("A1:C1").Merge

2. 工作表操作

' 新增工作表

Sheets.Add After:=Sheets(Sheets.Count)

ActiveSheet.Name = "新表"

' 删除工作表

Application.DisplayAlerts = False ' 关闭警告

Sheets("旧表").Delete

Application.DisplayAlerts = True

' 隐藏/显示工作表

Sheets("Sheet1").Visible = xlSheetHidden ' 隐藏

Sheets("Sheet1").Visible = xlSheetVisible ' 显示

二、数据处理与算法

1. 数据清洗

' 删除空行

Columns("A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete

' 去重复值

Range("A1:C100").RemoveDuplicates Columns:=Array(1,2), Header:=xlYes

2. 数据查找与匹配

' VLOOKUP 替代方案

Dim result As Variant

result = Application.VLookup(Range("A1"), Range("D1:F100"), 3, False)

If Not IsError(result) Then Range("B1").Value = result

3. 数组高效计算

Dim arrData() As Variant

arrData = Range("A1:C100").Value ' 将数据读入数组

For i = 1 To UBound(arrData)

arrData(i, 3) = arrData(i, 1) * arrData(i, 2) ' 数组运算

Next i

Range("A1:C100").Value = arrData ' 写回单元格

三、高级自动化

1. 文件批量处理

Sub MergeCSVFiles()

Dim path As String, fileName As String

path = "C:\data\*.csv"

fileName = Dir(path)

Do While fileName <> ""

Workbooks.Open fileName:=path & fileName

' 复制数据到汇总表...

fileName = Dir()

Loop

End Sub

2. 发送邮件

Sub SendEmail()

Dim OutlookApp As Object, Mail As Object

Set OutlookApp = CreateObject("Outlook.Application")

Set Mail = OutlookApp.CreateItem(0)

With Mail

.To = "test@example.com"

.Subject = "Excel 报表"

.Body = "请查收附件。"

.Attachments.Add ThisWorkbook.FullName

.Send

End With

End Sub

四、用户交互界面

1. 输入框 (InputBox)

Dim userInput As String

userInput = InputBox("请输入内容:")

If userInput <> "" Then Range("A1").Value = userInput

2. 自定义窗体 (UserForm)

' 创建 UserForm 并添加按钮、文本框等控件

' 按钮点击事件示例:

Private Sub CommandButton1_Click()

Sheets("Sheet1").Range("A1").Value = TextBox1.Text

Unload Me

End Sub

五、系统级控制

1. 注册表操作(谨慎使用)

' 读取注册表

Dim regValue As String

regValue = CreateObject("WScript.Shell").RegRead("HKEY_CURRENT_USER\Software\Microsoft\Office\Excel\Version")

2. API 调用(高级)

' 调用 Windows API 弹窗

Private Declare PtrSafe Function MessageBox Lib "user32" Alias "MessageBoxA" _

(ByVal hWnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal uType As Long) As Long

Sub ShowAPIMsg()

MessageBox 0, "这是 API 弹窗", "提示", 64

End Sub

六、实战案例模板

1. 自动化报表生成器

Sub GenerateReport()

' 1. 数据清洗

Sheets("原始数据").Range("A1:F1000").RemoveDuplicates Columns:=1, Header:=xlYes


' 2. 计算指标

Sheets("汇总").Range("B2").Formula = "=SUM(原始数据!C:C)"


' 3. 生成图表

Charts.Add

ActiveChart.SetSourceData Source:=Sheets("汇总").Range("A1:B10")


' 4. 导出为 PDF

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\Report.pdf"

End Sub

七、调试与优化

1. 错误处理

Sub SafeRun()

On Error GoTo ErrorHandler

' 主代码逻辑

Exit Sub

ErrorHandler:

MsgBox "错误号: " & Err.Number & vbCrLf & "描述: " & Err.Description

' 恢复现场或记录日志

End Sub

2. 性能优化

Sub FastRun()


Application.ScreenUpdating = False ' 关闭屏幕刷新

Application.Calculation = xlCalculationManual ' 手动计算

' 执行代码...

Application.Calculation = xlCalculationAutomatic

Application.ScreenUpdating = True

End Sub

学习资源推荐

1. 官方文档:Microsoft VBA 文档(
https://docs.microsoft.com/zh-cn/office/vba/api/overview/excel)

2. 书籍:《Excel VBA 编程实战宝典》

3. 论坛:ExcelHome(http://www.excelhome.net/) 或 Stack Overflow(
https://stackoverflow.com/)

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言