Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA-将特定单元格复制到新添加的数据_Vba_Excel - Fatal编程技术网

VBA-将特定单元格复制到新添加的数据

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

下面是我用来向特定列添加数据的代码。 我希望能够循环工作表中的一个范围,并将范围(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 + 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)