VBA复制单元格的值和格式

use*_*959 14 excel vba

如何修改以下代码,以便不仅复制值,还复制字体样式,例如粗体或非粗体.谢谢

Private Sub CommandButton1_Click()
Dim i As Integer
Dim a As Integer
a = 15
For i = 11 To 32
  If Worksheets(1).Cells(i, 3) <> "" Then
    Worksheets(2).Cells(a, 15) = Worksheets(1).Cells(i, 3).Value
    Worksheets(2).Cells(a, 17) = Worksheets(1).Cells(i, 5).Value
    Worksheets(2).Cells(a, 18) = Worksheets(1).Cells(i, 6).Value
    Worksheets(2).Cells(a, 19) = Worksheets(1).Cells(i, 7).Value
    Worksheets(2).Cells(a, 20) = Worksheets(1).Cells(i, 8).Value
    Worksheets(2).Cells(a, 21) = Worksheets(1).Cells(i, 9).Value
    a = a + 1
  End If
Next i
Run Code Online (Sandbox Code Playgroud)

jpw*_*jpw 27

您可以尝试使用复制/粘贴,而不是直接设置值,而不是:

Worksheets(2).Cells(a, 15) = Worksheets(1).Cells(i, 3).Value
Run Code Online (Sandbox Code Playgroud)

试试这个:

Worksheets(1).Cells(i, 3).Copy
Worksheets(2).Cells(a, 15).PasteSpecial Paste:=xlPasteFormats
Worksheets(2).Cells(a, 15).PasteSpecial Paste:=xlPasteValues
Run Code Online (Sandbox Code Playgroud)

要将字体设置为粗体,您可以保留现有的分配并添加以下内容:

If Worksheets(1).Cells(i, 3).Font.Bold = True Then
  Worksheets(2).Cells(a, 15).Font.Bold = True
End If
Run Code Online (Sandbox Code Playgroud)

  • 这个答案的+1.想知道它们是否是布尔值那么也许一行可以工作`工作表(1).细胞(i,3).Font.Bold =工作表(2).细胞(a,15).Font.Bold` (2认同)

eye*_*s54 5

Microsoft Excel VBA 文档中的此页面帮助了我:https://learn.microsoft.com/en-us/office/vba/api/excel.xlpastetype

它提供了一系列选项来自定义粘贴方式。例如,您可以xlPasteAll(可能是您正在寻找的),或xlPasteAllUsingSourceTheme,甚至xlPasteAllExceptBorders