Excel VBA 宏自动创建表格

Excel VBA 宏 - 自动创建表格

应朋友的需求,编写了一个 VBA 宏,用于自动创建工作簿,实现了排版布局、冻结表头、条件格式、自动求和、单元格保护等功能。

分别创建了 4 个工作簿 1-12月流水帐+库存表1-12月银行现金日记账1-12月商品进货单单一帐目表,用于小公司记账比较方便。

Sub Main()
  Call 创建流水账("商品销售流水账_自动创建")
  
  Call 创建日记账("银行现金日记账_自动创建")
  
  Call 创建进货单("某某商品进货单_自动创建")

  Call 创建单表("某某帐目_自动创建", "某某帐目")
End Sub


' 创建流水账表格
' name = 文件名
Sub 创建流水账(name As String)
  ' 创建工作薄(可能会创建在当前目录或“我的文档”目录)
  Dim wb As Workbook
  Set wb = NewWorkbook(".\" & name)

  ' 只保留一个工作表
  Dim ws As Worksheet
  Set ws = ClearSheets(wb)

  ' 设置所有单元格格式
  With Cells
    .RowHeight = 30                            ' 设置行高
    .Font.Size = 12                            ' 设置字体
    .HorizontalAlignment = xlCenter            ' 水平居中
    .VerticalAlignment = xlCenter              ' 竖直居中
    .WrapText = True                           ' 自动换行
  End With
  
  ' 绘制表格
  Call DrawTable(ws, "A1", "20231 月商品销售表", "日期 名称 成本价 成交价 毛利润 备注", "9 28 12 12 12 30", 500)

  ' 绘制表格
  Call DrawTable(ws, "H1", "20231 月经营费用表", "日期 收支 备注", "9 12 30", 500)

  ' 表格之间的间距
  Columns(7).ColumnWidth = 1

  ' 设置单元格格式
  Call DateFormat(Range("A4:A500"))            ' 日期格式,居中
  Call DateFormat(Range("H4:H500"))            ' 日期格式,居中
  
  Call TextFormat(Range("B4:B500"), False)     ' 文本格式,不居中
  Call TextFormat(Range("F4:F500"), False)     ' 文本格式,不居中
  Call TextFormat(Range("J4:J500"), False)     ' 文本格式,不居中

  Call NamedNumFormat(Range("B2"), "平均利润") ' 带前缀数值格式,居中

  ' 填写公式
  Range("B2").Value = "=(E2+I2)/2"             ' 平均利润,总利润除以合伙人数量,这里除以 2
  Range("C2:E2").Value = "=SUM(C4:C500)"       ' 成本/成交/利润
  Range("I2").Value = "=SUM(I4:I500)"          ' 收支
  Range("E5:E500").Value = "=D5-C5"            ' 收支

  ' 设置公式结果为粗体
  FormulasCells(ws).Font.Bold = True
  ' 设置公式单元格颜色(锁定状态的颜色,亮色)
  Call LightBGColor(FormulasCells(ws))

  ' 设置条件格式
  Call FormatCondition(Range("B2"), False, False, True)       ' 平均利润
  
  Call FormatCondition(Range("C2:D2"), False, True, True)     ' 成本/成交
  Call FormatCondition(Range("C4:D500"), False, True, False)  ' 成本/成交
  
  Call FormatCondition(Range("E2"), True, False, True)        ' 利润
  Call FormatCondition(Range("E4:E500"), True, False, True)   ' 利润
  Call FormatCondition(Range("I2"), True, False, True)        ' 收支
  Call FormatCondition(Range("I4:I500"), True, False, True)   ' 收支

  ' 冻结表格
  Call FreezeTable(Range("A4"))

  ' 取消锁定(用户可编辑区域)
  Call UnLockCell(Range("A1:F1"))
  Call UnLockCell(Range("H1:J1"))
  Call UnLockCell(Range("F2"))
  Call UnLockCell(Range("J2"))
  Call UnLockCell(Range("A5:D500"))
  Call UnLockCell(Range("F5:F500"))
  Call UnLockCell(Range("H5:J500"))

  ' 保护工作表
  Call ProtectSheet(ws, "123")
  
  ' 复制出 12 个月的工作表
  ws.name = "1月"
  For i = 2 To 12
    ws.Copy After:=ws                          ' 拷贝当前工作表到其之后的位置
    Set ws = wb.ActiveSheet                    ' 设置新工作表为当前工作表
    ws.name = i & "月"                         ' 修改工作表标签名
    ' 修改表格标题
    ws.Range("A1").Value = "2023" & i & " 月商品销售表"
    ws.Range("H1").Value = "2023" & i & " 月经营费用表"
  Next
  
  ' 创建库存表
  Sheets.Add After:=ws                         ' 添加新工作表
  Set ws = wb.ActiveSheet                      ' 设置新工作表为当前工作表
  ws.name = "库存"

  ' 设置所有单元格格式
  With Cells
    .RowHeight = 30                            ' 设置行高
    .Font.Size = 12                            ' 设置字体
    .HorizontalAlignment = xlCenter            ' 水平居中
    .VerticalAlignment = xlCenter              ' 竖直居中
    .WrapText = True                           ' 自动换行
  End With
  
  ' 绘制表格(库存表)
  Call DrawTable(ws, "A1", "2023 年商品库存表", "日期 名称 成本 备注", "9 50 16 50", 500)

  ' 设置单元格格式
  Call DateFormat(Range("A4:A500"))            ' 日期格式,居中
  
  Call TextFormat(Range("B4:B500"), False)     ' 文本格式,不居中
  Call TextFormat(Range("D4:D500"), False)     ' 文本格式,不居中
  
  ' 填写公式
  Range("C2").Value = "=SUM(C4:C500)"

  ' 设置公式结果为粗体
  FormulasCells(ws).Font.Bold = True
  ' 设置公式单元格颜色(锁定状态的颜色,亮色)
  Call LightBGColor(FormulasCells(ws))

  ' 设置条件格式
  Call FormatCondition(Range("C2"), True, False, True)      ' 成本
  Call FormatCondition(Range("C4:C500"), True, False, True) ' 成本

  ' 冻结表格
  Call FreezeTable(Range("A4"))

  ' 取消锁定(用户可编辑区域)
  Call UnLockCell(Range("A1:D1"))
  Call UnLockCell(Range("B2"))
  Call UnLockCell(Range("D2"))
  Call UnLockCell(Range("A5:D500"))

  ' 保护工作表
  Call ProtectSheet(ws, "123")
  
  ' 激活 1 月工作表
  wb.Sheets(1).Activate
  
  ' 保存工作表
  Call SaveWorkbook(wb)
  Call CloseWorkbook(wb)
End Sub


' 创建日记账表格
' name = 文件名
Sub 创建日记账(name As String)
  ' 创建工作薄(可能会创建在当前目录或“我的文档”目录)
  Dim wb As Workbook
  Set wb = NewWorkbook(".\" & name)

  ' 只保留一个工作表
  Dim ws As Worksheet
  Set ws = ClearSheets(wb)

  ' 设置所有单元格格式
  With Cells
    .RowHeight = 30                            ' 设置行高
    .Font.Size = 12                            ' 设置字体
    .HorizontalAlignment = xlCenter            ' 水平居中
    .VerticalAlignment = xlCenter              ' 竖直居中
    .WrapText = True                           ' 自动换行
  End With
  
  ' 绘制表格
  Call DrawTable(ws, "A1", "20231 月银行日记账", "日期 凭证号 收入 支出 余额 备注", "9 13 12 12 12 18", 500)
  Call RedBGColor(Range("A1"))                 ' 表头红色

  ' 绘制表格
  Call DrawTable(ws, "H1", "20231 月现金日记账", "日期 凭证号 收入 支出 余额 备注", "9 13 12 12 12 18", 500)
  Call OrangeBGColor(Range("H1"))              ' 表头橙色

  ' 表格之间的间距
  Columns(7).ColumnWidth = 1

  ' 设置单元格格式
  Call DateFormat(Range("A4:A500"))            ' 日期格式,居中
  Call DateFormat(Range("H4:H500"))            ' 日期格式,居中
  
  Call TextFormat(Range("B4:B500"), True)      ' 文本格式,居中
  Call TextFormat(Range("I4:I500"), True)      ' 文本格式,居中
  
  Call NumFormat(Range("C4:E500"), False)      ' 数值格式,居中
  Call NumFormat(Range("J4:L500"), False)      ' 数值格式,居中
  
  Call TextFormat(Range("F4:F500"), False)     ' 文本格式,不居中
  Call TextFormat(Range("M4:M500"), False)     ' 文本格式,不居中

  ' 填写公式
  Range("C2:E2").Value = "=SUM(C4:C500)"       ' 收入/支出/余额
  Range("J2:L2").Value = "=SUM(J4:J500)"       ' 收入/支出/余额
  Range("E5:E500").Value = "=C5-D5"            ' 余额
  Range("L5:L500").Value = "=J5-K5"            ' 余额

  ' 设置公式结果为粗体
  FormulasCells(ws).Font.Bold = True
  ' 设置公式单元格颜色(锁定状态的颜色,亮色)
  Call LightBGColor(FormulasCells(ws))

  ' 设置条件格式
  Call FormatCondition(Range("C2:D2"), False, True, True)    ' 收入/支出(不可为负)
  Call FormatCondition(Range("E2"), True, False, True)       ' 收入/支出(负数红色,零无色)
  
  Call FormatCondition(Range("C4:D500"), False, True, False) ' 收入/支出(不可为负)
  Call FormatCondition(Range("E4:E500"), True, False, True)  ' 收入/支出(负数红色,零无色)
  
  Call FormatCondition(Range("J2:K2"), False, True, True)    ' 收入/支出(不可为负)
  Call FormatCondition(Range("L2"), True, False, True)       ' 收入/支出(负数红色,零无色)
  
  Call FormatCondition(Range("J4:L500"), False, True, False) ' 收入/支出(不可为负)
  Call FormatCondition(Range("L4:L500"), True, False, True)  ' 收入/支出(负数红色,零无色)

  ' 冻结表格
  Call FreezeTable(Range("A4"))

  ' 取消锁定(用户可编辑区域)
  Call UnLockCell(Range("A1:F1"))
  Call UnLockCell(Range("H1:M1"))
  
  Call UnLockCell(Range("B2"))
  Call UnLockCell(Range("F2"))
  Call UnLockCell(Range("I2"))
  Call UnLockCell(Range("M2"))
  
  Call UnLockCell(Range("A5:D500"))
  Call UnLockCell(Range("F5:F500"))
  
  Call UnLockCell(Range("H5:K500"))
  Call UnLockCell(Range("M5:M500"))

  ' 保护工作表
  Call ProtectSheet(ws, "123")
  
  ' 复制出 12 个月的工作表
  ws.name = "1月"
  For i = 2 To 12
    ws.Copy After:=ws                          ' 拷贝当前工作表到其之后的位置
    Set ws = wb.ActiveSheet                    ' 设置新工作表为当前工作表
    ws.name = i & "月"                         ' 修改工作表标签名
    ' 修改表格标题
    ws.Range("A1").Value = "2023" & i & " 月银行日记账"
    ws.Range("H1").Value = "2023" & i & " 月现金日记账"
  Next
  ' 激活 1 月工作表
  wb.Sheets(1).Activate
  
  ' 保存工作表
  Call SaveWorkbook(wb)
  Call CloseWorkbook(wb)
End Sub


' 创建进货单表格(生成后,可以通过修改最后一个表格中的参数来更新所有表格的标题)
' name = 文件名
Sub 创建进货单(name As String)
  ' 创建工作薄(可能会创建在当前目录或“我的文档”目录)
  Dim wb As Workbook
  Set wb = NewWorkbook(name)

  ' 只保留一个工作表
  Dim ws As Worksheet
  Set ws = ClearSheets(wb)

  ' 设置所有单元格格式
  With ws.Cells
    .RowHeight = 30                            ' 设置行高
    .Font.Size = 12                            ' 设置字体
    .HorizontalAlignment = xlCenter            ' 水平居中
    .VerticalAlignment = xlCenter              ' 竖直居中
    .WrapText = True                           ' 自动换行
  End With

  ' 绘制表格
  Call DrawTable(ws, "A1", "20231 月某某商品进货单", "日期 编号 金额 备注", "9 26 12 50", 500)

  ' 设置单元格格式
  Call DateFormat(Range("A4:A500"))            ' 日期格式
  Call TextFormat(Range("B4:B500"), True)      ' 文本格式,居中
  Call TextFormat(Range("D4:D500"), False)     ' 文本格式,不居中

  ' 填写公式
  Range("C2").Value = "=SUM(C4:C500)"

  ' 设置公式结果为粗体
  FormulasCells(ws).Font.Bold = True
  ' 设置公式单元格颜色(锁定状态的颜色,亮色)
  Call LightBGColor(FormulasCells(ws))

  ' 设置条件格式
  Call FormatCondition(Range("C4:C500"), True, False, False)  ' 小于 0 红色文本
  Call FormatCondition(Range("C2"), True, False, True)        ' 小于 0 红色文本,等于 0 无颜色

  ' 冻结表格
  Call FreezeTable(Range("A4"))

  ' 取消锁定(用户可编辑区域)
  Call UnLockCell(Range("B2"))
  Call UnLockCell(Range("D2"))
  Call UnLockCell(Range("A5:D500"))

  ' 复制出 12 个月的工作表
  ws.name = "1月"
  For i = 2 To 12
    ws.Copy After:=ws                          ' 拷贝当前工作表到其之后的位置
    Set ws = wb.ActiveSheet                    ' 设置新工作表为当前工作表
    ws.name = i & "月"                         ' 修改工作表标签名
  Next

  ' 创建参数表
  wb.Sheets.Add After:=ws
  Set ws = wb.ActiveSheet
  ws.name = "参数"

  ' 设置参数表的所有单元格格式
  With ws.Cells
    .RowHeight = 30                            ' 设置行高
    .Font.Size = 12                            ' 设置字体
    .HorizontalAlignment = xlCenter            ' 水平居中
    .VerticalAlignment = xlCenter              ' 竖直居中
    .WrapText = True                           ' 自动换行
  End With

  ' 设置参数表的列宽
  ws.Range("A1").ColumnWidth = 12
  ws.Range("B1").ColumnWidth = 36

  ' 设置参数表内容
  ws.Range("A1:B1").Merge
  ws.Range("A1") = "工作表参数"
  ws.Range("A2") = "表格标题"
  ws.Range("B2") = "某某商品进货单"
  ws.Range("B2").Locked = False

  ' 设置字体
  ws.Range("A1").Font.Size = 18
  ws.Range("A1").Font.Bold = True
  ws.Range("A2").Font.Bold = True

  ' 设置参数表边框
  Call SetBorders(ws.Range("A1:B1"), xlThin, xlMedium)
  Call SetBorders(ws.Range("A2:B2"), xlThin, xlMedium)

  ' 设置参数表背景色
  Call BlueBGColor(ws.Range("A1:B1"))
  Call LightBGColor(ws.Range("A2"))

  ' 保护工作表
  Call ProtectSheet(ws, "123")

  ' 设置工作表标题
  For i = 1 To 12
    Sheets(i).Range("A1").Value = "=""2023" & i & """ & 参数!B2"
    ' 保护工作表
    Call ProtectSheet(Sheets(i), "123")
  Next

  ' 激活 3 月工作表
  wb.Sheets(3).Activate

  ' 保存工作表
  Call SaveWorkbook(wb)
  Call CloseWorkbook(wb)
End Sub


' 创建单表
' name = 文件名
' title = 表格标题
Sub 创建单表(name As String, title As String)
  ' 创建工作薄(可能会创建在当前目录或“我的文档”目录)
  Dim wb As Workbook
  Set wb = NewWorkbook(name)

  ' 只保留一个工作表
  Dim ws As Worksheet
  Set ws = ClearSheets(wb)

  ' 设置所有单元格格式
  With Cells
    .RowHeight = 30                            ' 设置行高
    .Font.Size = 12                            ' 设置字体
    .HorizontalAlignment = xlCenter            ' 水平居中
    .VerticalAlignment = xlCenter              ' 竖直居中
    .WrapText = True                           ' 自动换行
  End With
  
  ' 绘制表格
  Call DrawTable(ws, "A1", title, "日期 名称 金额 备注", "9 35 12 50", 500)

  ' 设置单元格格式
  Call DateFormat(Range("A4:A500"))            ' 日期格式,居中

  Call TextFormat(Range("B4:B500"), False)     ' 文本格式,不居中
  Call TextFormat(Range("D4:D500"), False)     ' 文本格式,不居中

  ' 填写公式
  Range("C2").Value = "=SUM(C4:C500)"

  ' 设置公式结果为粗体
  FormulasCells(ws).Font.Bold = True
  ' 设置公式单元格颜色(锁定状态的颜色,亮色)
  Call LightBGColor(FormulasCells(ws))

  ' 设置条件格式
  Call FormatCondition(Range("C2"), True, False, True)        ' 小于 0 红色文本,等于 0 无颜色
  Call FormatCondition(Range("C4:C500"), True, False, False)  ' 小于 0 红色文本

  ' 冻结表格
  Call FreezeTable(Range("A4"))

  ' 取消锁定(用户可编辑区域)
  Call UnLockCell(Range("A1:D1"))
  Call UnLockCell(Range("B2"))
  Call UnLockCell(Range("D2"))
  Call UnLockCell(Range("A5:D500"))

  ' 保护工作表
  Call ProtectSheet(ws, "123")
  
  ' 设置工作表名称
  ws.name = title
  
  ' 保存工作表
  Call SaveWorkbook(wb)
  Call CloseWorkbook(wb)
End Sub


' 绘制表格
Sub DrawTable(ws As Worksheet, starts As String, title As String, fields As String, widths As String, rows As Integer)
  ' 将字段列表分割为数组
  Dim fieldList() As String
  fieldList() = Split(fields)

  Dim widthList() As String
  widthList() = Split(widths)

  ' 获取字段数
  Dim cols As Integer
  cols = UBound(fieldList) - LBound(fieldList) + 1

  ' 合并单元格(标题)
  Dim rg As Range
  Set rg = Range(starts, Range(starts).Offset(0, cols - 1))
  Call MergeCells(rg)
  rg.Font.Size = 18                            ' 设置字号
  Set rg = Range(starts)
  rg.Value = title                             ' 设置标题
  rg.Font.Bold = True                          ' 设置粗体

  ' 合计
  Set rg = Range(starts).Offset(1, 0)
  With rg
    .Value = "合计"                            ' 文本
    .Font.Bold = True                          ' 加粗
  End With

  ' 表头
  Set rg = Range(starts).Offset(2, 0)
  For i = LBound(fieldList) To UBound(fieldList)
    Columns(i - LBound(fieldList) + rg.Column).ColumnWidth = Val(widthList(i))
    With rg.Offset(0, i - LBound(fieldList))
      .Value = fieldList(i)                    ' 文本
      .Font.Bold = True                        ' 加粗
    End With
  Next

  ' 绘制网格
  Set rg = Range(starts).Offset(1, 0)
  Set rg = Range(rg, rg.Offset(0, cols - 1))
  Call SetBorders(rg, xlThin, xlMedium)

  Set rg = Range(starts).Offset(2, 0)
  Set rg = Range(rg, rg.Offset(rows - 3, cols - 1))
  Call SetBorders(rg, xlThin, xlMedium)

  ' 标题背景色
  Set rg = Range(starts)
  Call BlueBGColor(rg)                         ' 蓝色

  ' 设置单元格颜色(锁定状态的颜色,亮色)
  Set rg = Range(starts).Offset(1, 0)
  Call LightBGColor(rg)                        ' 亮色
  Set rg = Range(starts).Offset(2, 0)
  Set rg = Range(rg, rg.Offset(0, cols - 1))
  Call LightBGColor(rg)                        ' 亮色

  ' 数据首行背景色(便于用户查看当前是否滚动到了行首)
  Set rg = Range(starts).Offset(3, 0)
  Set rg = Range(rg, rg.Offset(0, cols - 1))
  Call TeaBGColor(rg)                         ' 茶色
End Sub


' 创建工作簿,并通过函数返回
Function NewWorkbook(name As String) As Workbook
  Set NewWorkbook = Workbooks.Add              ' 创建工作簿
  Application.DisplayAlerts = False            ' 禁用文件覆盖警告
  NewWorkbook.SaveAs Filename:=name            ' 保存文件
  Application.DisplayAlerts = True             ' 恢复文件覆盖警告
End Function


' 打开工作薄,并通过函数返回
Function OpenWorkbook(name As String) As Workbook
  Set OpenWorkbook = Workbooks.Open(name)      ' 打开工作薄
End Function


' 保存工作薄
Sub SaveWorkbook(wb As Workbook)
  wb.Save
End Sub


' 关闭工作薄
Sub CloseWorkbook(wb As Workbook)
  wb.Close
End Sub


' 删除多余工作表,只保留第一张工作表
Function ClearSheets(wb As Workbook) As Worksheet
  Application.DisplayAlerts = False            ' 禁用删除确认
  For i = wb.Worksheets.Count To 2 Step -1     ' 循环删除工作表
    wb.Worksheets(i).Delete
  Next
  Application.DisplayAlerts = True             ' 恢复删除确认
  Set ClearSheets = wb.Worksheets(1)           ' 返回第一张工作表
End Function


' 合并单元格
Sub MergeCells(rg As Range)
  rg.MergeCells = True
End Sub


' 设置表格线框
Sub SetBorders(rg As Range, innerWeight As Variant, outerWeight As Variant)
  rg.Borders(xlDiagonalDown).LineStyle = xlNone  ' 取消斜边样式
  rg.Borders(xlDiagonalUp).LineStyle = xlNone    ' 取消斜边样式
  With rg.Borders
    .LineStyle = xlContinuous                  ' 线型
    .ColorIndex = 0                            ' 颜色
    .TintAndShade = 0                          ' 色调和阴影
    .Weight = innerWeight                      ' 线宽
  End With

  With rg.Borders(xlEdgeLeft)                  ' 整体左
    .LineStyle = xlContinuous
    .ColorIndex = 0
    .TintAndShade = 0
    .Weight = outerWeight
  End With
  With rg.Borders(xlEdgeTop)                   ' 整体左
    .LineStyle = xlContinuous
    .ColorIndex = 0
    .TintAndShade = 0
    .Weight = outerWeight
  End With
  With rg.Borders(xlEdgeBottom)                ' 整体左
    .LineStyle = xlContinuous
    .ColorIndex = 0
    .TintAndShade = 0
    .Weight = outerWeight
  End With
  With rg.Borders(xlEdgeRight)                 ' 整体左
    .LineStyle = xlContinuous
    .ColorIndex = 0
    .TintAndShade = 0
    .Weight = outerWeight
  End With
End Sub


' 设置表格背景色
'
' color 指定颜色值,取值:
' xlThemeColorDark1    白色
' xlThemeColorLight1   黑色
' xlThemeColorDark2    茶色
' xlThemeColorLight2   深蓝色
' xlThemeColorAccent1  蓝色
' xlThemeColorAccent2  红色
' xlThemeColorAccent3  橄榄色
' xlThemeColorAccent4  紫色
' xlThemeColorAccent5  水绿色
' xlThemeColorAccent6  橙色
'
' tint 指定亮度百分比(取值范围在 1-1 之间)
' 一般取值为:正负 0.80.60.50.40.350.250.150.050
Sub SetBGColor(rg As Range, color As Variant, tint As Double)
  With rg.Interior
    .Pattern = xlSolid                ' 图案类型
    .PatternColorIndex = xlAutomatic  ' 图案样式
    .PatternTintAndShade = 0          ' 图案的色调与阴影
    .ThemeColor = color               ' 颜色
    .TintAndShade = tint              ' 色调与阴影
  End With
End Sub


' 设置亮色背景(-0.05 -0.25 -0.35 -0.45 -0.5Sub LightBGColor(rg As Range, Optional tint As Double = -0.05)
  Call SetBGColor(rg, xlThemeColorDark1, tint)
End Sub


' 设置暗色背景(0.5 0.35 0.25 0.15 0.05Sub DarkBGColor(rg As Range, Optional tint As Double = 0.5)
  Call SetBGColor(rg, xlThemeColorLight1, tint)
End Sub


' 设置茶色背景(-0.1 -0.25 -0.5 -0.75 -0.9Sub TeaBGColor(rg As Range, Optional tint As Double = 0)
  Call SetBGColor(rg, xlThemeColorDark2, tint)
End Sub


' 设置深蓝色背景(0.8 0.6 0.4 -0.25 -0.5Sub DarkBlueBGColor(rg As Range, Optional tint As Double = 0.8)
  Call SetBGColor(rg, xlThemeColorLight2, tint)
End Sub


' 设置蓝色背景(0.8 0.6 0.4 -0.25 -0.5Sub BlueBGColor(rg As Range, Optional tint As Double = 0.6)
  Call SetBGColor(rg, xlThemeColorAccent1, tint)
End Sub


' 设置红色背景(0.8 0.6 0.4 -0.25 -0.5Sub RedBGColor(rg As Range, Optional tint As Double = 0.6)
  Call SetBGColor(rg, xlThemeColorAccent2, tint)
End Sub


' 设置橄榄色背景(0.8 0.6 0.4 -0.25 -0.5Sub GreenBGColor(rg As Range, Optional tint As Double = 0.6)
  Call SetBGColor(rg, xlThemeColorAccent3, tint)
End Sub


' 设置紫色背景(0.8 0.6 0.4 -0.25 -0.5Sub PurpleBGColor(rg As Range, Optional tint As Double = 0.6)
  Call SetBGColor(rg, xlThemeColorAccent4, tint)
End Sub


' 设置水绿色背景(0.8 0.6 0.4 -0.25 -0.5Sub CyanBGColor(rg As Range, Optional tint As Double = 0.6)
  Call SetBGColor(rg, xlThemeColorAccent5, tint)
End Sub


' 设置橙色背景(0.8 0.6 0.4 -0.25 -0.5Sub OrangeBGColor(rg As Range, Optional tint As Double = 0.6)
  Call SetBGColor(rg, xlThemeColorAccent6, tint)
End Sub


' 设置单元格格式(日期)
Sub DateFormat(rg As Range)
    rg.NumberFormatLocal = "m""月""d"""";@"
End Sub


' 设置单元格格式(文本)
Sub TextFormat(rg As Range, center As Boolean)
    rg.NumberFormatLocal = "@"
    If center Then
      rg.HorizontalAlignment = xlCenter         ' 水平居左
    Else
      rg.HorizontalAlignment = xlLeft           ' 水平居左
    End If
End Sub


' 设置单元格格式(数值)
Sub NumFormat(rg As Range, center As Boolean)
  rg.HorizontalAlignment = xlGeneral            ' 水平居左
  rg.NumberFormatLocal = "0.00_ ;[红色]-0.00 "
End Sub


' 设置单元格格式(带前导文本的数值)
Sub NamedNumFormat(rg As Range, prefix As String)
  rg.NumberFormatLocal = """" + prefix + " ""#0.00;[红色]""" + prefix + " ""-#0.00"
End Sub


' 清除条件格式
Sub ClearFormatConditions(rg As Range)
  rg.FormatConditions.Delete
End Sub


' 设置条件格式(零值与背景同色)
' redFG   单元格数值小于 0 时是否使用红色文本
' redBG   单元格数值小于 0 时是否使用红色背景
' noColor 单元格数值等于 0 时是否使文本与背景同色
Sub FormatCondition(rg As Range, redFG As Boolean, redBG As Boolean, noColor As Boolean)
  ' 清除条件格式
  rg.FormatConditions.Delete
  If redFG Then
    ' 设置条件格式(<0 红色字体)
    rg.FormatConditions.Add Type:=xlCellValue, Operator:=xlLess, Formula1:="=0"
    rg.FormatConditions(rg.FormatConditions.Count).SetFirstPriority
    With rg.FormatConditions(1).Font
      .color = 255
      .TintAndShade = 0
    End With
    rg.FormatConditions(1).StopIfTrue = False
  End If
  If redBG Then
    ' 设置条件格式(<0 红色背景)
    rg.FormatConditions.Add Type:=xlCellValue, Operator:=xlLess, Formula1:="=0"
    rg.FormatConditions(rg.FormatConditions.Count).SetFirstPriority
    With rg.FormatConditions(1).Interior
      .PatternColorIndex = xlAutomatic
      .color = 255
      .TintAndShade = 0
    End With
    rg.FormatConditions(1).StopIfTrue = False
  End If
  If noColor Then
    ' 设置条件格式(=0 文本与背景同色)
    rg.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="=0"
    rg.FormatConditions(rg.FormatConditions.Count).SetFirstPriority
    With rg.FormatConditions(1).Font
      .ThemeColor = xlThemeColorDark1
      .TintAndShade = -4.99893185216834E-02
    End With
    rg.FormatConditions(1).StopIfTrue = False
  End If
End Sub


' 冻结表格
Sub FreezeTable(rg As Range)
  ActiveWindow.FreezePanes = False
  rg.Select
  ActiveWindow.FreezePanes = True
End Sub


' 锁定单元格
Sub LockTable(rg As Range)
  rg.Locked = True
End Sub


' 解除单元格锁定
Sub UnLockCell(rg As Range)
  rg.Locked = False
End Sub


' 保护工作表
Sub ProtectSheet(ws As Worksheet, passwd As String)
  ws.Protect Password:=passwd, DrawingObjects:=True, Contents:=True, _
             Scenarios:=True, AllowFormattingCells:=True, _
             AllowFormattingColumns:=True, AllowFormattingRows:=True
End Sub


' 解除工作表保护
Sub UnProtectSheet(ws As Worksheet, passwd As String)
  ws.Unprotect Password:=passwd
End Sub


' 选择含有公式的单元格
Function FormulasCells(ws As Worksheet) As Range
  Set FormulasCells = ws.UsedRange.SpecialCells(xlCellTypeFormulas)
End Function
  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目 录 一、VBA语言基础...................................................................................................................1 第一节 标识符....................................................................................................................................1 第二节 运算符....................................................................................................................................1 第三节 数据类型................................................................................................................................1 第四节 变量与常量............................................................................................................................1 第五节 数组........................................................................................................................................2 第六节 注释和赋值语句....................................................................................................................2 第七节 书写规范................................................................................................................................2 第八节 判断语句................................................................................................................................2 第九节 循环语句................................................................................................................................3 第十节 其他类语句和错误语句处理................................................................................................4 第十一节 过程和函数........................................................................................................................4 一.Sub过程................................................................. 4 二.Function函数............................................................ 5 三.Property属性过程和Event事件过程 ......................................... 5 第十二节内部函数.............................................................................................................................5 一.测试函数................................................................ 5 二.数学函数................................................................ 5 三.字符串函数.............................................................. 5 四.转换函数................................................................ 6 五.时间函数................................................................ 6 第十三节 文件操作............................................................................................................................6 文件........................................................................ 6 删除........................................................................ 6 打开........................................................................ 6 读入........................................................................ 7 写入........................................................................ 7 关闭........................................................................ 7 其他文件函数................................................................ 7 二、VISUAL BASIC程序设计网络教学.....................................................................................1 第一课 VBA是什么 .................................................................................................................1 1.1 VBA是什么....................................................................................................................................1 1.2 EXCEL环境中基于应用程序自动化的优点................................................................................1 1.3 录制简单的..............................................................................................................................1 1.4 执行..........................................................................................................................................2 1.5 查看录制的代码..........................................................................................................................2 1.6 编辑录制的代码..........................................................................................................................3 1.7 录制的局限性..........................................................................................................................3 1.8 小结..............................................................................................................................................3 第二课 处理录制的............................................................................................................3 2.1 为指定快捷键..........................................................................................................................3 2.2 决定保存的位置......................................................................................................................4 2.3 个人工作簿..............................................................................................................................4 2.3.1 保存到个人工作簿 .................................................. 4 2.3.2 使用并编辑个人工作簿中的 .......................................... 4 2.4 将指定给按钮..........................................................................................................................4 2.5 将指定给图片或其他对象......................................................................................................5 2.6 小结..............................................................................................................................................5 第三课 学习控件...................................................................................................................5 3.1 EXCEL开发过程简介....................................................................................................................5 3.2 认识不同的控件..........................................................................................................................5 3.3 向工作表添加控件......................................................................................................................6 3.4 设置控件的特性..........................................................................................................................6 3.5 给控件命名..................................................................................................................................6 3.6 使用用户窗体..............................................................................................................................6 3.7 疑难解答......................................................................................................................................7 第四课 理解变量和变量的作用..............................................................................................7 4.1 代码存在的位置:模块..............................................................................................................7 4.2 对模块的概览..............................................................................................................................7 4.2.1 创建过程.............................................................. 8 4.2.2 运行................................................................ 9 4.3 保存对模块所做的改变..............................................................................................................9 4.4 变量..............................................................................................................................................9 4.4.1 变量的数据类型........................................................ 9 4.4.2 用Dim语句创建变量(声明变量) .......................................... 10 4.4.3 变量命名的惯例....................................................... 10 4.4.4 使用数组............................................................. 10 4.4.5 变量赋值............................................................. 11 第五课 利用VBA设置工作表使用权限...................................................................................11 1.使用WITH语句。 ..........................................................................................错误!未定义书签。 2.使用对象变量。.........................................................................................错误!未定义书签。 方法 3:减少对象的激活和选择 ....................................................................错误!未定义书签。 方法 4:关闭屏幕更新....................................................................................错误!未定义书签。 第六课 提高EXCELVBA的效率............................................................................................12 方法 1:尽量使用VBA原有的属性、方法和WORKSHEET函数............................................................12 方法 2:尽量减少使用对象引用,尤其在循环中.........................................................................12 1.使用With语句。.......................................................... 12 2.使用对象变量。.......................................................... 12 3.在循环中要尽量减少对象的访问。 .......................................... 13 方法 3:减少对象的激活和选择 ....................................................................................................13 方法 4:关闭屏幕更新....................................................................................................................13 第七课 如何在EXCEL里使用定时器.......................................................................................13 三、学习微软 EXCEL 2002 VBA 编程和XML,ASP技术...........................................................15 第一章 电子表格自动化简介和了解命令...........................................................................15 1 了解............................................................................................................................................15 2 命令的普通应用........................................................................................................................15 3 写之前的计划............................................................................................................................16 4 录制............................................................................................................................................17 5 运行............................................................................................................................................18 6 修改代码....................................................................................................................................19 7 添加注释........................................................................................................................................21 8 分析代码....................................................................................................................................22 9 清除代码....................................................................................................................................23 10 测试修改好的..........................................................................................................................24 11 两个层面运行的方法..............................................................................................................24 12 完善你的代码..........................................................................................................................25 13 重新命名..................................................................................................................................27 14 运行的其它方法......................................................................................................................27 15 使用键盘快捷键运行..............................................................................................................27 16 通过菜单运行..........................................................................................................................28 17 通过工具栏按钮运行..............................................................................................................30 18 通过工作表里面的按钮运行..................................................................................................31 19 保存..........................................................................................................................................32 20 打印..........................................................................................................................................32 21 保存在个人工作簿..............................................................................................................32 22 打开含有的工作簿..................................................................................................................34 23VB编辑窗口...................................................................................................................................35 24 了解工程浏览窗口......................................................................................................................35 25 了解属性窗口..............................................................................................................................36 26 了解代码窗口..............................................................................................................................36 27 VB编辑器里的其它窗口..............................................................................................................38 28 接下来……..................................................................................................................................39 第二章 VBA 第一步..............................................................................................................39 1 了解指令,模块和过程................................................................................................................39 2 VBA工程命名..................................................................................................................................39 3 模块重命名....................................................................................................................................40 4 从其它工程调用过程....................................................................................................................41 5 了解对象,属性和方法................................................................................................................42 6 学习对象,属性和方法................................................................................................................43 7 句法和文法....................................................................................................................................45 8 打断很长的VBA语句......................................................................................................................47 9 了解VBA错误..................................................................................................................................47 10 查找帮助......................................................................................................................................49 11 语法和编程快捷助手..................................................................................................................50 12 属性/方法列表............................................................................................................................51 13 常数列表......................................................................................................................................51 14 参数信息......................................................................................................................................52 15 快速信息......................................................................................................................................52 16 自动完成关键字..........................................................................................................................52 17 缩进/凸出....................................................................................................................................53 18 设置注释块/解除注释块............................................................................................................53 19 使用对象浏览器..........................................................................................................................53 20 使用VBA对象库............................................................................................................................58 21 用对象浏览器来定位过程..........................................................................................................59 22 使用立即窗口..............................................................................................................................59 23 获取立即窗口里的信息..............................................................................................................61 24 学习对象......................................................................................................................................62 25 电子表格单元格操作..................................................................................................................62 26 使用RANGE属性..............................................................................................................................62 27 使用CELLS属性..............................................................................................................................62 28 使用OFFSET属性............................................................................................................................63 29 选择单元格的其它方法..............................................................................................................64 30 选择行和列..................................................................................................................................64 31 获取工作表信息..........................................................................................................................65 32 往工作表输入数据......................................................................................................................65 33 返回工作表中的信息..................................................................................................................65 34 单元格格式..................................................................................................................................66 35 移动,复制和删除单元格..........................................................................................................66 36 操作工作簿和工作表..................................................................................................................67 37 操作窗口(WINDOWS)...................................................................................................................67 38 管理EXCEL应用程序......................................................................................................................68 39 接下来……..................................................................................................................................68 第三章 了解变量,数据类型和常量.....................................................................................69 1 保存VBA语句的结果......................................................................................................................69 2 变量是什么....................................................................................................................................69 3 数据类型........................................................................................................................................69 4 如何产生变量................................................................................................................................70 5 如何声明变量................................................................................................................................71 6 明确变量的数据类型....................................................................................................................72 7 变量赋值........................................................................................................................................73 8 强制声明变量................................................................................................................................75 9 了解变量范围................................................................................................................................76 10 过程级别(当地)变量..............................................................................................................76 11 模块级别变量..............................................................................................................................77 12 工程级别变量..............................................................................................................................77 13 变量的存活期..............................................................................................................................78 14 了解和使用静态变量..................................................................................................................78 15 声明和使用对象变量..................................................................................................................79 16 使用明确的对象变量..................................................................................................................80 17 查找变量定义..............................................................................................................................80 18 在VB过程里面使用常量..............................................................................................................80 19 内置常量......................................................................................................................................81 20 接下来……..................................................................................................................................82 第四章 VBA过程:子程序和函数..........................................................................................82 1.关于函数过程...............................................................................................................................82 2.创建函数过程...............................................................................................................................82 3.执行函数过程...............................................................................................................................84 4.从工作表里运行函数过程...........................................................................................................84 5.从另外一个VBA过程里运行函数过程 .........................................................................................85 6.传递参数.......................................................................................................................................86 7.明确参数类型...............................................................................................................................87 8.按地址和按值传递参数...............................................................................................................88 9.使用可选的参数...........................................................................................................................88 10.定位内置函数.............................................................................................................................89 11.使用MSGBOX函数...........................................................................................................................90 12.MSGBOX函数的运行值...................................................................................................................94 13.使用INPUTBOX函数........................................................................................................................95 14.数据类型转变.............................................................................................................................96 15.使用INPUTBOX方法........................................................................................................................97 16.使用主过程和子过程...............................................................................................................100 17.接下来……...............................................................................................................................102 第五章 基于VBA做决定 ......................................................................................................102 1.关系和逻辑运算符.....................................................................................................................102 2.IF…THEN语句...............................................................................................................................103 3.基于多于一个条件的决定.........................................................................................................105 4.THE IF…THEN…ELSE语句.............................................................................................................106 5.IF…THEN…ELSEIF语句................................................................................................................108 6.嵌套的IF…THEN语句...................................................................................................................110 7.SELECT CASE语句...........................................................................................................................110 8.和CASE子句一起使用IS...............................................................................................................112 9.确定CASE子句里数值的范围 ......................................................................................................113 10.在CASE子句里确定多个表达式.................................................................................................114 11.接下来…...................................................................................................................................114 第六章 在VBA中重复操作...................................................................................................114 1.DO LOOPS: DO…WHILE和DO…UNTIL................................................................................................114 2.观察过程执行.............................................................................................................................117 3.WHILE…WEND循环..........................................................................................................................118 4.FOR…NEXT 循环 ...........................................................................................................................119 5.FOR EACH…NEXT循环.....................................................................................................................120 7.提前跳出循环.............................................................................................................................121 8.循环嵌套.....................................................................................................................................122 9.接下来….....................................................................................................................................122 第七章 利用VBA数组管理数据清单和表格..........................................................................122 1.了解数组.....................................................................................................................................123 2.声明数组.....................................................................................................................................124 3.数组的上界和下界.....................................................................................................................124 4.在VBA过程里使用数组...............................................................................................................124 5.数组和循环语句.........................................................................................................................125 6.使用二维数组.............................................................................................................................127 7.静态和动态数组.........................................................................................................................128 8.数组函数.....................................................................................................................................129 9.ARRAY函数.....................................................................................................................................130 10.ISARRAY函数...............................................................................................................................130 11.ERASE函数...................................................................................................................................131 12.LBOUND函数和UBOUND函数 ..........................................................................................................131 13.数组中的错误...........................................................................................................................132 14.数组作为参数...........................................................................................................................134 15.接下来…...................................................................................................................................134 第八章 利用VBA操纵文件和文件夹.....................................................................................134 1.获取当前文件夹的名称(CURDIR函数)...................................................................................135 2.更改文件或文件夹名称(NAME函数).......................................................................................135 3.检查文件或文件夹是否存在(DIR函数)................................................................................136 4.获得文件修改的日期和时间(FILEDATETIME函数).................................................................137 5.获得文件大小(FILELEN函数).................................................................................................138 6.返回和设置文件属性(GETATTR函数和SETATTR函数) .............................................................138 7.更改缺省文件夹或驱动器(CHDIR语句和CHDRIVE语句).........................................................139 8.创建和删除文件夹(MKDIR语句和RMDIR语句)........................................................................140 9.复制文件(FILECOPY语句)........................................................................................................140 10.删除文件(KILL语句) ............................................................................................................142 11.从文件读取和写入数据(INPUT/OUTPUT)...............................................................................142 12.文件访问类型...........................................................................................................................142 13.使用顺序文件...........................................................................................................................143 14.读取储存于顺序文件里的数据 ...............................................................................................143 15.逐行读取文件...........................................................................................................................143 16.从顺序文件中读取字符...........................................................................................................144 17.读取分隔文本文件...................................................................................................................145 18.往顺序文件里写数据...............................................................................................................146 19.使用WRITE # 和PRINT # 语句....................................................................................................147 20.操作随机文件...........................................................................................................................148 21.创建用户定义的数据类型.......................................................................................................148 22.操作二进制文件.......................................................................................................................152 23.操作文件和文件夹的时髦方法 ...............................................................................................153 24.使用WSH获取文件信息.............................................................................................................155 25.FILESYSTEMOBJEC的方法和属性..................................................................................................156 26.对象FILE的属性 ........................................................................................................................160 27.文件夹对象属性.......................................................................................................................161 28.驱动器对象属性.......................................................................................................................161 29.使用WSH创建文本文件.............................................................................................................162 30.使用WSH进行其它操作.............................................................................................................164 31.运行其它应用程序...................................................................................................................164 32.创建快捷方式...........................................................................................................................165 33.接下来……...............................................................................................................................166 第九章 利用VBA控制其它应用程序.....................................................................................167 1.启动应用程序.............................................................................................................................167 2.在应用程序之间切换.................................................................................................................169 3.控制其它应用程序.....................................................................................................................170 4.控制应用程序的其它方法.........................................................................................................171 5.了解自动控制.............................................................................................................................172 6.了解链接和嵌入.........................................................................................................................172 7.使用VBA进行链接和嵌入...........................................................................................................173 8.COM和自动控制...........................................................................................................................174 9.了解绑定.....................................................................................................................................174 10.后期绑定...................................................................................................................................174 11.早期绑定...................................................................................................................................174 12.建立到对象库的引用...............................................................................................................175 13.创建自动控制对象...................................................................................................................176 14.使用CREATEOBJECT函数...............................................................................................................176 15.使用自动控制创建一个新的WORD文档.....................................................................................177 16.使用GETOBJECT函数....................................................................................................................177 17.打开存在的WORD文档 ................................................................................................................178 18.使用关键字NEW..........................................................................................................................179 19.使用自动控制访问MICROSOFT OUTLOOK.......................................................................................180 20.接下来……...............................................................................................................................181 第十章 对话框和自定义窗体..............................................................................................181 1.文件打开和另存为对话框.........................................................................................................183 2.GETOPENFILENAME和GETSAVEASFILENAME方法...................................................................................187 3.创建窗体.....................................................................................................................................188 4.创建用户窗体的工具.................................................................................................................190 5.标签.............................................................................................................................................191 6.文字框.........................................................................................................................................191 7.框架.............................................................................................................................................191 8.选项按钮.....................................................................................................................................191 9.复选框.........................................................................................................................................192 10.切换按钮...................................................................................................................................192 11.列表框.......................................................................................................................................192 12.复合框.......................................................................................................................................192 13.滚动条.......................................................................................................................................192 14.旋转按钮...................................................................................................................................192 15.图像...........................................................................................................................................192 16.多页控件...................................................................................................................................192 17.TABSTRIP控件 .............................................................................................................................193 18.REFEDIT控件...............................................................................................................................193 19.在窗体上放置控件...................................................................................................................193 20.应用程序示例 1:信息调查 ....................................................................................................193 21.在窗体上添加按钮、选项框和其它控件 ...............................................................................194 22.更改控件名称...........................................................................................................................197 23.设置其它控件属性...................................................................................................................197 24.准备工作表以储存窗体数据 ...................................................................................................198 25.显示自定义窗体.......................................................................................................................199 26.设置TAB顺序..............................................................................................................................199 27.了解窗体和控件事件...............................................................................................................200 28.编写VBA过程对窗体和控件事件反应 .....................................................................................201 29.编写过程来初始化窗体...........................................................................................................201 30.编写过程填充列表框控件.......................................................................................................203 31.编写过程控制选项按钮...........................................................................................................203 32.编写过程同步文字框和旋转按钮 ...........................................................................................204 33.编写过程关闭用户窗体...........................................................................................................204 34.转移窗体数据到工作表...........................................................................................................205 35.使用INFO SURVEY应用程序.........................................................................................................206 36.应用程序示例 2:学生和考试 ................................................................................................206 37.使用多页和TABSTRIP控件..........................................................................................................206 38.给窗体STUDENTS AND EXAMS自定义窗体编写VBA过程................................................................208 39.使用自定义窗体STUDENTS AND EXAMS .........................................................................................212 40.接下来……...............................................................................................................................214 第十一章 自定义集合和类模块..........................................................................................214 1.使用集合.....................................................................................................................................214 2.声明自定义集合.........................................................................................................................215 3.给自定义集合添加对象.............................................................................................................215 4.从自定义集合移出对象.............................................................................................................216 5.创建自定义对象.........................................................................................................................217 6.创建类.........................................................................................................................................218 7.变量声明.....................................................................................................................................218 8.定义类的属性.............................................................................................................................218 9.创建PROPERTY GET过程.................................................................................................................219 10.创建PROPERTY LET过程...............................................................................................................219 11.创建类方法...............................................................................................................................220 12.创建类的示例...........................................................................................................................220 13.类模块里的事件过程...............................................................................................................221 14.创建用户界面...........................................................................................................................221 15.观察VBA过程的执行.................................................................................................................229 16.接下来……...............................................................................................................................231 第十二章 使用VBA创建自定义菜单和工具栏.......................................................................231 1.工具栏.........................................................................................................................................232 2.创建自定义工具栏.....................................................................................................................233 3.删除自定义工具栏.....................................................................................................................235 4.使用COMMANDBAR的属性................................................................................................................235 5.使用COMMANDBAR控件....................................................................................................................235 6.理解和使用控件属性.................................................................................................................237 7.控件方法.....................................................................................................................................239 8.使用菜单.....................................................................................................................................240 9.菜单编程.....................................................................................................................................241 10.创建子菜单...............................................................................................................................243 11.修改内置快捷菜单...................................................................................................................244 12.创建快捷菜单...........................................................................................................................247 13.接下来……...............................................................................................................................249 第十三章 调试VBA过程和处理错误.....................................................................................249 1.测试VBA过程...............................................................................................................................249 2.终止过程.....................................................................................................................................249 3.使用断点.....................................................................................................................................250 4.在中断模式下使用立即窗口.....................................................................................................253 5.使用STOP语句 ..............................................................................................................................254 6.添加监视表达式.........................................................................................................................254 7.清除监视表达式.........................................................................................................................256 8.使用快速监视.............................................................................................................................256 9.使用本地窗口和调用堆栈对话框 .............................................................................................257 10.逐句运行VBA过程.....................................................................................................................258 11.逐句运行过程...........................................................................................................................259 12.逐过程执行过程.......................................................................................................................259 13.设置下一条语句.......................................................................................................................260 14.显示下一条语句.......................................................................................................................260 15.终止和重新设置VBA过程.........................................................................................................260 16.了解和使用条件编译...............................................................................................................260 17.操纵书签...................................................................................................................................262 18.捕捉错误...................................................................................................................................262 17.接下来……...............................................................................................................................266 第十四章 微软EXCEL 2002 中的事件编程...........................................................................266 1.事件过程介绍.............................................................................................................................266 2.激活和失活事件.........................................................................................................................267 3.事件次序.....................................................................................................................................268 4.工作表事件.................................................................................................................................268 5.工作簿事件.................................................................................................................................272 6.图表事件.....................................................................................................................................282 7.内嵌图表事件.............................................................................................................................284 8.可为应用软件对象识别的事件 .................................................................................................285 9.查询表时间.................................................................................................................................288 10.接下来……...............................................................................................................................289 第十五章 在EXCEL里使用ACCESS........................................................................................289 1.对象库.........................................................................................................................................289 2.建立对对象库的引用.................................................................................................................292 3.链接到ACCESS...............................................................................................................................293 4.使用AUTOMATION链接到ACCESS数据库...........................................................................................293 5.使用DAO链接到ACCESS数据库.....................................................................................................295 6.使用ADO链接到ACCESS数据库.....................................................................................................295 7.从EXCEL执行ACCESS任务...............................................................................................................296 8.创建新ACCESS数据库...................................................................................................................296 9.打开ACCESS窗体...........................................................................................................................298 10.打开ACCESS报表.........................................................................................................................300 11.运行ACCESS查询.........................................................................................................................301 12.运行选择查询...........................................................................................................................302 13.运行参数查询...........................................................................................................................303 14.调用ACCESS函数.........................................................................................................................304 15.获取ACCESS数据到EXCEL工作表.................................................................................................304 16.使用GETROWS方法获取数据.......................................................................................................304 17.使用COPYFROMRECORDSET方法获取数据.......................................................................................305 18.使用TRANSFERSPREADSHEET方法获取数据....................................................................................306 19.使用OPENDATABASE方法...............................................................................................................307 20.从ACCESS数据创建文本文件.....................................................................................................309 21.从ACCESS数据创建查询表.........................................................................................................310 22.在EXCEL里使用ACCESS数据.........................................................................................................311 23.用ACCESS数据创建内嵌图表.....................................................................................................311 24.传输EXCEL电子表格到ACCESS数据库.........................................................................................313 25.将EXCEL电子表格链接到ACCESS数据库.....................................................................................313 26.将EXCEL电子表格导入ACCESS数据库.........................................................................................314 27.放置EXCEL数据到ACCESS表中.....................................................................................................314 28.接下来……...............................................................................................................................316
非常详尽的Excel_VBA程序设计,好不容易才整理搜索到的。 一、VBA语言基础 1 第一节 标识符 1 第二节 运算符 1 第三节 数据类型 1 第四节 变量与常量 1 第五节 数组 2 第六节 注释和赋值语句 2 第七节 书写规范 2 第八节 判断语句 2 第九节 循环语句 3 第十节 其他类语句和错误语句处理 4 第十一节 过程和函数 5 一.Sub过程 5 二.Function函数 5 三.Property属性过程和Event事件过程 5 第十二节内部函数 6 一.测试函数 6 二.数学函数 6 三.字符串函数 6 四.转换函数 6 五.时间函数 7 第十三节 文件操作 7 文件 7 删除 7 打开 7 读入 8 写入 8 关闭 8 其他文件函数 8 二、Visual BASIC程序设计网络教学 8 第一课 VBA是什么 8 1.1 VBA是什么 8 1.2 EXCEL环境中基于应用程序自动化的优点 9 1.3 录制简单的 9 1.4 执行 10 1.5 查看录制的代码 10 1.6 编辑录制的代码 11 1.7 录制的局限性 12 1.8 小结 12 第二课 处理录制的 12 2.1 为指定快捷键 12 2.2 决定保存的位置 13 2.3 个人工作簿 13 2.3.1 保存到个人工作簿 13 2.3.2 使用并编辑个人工作簿中的 13 2.4 将指定给按钮 14 2.5 将指定给图片或其他对象 14 2.6 小结 14 第三课 学习控件 15 3.1 EXCEL开发过程简介 15 3.2 认识不同的控件 15 3.3 向工作表添加控件 15 3.4 设置控件的特性 16 3.5 给控件命名 16 3.6 使用用户窗体 16 3.7 疑难解答 17 第四课 理解变量和变量的作用 17 4.1 代码存在的位置:模块 17 4.2 对模块的概览 18 4.2.1 创建过程 18 4.2.2 运行 19 4.3 保存对模块所做的改变 19 4.4 变量 19 4.4.1 变量的数据类型 20 4.4.2 用Dim语句创建变量(声明变量) 21 4.4.3 变量命名的惯例 21 4.4.4 使用数组 22 4.4.5 变量赋值 23 第五课 利用VBA设置工作表使用权限 23 1.使用With语句。 25 2.使用对象变量。 25 方法3:减少对象的激活和选择 26 方法4:关闭屏幕更新 26 第六课 提高ExcelVBA的效率 27 方法1:尽量使用VBA原有的属性、方法和Worksheet函数 27 方法2:尽量减少使用对象引用,尤其在循环中 28 1.使用With语句。 28 2.使用对象变量。 28 3.在循环中要尽量减少对象的访问。 28 方法3:减少对象的激活和选择 28 方法4:关闭屏幕更新 29 第七课 如何在Excel里使用定时器 29 三、学习微软 Excel 2002 VBA 编程和XML,ASP技术 31 第一章 电子表格自动化简介和了解命令 31 1了解 31 2命令的普通应用 31 3写之前的计划 32 4录制 33 5运行 34 6修改代码 35 7添加注释 38 8分析代码 38 9清除代码 39 10测试修改好的 40 11两个层面运行的方法 40 12完善你的代码 41 13重新命名 43 14运行的其它方法 43 15使用键盘快捷键运行 43 16通过菜单运行 44 17通过工具栏按钮运行 46 18通过工作表里面的按钮运行 47 19保存 48 20打印 48 21保存在个人工作簿 48 22打开含有的工作簿 50 23VB编辑窗口 51 24了解工程浏览窗口 51 25了解属性窗口 52 26了解代码窗口 52 27 VB编辑器里的其它窗口 54 28接下来…… 55 第二章 VBA 第一步 55 1了解指令,模块和过程 55 2 VBA工程命名 55 3模块重命名 56 4从其它工程调用过程 57 5了解对象,属性和方法 58 6学习对象,属性和方法 59 7句法和文法 61 8打断很长的VBA语句 63 9了解VBA错误 63 10查找帮助 65 11语法和编程快捷助手 66 12属性/方法列表 67 13常数列表 67 14参数信息 68 15快速信息 68 16自动完成关键字 68 17缩进/凸出 69 18设置注释块/解除注释块 69 19使用对象浏览器 69 20使用VBA对象库 74 21用对象浏览器来定位过程 75 22使用立即窗口 75 23获取立即窗口里的信息 77 24学习对象 77 25电子表格单元格操作 78 26使用Range属性 78 27使用Cells属性 78 28使用Offset属性 79 29选择单元格的其它方法 80 30选择行和列 80 31获取工作表信息 81 32往工作表输入数据 81 33返回工作表中的信息 81 34单元格格式 81 35移动,复制和删除单元格 82 36操作工作簿和工作表 82 37操作窗口(Windows) 83 38管理Excel应用程序 84 39接下来…… 84 第三章 了解变量,数据类型和常量 84 1保存VBA语句的结果 85 2变量是什么 85 3数据类型 85 4如何产生变量 86 5如何声明变量 86 6明确变量的数据类型 88 7变量赋值 89 8强制声明变量 91 9了解变量范围 92 10过程级别(当地)变量 92 11模块级别变量 92 12工程级别变量 93 13变量的存活期 94 14了解和使用静态变量 94 15声明和使用对象变量 95 16使用明确的对象变量 95 17查找变量定义 96 18在VB过程里面使用常量 96 19内置常量 96 20接下来…… 97 第四章 VBA过程:子程序和函数 98 1.关于函数过程 98 2.创建函数过程 98 3.执行函数过程 100 4.从工作表里运行函数过程 100 5.从另外一个VBA过程里运行函数过程 102 6.传递参数 102 7.明确参数类型 103 8.按地址和按值传递参数 104 9.使用可选的参数 105 10.定位内置函数 106 11.使用MsgBox函数 107 12.MsgBox函数的运行值 111 13.使用InputBox函数 111 14.数据类型转变 113 15.使用InputBox方法 114 16.使用主过程和子过程 116 17.接下来…… 118 第五章 基于VBA做决定 118 1.关系和逻辑运算符 119 2.If…Then语句 119 3.基于多于一个条件的决定 121 4.The If…Then…Else语句 122 5.If…Then…ElseIf语句 125 6.嵌套的If…Then语句 126 7.Select Case语句 127 8.和Case子句一起使用Is 128 9.确定Case子句里数值的范围 129 10.在Case子句里确定多个表达式 130
### 回答1: Excel VBA用宏下载是指在Excel中使用VBA编写的代码,用于自动执行一系列的操作。下面将介绍三个常用的代码。 首先,常用的代码是用于自动筛选数据的。我们可以通过编写代码,实现根据指定条件对数据进行筛选。例如,我们可以编写一个代码,使得只显示满足某一条件的数据,从而快速找到我们需要的信息。 其次,常用的代码是用于自动运算的。我们可以编写代码来执行一些常见的运算操作,比如求和、平均值等。通过编写代码,可以简化我们对数据进行统计和运算的过程,提高工作效率。 最后,常用的代码是用于自动排列和格式化表格的。我们可以编写代码来自动调整表格的布局和格式,使之更加美观和易读。例如,我们可以编写一个代码,将数据按照指定的规则排序,并自动添加边框和颜色。 总之,Excel VBA用宏下载是为了提高我们在Excel中的工作效率而编写的一系列自动化代码。通过编写这些代码,可以简化我们的操作流程,节省时间,提高效率。 ### 回答2: 在Excel VBA中,是指一系列的命令和操作的集合,可以用于自动化完成特定的任务或提供更方便的功能。在Excel中下载常用的方法有以下几种: 1. 通过录制下载:在Excel中,我们可以通过录制的方式来记录下我们的操作步骤,然后保存为VBA代码。录制的方法是点击“开发工具”选项卡中的“”按钮,之后按照提示进行操作即可。录制完后,我们可以将保存下来并在以后需要的时候运行。 2. 通过VBA编辑器下载:VBA编辑器是Excel中编写和编辑VBA代码的工具。我们可以通过“开发工具”选项卡中的“Visual Basic”按钮或按下“Alt+F11”快捷键来打开VBA编辑器。在VBA编辑器中,我们可以创建新的模块,并在模块中编写下载所需的代码。 3. 通过导入文件下载:我们可以从其他来源下载文件,并将其导入到Excel中。导入文件的方法是打开VBA编辑器,然后选择“文件”菜单中的“导入文件”,在弹出的对话框中选择文件并点击“打开”。导入后,我们就可以在Excel中使用这个了。 此外,我们还可以通过自定义快捷键或在Excel中添加按钮来运行下载的。为了更好地使用宏功能,我们需要熟悉VBA语言的基本知识和常见的代码。可以通过学习相关的教程、参考手册或在线资源来提高编写、修改和运行的能力。最后,为了确保的安全性,我们应该只下载和运行可信的文件,并注意避免下载和运行未知来源的文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值