0

我有一张 2 张的 excel 电子表格。在第一张表中,我得到了一些值,当我单击一个按钮时,在第二张表中会发生以下情况: 1. 在顶部插入新行 2. 复制第一张表中的数据。

但是,在复制的单元格之后有一些带有公式的列,我不知道在插入新行后如何在 vbscript 中复制这些公式。

Sub Trade1()
    Sheets("Trades").Select
    Rows("2:2").Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("A2:R2").Select
    Selection.ClearContents
    Range("A2").Select
    Dim fromRange As Range, toRange As Range
    Set fromRange = Sheets("Enter Trade").Range("B2:B20")
    Set toRange = Sheets("Trades").Range("A2")
    fromRange.Copy
    toRange.PasteSpecial Paste:=xlPasteValues, Transpose:=True
End Sub
4

1 回答 1

1

插入新的第 2 行(使其内容现在位于第 3 行)后,我会将第 3 行复制回第 2 行(基本上是复制),然后使用要从工作表中移动的数据覆盖值交易范围 B2:B20,如下所示:

Sub Trade_Button_Click()

    Dim btn As Button
    Dim wsEntry As Worksheet
    Dim wsTrades As Worksheet

    Set wsEntry = Sheets("Enter Trade")
    Set wsTrades = Sheets("Trades")
    Set btn = wsEntry.Buttons(Application.Caller)

    wsTrades.Rows(2).Insert
    wsTrades.Rows(3).Copy wsTrades.Rows(2)
    With Intersect(wsEntry.Range("A2", wsEntry.Cells(Rows.Count, "A").End(xlUp)).EntireRow, wsEntry.Columns(btn.TopLeftCell.Column))
        wsTrades.Range("A2").Resize(, .Rows.Count).Value = Application.Transpose(.Value)
    End With

    Set wsTrades = Nothing
    Set wsEntry = Nothing

End Sub

我已在此处上传了您提供的工作簿的修改版本:https ://docs.google.com/file/d/0Bz-nM5djZBWYa0R5T2hXMERabjg/edit?usp=sharing

在修改后的版本中,我已将所有 Enter 按钮映射到上述宏。当我单击一个按钮时,它会复制正确列的值,并成功复制表格“交易”表中其余表格中的公式。

于 2013-08-20T19:02:16.370 回答