Vba 复制公式而不更改单元格引用

Vba 复制公式而不更改单元格引用,vba,excel,Vba,Excel,我正在根据选中的复选框链接复制信息列。除了包含公式的几行之外,其他一切都可以工作。我需要复制实际公式,或者换句话说,我不希望公式根据复制到的位置更改其单元格引用。我尝试添加一行,用公式重新复制这几行,但无法使其工作。(我在代码中添加了一条注释,以显示从何处获得错误。) 在A列中总是有文本“EE Only”,我将其定义为TextToFind。需要复制的公式将从该行减去1开始,总共5行。所以,如果第22行是“EE Only”,那么我需要复制第21到25行 我在这里试图做的是继续使用我的代码,然后用实

我正在根据选中的复选框链接复制信息列。除了包含公式的几行之外,其他一切都可以工作。我需要复制实际公式,或者换句话说,我不希望公式根据复制到的位置更改其单元格引用。我尝试添加一行,用公式重新复制这几行,但无法使其工作。(我在代码中添加了一条注释,以显示从何处获得错误。)

在A列中总是有文本“EE Only”,我将其定义为TextToFind。需要复制的公式将从该行减去1开始,总共5行。所以,如果第22行是“EE Only”,那么我需要复制第21到25行

我在这里试图做的是继续使用我的代码,然后用实际公式第二次复制公式行

    'Called from AddWorksheet
Sub CopyFinal(orgSheet As Worksheet, destSheet As Worksheet)

Const TextToFind As String = "EE Only"
Dim ws As Worksheet
Dim RowNum As Range
Set ws = ActiveSheet
Dim J As Integer
Dim lastColumn As Long
Dim benRow As Long

J = 2
lastColumn = 2
'Counts the number of benefits on each sheet.  Assumes that they will not go past row 40
benRow = WorksheetFunction.CountA(orgSheet.Range("B3:B40"))

Application.ScreenUpdating = False

Do Until IsEmpty(orgSheet.Cells(3, J))
Set RowNum = orgSheet.Range("A:A").Find(what:=TextToFind, lookat:=xlWhole)
    If orgSheet.Cells(80, J) = True Then
        orgSheet.Columns(1).Copy destSheet.Columns(1)
        orgSheet.Cells(3, J).Resize(benRow).Copy
        With destSheet.Cells(3, lastColumn)
            .PasteSpecial Paste:=xlPasteAll
            .PasteSpecial Paste:=xlPasteColumnWidths
            Range("A1").Select
        End With
        '**The line below is giving an error
        orgSheet.Cells(RowNum, J).Resize(4).Formula = destSheet.Cells(RowNum, lastColumn).Formula

    End If
    J = J + 1
    lastColumn = destSheet.UsedRange.Columns(destSheet.UsedRange.Columns.Count).Column + 1
Loop

orgSheet.Rows(1).Copy destSheet.Rows(1)
Range("D1").ColumnWidth = 26.14

Call AddShapes

Application.ScreenUpdating = True
Application.CutCopyMode = False

End Sub

您将
TextToFind
定义为字符串,然后减去
TextToFind-1
。这是类型不匹配。我猜你想先
找到
文本;类似于
orgSheet.Colums(1)。Find(TextToFind)。Offset(-1,9)。Resize(5)
。不确定这是否能达到你的最终目标,但这部分肯定需要纠正。我做了一些修改(更新了原始帖子)。我将Dim RowNum添加为Range,然后尝试将其设置为要查找的文本。现在我得到一个类型不匹配错误。我查过了,没有找到行号。不可否认,我是头脑发热,但正在尝试……它应该是
单元格(RowNum.Row,J)
:)。除此之外,您为什么要将公式从
destSheet
复制到
orgSheet
中,而不是以其他方式复制?感谢您指出复制错误。我要花很长时间才能看到这一点。我做了改变,它“基本上”起作用了。它正在复制公式,但不在正确的列中。我现在也需要计算出偏移量。感谢您为我指出了正确的方向。
destSheet.Cells(RowNum.Row-1,lastColumn)。Resize(5)。Formula=orgSheet.Cells(RowNum.Row-1,J)。Resize(5)。Formula