VBA-将特定单元格复制到新添加的数据
下面是我用来向特定列添加数据的代码。 我希望能够循环工作表中的一个范围,并将范围(A1:C1)的整个边框样式复制到新添加的数据中VBA-将特定单元格复制到新添加的数据,vba,excel,Vba,Excel,下面是我用来向特定列添加数据的代码。 我希望能够循环工作表中的一个范围,并将范围(A1:C1)的整个边框样式复制到新添加的数据中 Private Sub Add_Click() Dim sh As Worksheet Set sh = ThisWorkbook.Sheets("Sheet1") Dim n As Long n = sh.Range("A" & Application.Rows.Count).End(xlUp).Row sh.Range("A" & n
Private Sub Add_Click()
Dim sh As Worksheet
Set sh = ThisWorkbook.Sheets("Sheet1")
Dim n As Long
n = sh.Range("A" & Application.Rows.Count).End(xlUp).Row
sh.Range("A" & n + 1).Value = Me.Id.Value
sh.Range("B" & n + 1).Value = Me.Title.Value
sh.Range("C" & n + 1).Value = Me.Sev.Value
您只需复制范围即可
sh.Range("A1:C1").Copy
和粘贴格式
sh.Range("A" & n+1 & ":C" & n+1).PasteSpecial Paste:=xlPasteFormats
看起来OP并没有问他们真正想要什么,而是对一个复制所有格式而不仅仅是边框的答案感到满意。为了将来的读者,这里有一个只复制边框的方法
是否使用Application.Rows.Count编译?@QHarr是的,它确实存在,它表示活动工作表。与
ActiveSheet.Rows.Count相同ᴇ谢谢。新的东西。@QHarr无论如何,我觉得这没用。这可能是出于设计,因此任何未指定的内容(如行
)都可以自动默认为应用程序
。它是否只是边框格式?还有,你的回路在哪里?您正在查找最后一行,然后再查找另一行。你想循环到最后一行吗?@mesakon你知道这复制所有格式,而不仅仅是边框,对吗?@Pᴇʜ是的,我意识到,这就是我所需要的。@mesakon然后请编辑你的Q以反映这一点。就目前而言,这个A并没有回答你实际提出的问题。如果其他人搜索如何只复制边框格式并找到它,那么它就没有用了。。。
Private Sub CopyBorders(rSrc As Range, rDst As Range)
Dim BorderIndex As Long
Dim i As Long
If rSrc.Cells.Count <> rDst.Cells.Count Then Exit Sub
For i = 1 To rSrc.Cells.Count
For BorderIndex = 5 To 12
ApplyBorder rSrc.Cells(i), rDst.Cells(i), BorderIndex
Next
Next
End Sub
Private Sub ApplyBorder(rSrc As Range, rDst As Range, BorderIndex As Long)
Dim Bdr As Border
Set Bdr = rSrc.Borders(BorderIndex)
With rDst.Borders(BorderIndex)
.LineStyle = Bdr.LineStyle
If .LineStyle <> xlNone Then
.Color = Bdr.Color
.TintAndShade = Bdr.TintAndShade
.Weight = Bdr.Weight
End If
End With
End Sub
sh.Range("A" & n + 1).Value = Me.Id.Value
sh.Range("B" & n + 1).Value = Me.Title.Value
sh.Range("C" & n + 1).Value = Me.Sev.Value
'Copy Borders
CopyBorders sh.Range("A1:C1"), sh.Range("A" & n+1 & ":C" & n+1)