1

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

我之前在 VBA 代码中问了一个问题,将满足条件的行中的选定列复制到另一张纸上,并且 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

谢谢,约翰M

4

1 回答 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 表中有任何您不想复制的公式(但值),则将两者保持相同的顺序。

于 2013-03-15T17:42:24.093 回答