我有一段代码,可以将一行从一个 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/