使用VBA复制单元格

时间:2014-05-04 15:14:01

标签: excel vba excel-vba

我想要单元格的复制内容并围绕它们制作边框。这是一个简单的例子:

example

我尝试编写宏,复制顶部值,制作较低的单元格并制作边框:

example2

For i = 0 To M_NAME.find(What:="*", After:=M_NAME, _
            SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column 

            M_NAME.Offset(1, i) = M_NAME.Offset(0, i)
            M_NAME.Offset(1, i).HorizontalAlignment = xlCenter
            M_NAME.Offset(1, i).Font.Color = rgbWhite

            With M_NAME.Offset(1, i).Borders
                .LineStyle = xlContinuous
                .Color = rgbWhite
                .Weight = 3
            End With
        Next i

M_NAME是第一个顶级单元格。

1 个答案:

答案 0 :(得分:1)

您的源单元似乎已经有边框,因此无需再次创建它们。 您还需要考虑使用合并单元格所涉及的问题。 Find方法只会找到合并区域的左上角单元格,因此会导致代码出现问题。

无需逐个单元格复制。

如果要复制第一行,边框,合并单元格以及所有内容,可以使用以下内容:

Option Explicit
Sub CopyRow()
    Dim rToCopy As Range, rDest As Range
    Dim M_NAME As Range

Set M_NAME = Range("M_NAME")
Set rToCopy = Range(M_NAME, Cells.Rows(M_NAME.Row).Find(what:="*", after:=M_NAME, _
    LookIn:=xlValues, searchdirection:=xlPrevious).MergeArea)

Set rDest = rToCopy.Offset(rowoffset:=1)
rToCopy.Copy rDest
End Sub