vba - 复制值而不是公式excel vba

标签 vba excel

我有一段代码,可以将一行从一个 Excel 复制到另一个 Excel。问题是 E 到 G 列、N 到 O 列引用了另一个 Excel,当它复制时,它复制的是公式而不是单元格值,导致按降序将公式重复到目标列。我尝试过隐藏/取消隐藏,但没有太大区别。目标列 D 将导致 D1= 1.xslm/sheet1/formula(n1) ; D2= 2.xslm/sheet1/formula(n2) ... - 这是来自源工作表列 D 的引用。在源中,值没问题,在目标中,公式是错误的,不应该有 n1 , n2 ....如果源行在目标中为 122,则应为 D1= 1.xslm/sheet1/formula(n122) 、 D2= 2.xslm/sheet1/formula(n122)

Sub copy1()
    Dim c As Range
    Dim j As Integer
    Dim Source As Worksheet
    Dim Target As Worksheet
    Dim Sour As String
    Dim Tar As String
    Dim path As String
    Dim AutoSR As Workbook
    Dim asrSheet As Worksheet
    Set AutoSR = ActiveWorkbook
    Set Target = AutoSR.ActiveSheet

    path = "c:\first.xlsm"
    Tar = "Sheet1"
    Set Source = Workbooks.Open(path).Sheets(Tar)
    Source.Unprotect Password:="XXX"
    Application.DisplayAlerts = False
    Columns("E:G").EntireColumn.Hidden = False
    Columns("N:O").EntireColumn.Hidden = False
    Source.Range("N:O").EntireColumn.Hidden = True
    For Each c In Source.Range("a1:a" & Cells.SpecialCells(xlCellTypeLastCell).Row)
        If c = lNum Then
           Source.Rows(c.Row).Copy Target.Rows(1)
        End If
    Next c
    Source.Range("E:G").EntireColumn.Hidden = True
    Source.Range("N:O").EntireColumn.Hidden = True
    Source.Protect Password:="XXX"
    Source.Activate
    ActiveWorkbook.Close SaveChanges:=True
    Set Source = Nothing

End Sub

最佳答案

替换:

Source.Rows(c.Row).Copy Target.Rows(1)

作者:

Source.Rows(c.Row).Copy 
Target.Rows(1).PasteSpecial xlPasteValues

这将粘贴值而不是公式

编辑 这个答案是一个快速而肮脏的修复!查看 Jeeped 的答案,以对 OP 代码进行更广泛的改进。

关于vba - 复制值而不是公式excel vba,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37155496/

相关文章:

sql-server - 使用 VBA 通过参数化查询在 Excel 中查询 SQL Server

vba - 如果工作簿中每个工作表不包含值,则删除它们的前 5 行

excel - 在 Excel VBA 中使用 Outlook 控件

excel - 对象/类的多个实例

javascript - jQuery 导出的文件在 Excel 中打开时显示错误

excel - 如何从开始编号和结束编号创建列表

vba - Excel 宏 - 数据操作

excel - 为什么命令提示符在两个位置之间切换?

excel - 如何将 IF 条件保存为 bool 变量?

sorting - 排序而不移动格式