gpt4 book ai didi

VBA Excel 如何插入预定行的标题

转载 作者:行者123 更新时间:2023-12-02 23:34:49 25 4
gpt4 key购买 nike

我很难查找我正在尝试做的事情,因为我很难将我正在尝试做的事情用语言表达出来。

基本上,我想做的是获取一组标题(可能长 10-12 列),并且在宏中,我想将这些标题粘贴到(替换)工作表 1 第 1 行中的当前标题我目前的设置方式是,当生成该工作表时,我的数据将从该工作表的第 2 行开始插入。我编写了一个宏,它将把工作表 1 的第 1 行复制到每个现有工作表中,但是,我不必手动插入第一个工作表的标题(它应该是宏的一部分)。

所以我想我需要帮助如何在工作表 1 的第 1 行上插入一行预定标题(我想将实际的标题名称写入宏代码中)。

编辑:

Application.CutCopyMode = True

Dim Counter As Long

Counter = Sheets.Count
For i = 1 To Counter
Sheets("Sheet1").Cells(1, 1).EntireRow.Copy
Sheets(i).Cells(1, 1).PasteSpecial

Next i

Application.CutCopyMode = False

这就是我用来复制代码的东西,效果很好。我想要的是能够放入一行代码,基本上是“粘贴“标题 1”“标题 2”“标题 3”等”到第 1 行工作表 1 的相应列中。所以我已经有了标题名称挑选出来,但我想将它们直接放入宏代码中。因此,如果我的标题是“Apply Banana Lettuce Tomato”,我想将这些单词放入宏代码中,并将它们粘贴到上面列出的复制粘贴代码之前的工作表 1 第 1 行中。

最佳答案

由于您提前知道了 header ,因此您可以将它们与下面我的 header 交换。这应该获取您输入的标题,并将它们粘贴到所有工作表中。注意:这还将删除任何工作表上第 1 行中的所有信息,因此如果您不希望发生这种情况,请注释/删除该行。

Sub AddHeaders()
Dim headers() As Variant
Dim ws As Worksheet
Dim wb As Workbook

Application.ScreenUpdating = False 'turn this off for the macro to run a little faster

Set wb = ActiveWorkbook

headers() = Array("Superhero", "City", "State", "Country", "Publisher", "Demographics", _
"Planet", "Flying Abilities", "Vehicle", "Sidekick", "Powers")
For Each ws In wb.Sheets
With ws
.Rows(1).Value = "" 'This will clear out row 1
For i = LBound(headers()) To UBound(headers())
.Cells(1, 1 + i).Value = headers(i)
Next i
.Rows(1).Font.Bold = True
End With
Next ws

Application.ScreenUpdating = True 'turn it back on

MsgBox ("Done!")

End Sub

您还可以将其用作通用宏 - 它可以防止需要复制/粘贴(这是在 VBA 中学习的一件好事,以避免复制/粘贴),并且您还可以创建动态 header 数组,如果您的 header 经常改变。让我知道这是否符合您正在寻找的内容!

编辑:有关数组的注释。默认情况下,具有 5 个项目的数组将从 0 到 4 进行索引。如果执行此循环(伪代码):

myArray() = Array("Batman","Superman","Catwoman","Rorschach")
for i = 1 to uBound(myArray())
debug.print myArray(i)
Next i

它只会打印“超人”、“猫女”、“罗夏墨迹”。这是因为“Batman”作为第一个条目,索引为 0。只需将 for 行替换为 for i = lBound(myArray()) to uBound(myArray()) 即可从第一个条目转到最后一个条目。或者,您可以使用 for i = 0 to uBound(...

但是您会注意到,在该循环中,我有 .Cells(1, 1+i)...。这是因为我的循环从 0 开始,所以我必须向 i 添加 1,这样它就会从第二列开始。

不喜欢那个从零开始的数组(从 0 开始)?可以从1开始!如何?只需执行 Dim myArray(1 to 10) 即可。这将创建一个数组,但从 1 开始。然后,此示例将打印所有四个人:

for i = 1 to uBound(myArray())
debug.print myArray(i)
next i

对于循环整个数组,一个技巧是仅使用 lBound(array())uBound(array()) (第一个值),和最后的值,分别。这还允许您执行 .Cells(1,i).Value ...,因为 i 从 1 开始。这有意义吗?

关于VBA Excel 如何插入预定行的标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31540366/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com