首页 文章

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

提问于
浏览
1

作为Excel中VBA的新用户,我正在尝试完成以下操作:
1)检查一个名为"Index"的工作表中一列的多行是否有条件(我的条件是在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 回答

  • 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表中有任何你不想复制的公式(但是值),或者保持两个顺序相同 .

相关问题