【问题标题】:Insert Text array as Headers (VBA, EXCEL)插入文本数组作为标题(VBA,EXCEL)
【发布时间】:2016-09-26 22:15:35
【问题描述】:

背景

我创建了一个 VBA 宏来从各个业务部门提取财务数据。

目标

合并每个业务部门的财务信息后,插入一行带有列标题以准备数据透视表报告。

方法

  1. 定义工作表
  2. 定义“标题”数组
  3. 在 Excel 表格顶部插入 1 行,将所有其他行向下移动 1
  4. 将标题数组文本值插入列中

代码库

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)

  1. “未设置对象变量或With块变量”@行.Cells(1, 1 + i).Value = headers(i)

问题

  • 当我明确定义Set ws = ThisWorkbook.Sheets("CONSOLIDATED") 时,为什么 VBA 说没有设置变量(假设为“ws”)

【问题讨论】:

  • 您确定工作表在 ThisWorkbook 而不是 ActiveWorkbook 中吗?
  • 编辑:出于某种原因,当我在 VBA 编辑器之外时,此代码运行正常。上面的所有代码都有效。给您带来的不便深表歉意

标签: excel vba


【解决方案1】:

我怀疑工作表可能不是您告诉代码所在的位置,或者工作表名称实际上不正确。 (可能会将ThisWorkbookActiveWorkbook 混淆?)

你也可以像这样重写代码:

Sub InsertHeaders()

    Sheets("CONSOLIDATED").Cells(1).Resize(1, 6).Value = Array("Fiscal Year", "Month", "Month_Year", "Project", "Local Expense", "Base Expense")

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-27
    相关资源
    最近更新 更多