VBA代码 - 保留复制到不同工作表的数据的格式

时间:2013-03-15 17:31:06

标签: excel vba formatting copy-paste

作为Excel中VBA的新用户,我正在尝试完成以下操作:
1)检查条件中名为“索引”的工作表中的一列中的多行(我的条件是在列J中的单元格中查找字母Y)
2)将符合条件的每一行中选定的列复制到VBA代码中编程的另一个表格,例如, “Sheet2的”
3)保留复制的单元格的格式,特别是公式和粗体字。

我之前在VBA code to copy selected columns from rows that meet a condition to another sheet问了一个问题,并且ATl LED提供了以下代码,它可以工作和复制值而不是格式化(我忘了在我的问题中包含这个)

我试验了代码,并在IF语句中调整了.Value到.FormulaR1C1。公式被复制并在复制到的工作表中处理,即Sheet2,但我无法使格式化工作。

我错过了什么?

Sub try3()
Dim i, x As Long
Dim Y as String
Dim ws1 As Worksheet: Set ws1 = ActiveWorkbook.Sheets("Index")
Dim ws2 As Worksheet: Set ws2 = ActiveWorkbook.Sheets("Sheet2")
x = 5
Y = "Y"
For i = 2 To 500:
If ws1.Cells(i, 10) = Y Then
   Range(ws2.Cells(x, 1), ws2.Cells(x, 7)).Value = Range(ws1.Cells(i, 3), ws1.Cells(i, 9)).Value
  x = x + 1
End If
Next i
End Sub

谢谢, JohnM

1 个答案:

答案 0 :(得分:1)

放置以下代码行:

Range(ws1.Cells(i, 3), ws1.Cells(i, 9)).Copy Range(ws2.Cells(x, 1), ws2.Cells(x, 7))

而不是你的行:

Range(ws2.Cells(x, 1), ws2.Cells(x, 7)).Value = Range(ws1.Cells(i, 3), ws1.Cells(i, 9)).Value

如果在ws1表中有任何你不想复制的公式(但是值),或者两者保持相同的顺序。