我对这些东西很陌生,即在Excel中编写宏。我需要修改一个宏,其中的内容从1张复制到另一张,但是在这里仅复制值,而我也想复制单元格格式化。我已经在许多论坛上进行了搜索,并试图复制他们的格式,但仍然没有运气。我可能会错过我的代码中的某些内容。
stractivesheet-复制内容的纸
res-粘贴内容的表格
With Sheets(strActiveSheet)
.Select
.Range(.Cells(DataStartRow - 1, 1), .Cells(DataStartRow - 1, 4)).Select
Selection.Copy
End With
'Paste
Sheets(res).Select
Cells(9, 1).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
此代码仅复制该值。我试图使用以下代码,但无济于事:
Sheets(res).Select
Cells(9, 1).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
如果我使用以下代码,则只会复制格式,但省略了值:
Sheets(res).Select
Cells(9, 1).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
可能是我认为我不是在编写正确格式的超级代码。
有人可以帮助我获取正确的格式以复制和粘贴值,以及从一个纸上到另一张的单元格格式?
darren-我已经编辑了我的代码并按照您的答案指定:
Dim wrkSht As Worksheet
Set wrkSht = ThisWorkbook.Worksheets("Sheet1")
Dim resSheet As Worksheet
Set resSheet = ThisWorkbook.Worksheets("Demo")
With wrkSht
.Range(.Cells(DataStartRow - 1, 1), .Cells(DataStartRow - 1, 4)).Copy
End With
With resSheet
.Cells(9, 1).PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
.Cells(9, 1).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End With
,但仍然将数字作为我的单元格的格式,而不是在Sheep1中分配给单元的自定义。
如果我错过了此代码中的某些内容,您可以帮忙吗?
如果要复制所有可以将所有内容复制并粘贴到同一命令中的目标。
Sub Test()
Dim DataStartRow As Long
DataStartRow = 2
Dim wrkSht As Worksheet
Set wrkSht = ThisWorkbook.Worksheets("Sheet1")
Dim res As Worksheet
Set res = ThisWorkbook.Worksheets("Sheet2")
With wrkSht
.Range(.Cells(DataStartRow - 1, 1), .Cells(DataStartRow - 1, 4)).Copy Destination:=res.Cells(9, 1)
End With
' Copy user selection
' Selection.Copy Destination:=res.Cells(9, 1)
' Paste to user selection
' With wrkSht
' .Range(.Cells(DataStartRow - 1, 1), .Cells(DataStartRow - 1, 4)).Copy Destination:=Selection
' End With
End Sub
如果您只需要值和单元格格式,则可以使用两个pastepecial命令:
Sub Test()
Dim DataStartRow As Long
DataStartRow = 2
Dim wrkSht As Worksheet
Set wrkSht = ThisWorkbook.Worksheets("Sheet1")
Dim res As Worksheet
Set res = ThisWorkbook.Worksheets("Sheet2")
With wrkSht
.Range(.Cells(DataStartRow - 1, 1), .Cells(DataStartRow - 1, 4)).Copy
End With
With res
.Cells(9, 1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
.Cells(9, 1).PasteSpecial Paste:=xlPasteFormats
End With
' Copy user selection
' Selection.Copy
' Paste to user selection
' With Selection
' .PasteSpecial Paste:=xlPasteValuesAndNumberFormats
' .PasteSpecial Paste:=xlPasteFormats
' End With
End Sub
注意:我没有在代码中选择任何单元格。您只需要引用它们即可。