Vba 创建搜索标题并复制粘贴列的Excel宏

Vba 创建搜索标题并复制粘贴列的Excel宏,vba,excel,Vba,Excel,我不熟悉Excel宏。我有一些标题分散在许多页中的专栏。我想在有光标的列中键入一个标题,并将带有该标题副本的列粘贴到带有光标的列中 是否可以通过录制宏来执行此操作?怎么用?如果没有,我如何以编程方式执行此操作?标题是否在不同的工作表中多次出现?如果不是,那么我建议使用一个简单的If语句 如果('columnheading'='要检查的列','line1ref','line1refin other sheet') 为此,您必须检查每一列 是否有许多工作表,列是否始终位于同一位置?以下是一些关于复制

我不熟悉Excel宏。我有一些标题分散在许多页中的专栏。我想在有光标的列中键入一个标题,并将带有该标题副本的列粘贴到带有光标的列中


是否可以通过录制宏来执行此操作?怎么用?如果没有,我如何以编程方式执行此操作?

标题是否在不同的工作表中多次出现?如果不是,那么我建议使用一个简单的If语句

如果('columnheading'='要检查的列','line1ref','line1refin other sheet')

为此,您必须检查每一列


是否有许多工作表,列是否始终位于同一位置?

以下是一些关于复制找到的列的代码的注释

Dim ws As Worksheet
Dim r As Range
Dim CopyTo As String

'You must run the code from a suitable active cell '
strFind = ActiveCell.Value
'Assumes the column data will be written into the next row down '
CopyTo = ActiveCell.Offset(1, 0).Address

'Look at each worksheet'
For Each ws In ActiveWorkbook.Worksheets
    'Skip the active worksheet '
    If ws.Name <> ActiveSheet.Name Then
        'Get the last cell and row'
        lc = ws.Cells.SpecialCells(xlCellTypeLastCell).Column
        lr = ws.Cells.SpecialCells(xlCellTypeLastCell).Row

        'Use the first row for search range '
        Set r = ws.Range(ws.Cells(1, 1), ws.Cells(1, lc))

        'Find the first whole cell to match the active cell '
        Set f = r.Find(strFind, , , xlWhole)
        'If it is found ... '
        If Not f Is Nothing Then
           'Copy the whole column to the copy position '
           ws.Range(ws.Cells(2, f.Column), _
           ws.Cells(lr, f.Column)).Copy (ActiveSheet.Range(CopyTo))
        End If
    End If
Next
Dim ws As工作表
调光范围
将复制设置为字符串
'必须从适当的活动单元格运行代码'
strFind=ActiveCell.Value
'假定列数据将写入下一行'
CopyTo=ActiveCell.Offset(1,0).Address
“查看每个工作表”
对于ActiveWorkbook.Worksheets中的每个ws
“跳过活动工作表”
如果是ws.Name ActiveSheet.Name,那么
'获取最后一个单元格和行'
lc=ws.Cells.SpecialCells(xlCellTypeLastCell).Column
lr=ws.Cells.SpecialCells(xlCellTypeLastCell).Row
'将第一行用于搜索范围'
设置r=ws.Range(ws.Cells(1,1),ws.Cells(1,lc))
'查找与活动单元格匹配的第一个完整单元格'
Set f=r.Find(strFind,,xlother)
“如果找到了……”
如果不是的话,那么f什么都不是
'将整个列复制到复制位置'
ws.Range(ws.Cells(2,f.Column)_
ws.Cells(lr,f.Column)).Copy(ActiveSheet.Range(CopyTo))
如果结束
如果结束
下一个

您是否正在寻找自动完成新标题?或者将该特定列中的所有值复制到新列?两种解决方案都可以接受。自动完成似乎更好;我甚至不知道这是一个选择。非常感谢你的时间。不幸的是,我在复制时遇到此错误:运行时错误“1004”:Range类的复制方法失败。