【发布时间】:2016-09-26 22:15:35
【问题描述】:
背景
我创建了一个 VBA 宏来从各个业务部门提取财务数据。
目标
合并每个业务部门的财务信息后,插入一行带有列标题以准备数据透视表报告。
方法
- 定义工作表
- 定义“标题”数组
- 在 Excel 表格顶部插入 1 行,将所有其他行向下移动 1
- 将标题数组文本值插入列中
代码库
Sub addHeaders()
Dim ws As Worksheet
Dim headers() As Variant
'Define worksheet and desired headers
Set ws = ThisWorkbook.Sheets("CONSOLIDATED")
headers() = Array("Fiscal Year", "Month", "Month_Year", "Project", "Local Expense", "Base Expense")
'Insert row for header placement
Rows(1).Insert shift:=xlShiftDown
'Insert headers
With ws
For i = LBound(headers()) To UBound(headers())
.Cells(1, 1 + i).Value = headers(i)
Next i
End With
End Sub
问题(S)
- “未设置对象变量或With块变量”@行
.Cells(1, 1 + i).Value = headers(i)
问题
- 当我明确定义
Set ws = ThisWorkbook.Sheets("CONSOLIDATED")时,为什么 VBA 说没有设置变量(假设为“ws”)
【问题讨论】:
-
您确定工作表在
ThisWorkbook而不是ActiveWorkbook中吗? -
编辑:出于某种原因,当我在 VBA 编辑器之外时,此代码运行正常。上面的所有代码都有效。给您带来的不便深表歉意