Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.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
Excel 使用VBA复制格式_Excel_Vba - Fatal编程技术网

Excel 使用VBA复制格式

Excel 使用VBA复制格式,excel,vba,Excel,Vba,我有一个脚本,一个非常简单的脚本,它是一个更大的脚本的一部分,现在这最后一点给了我一些问题,我不知道为什么 这是脚本中给我带来问题的部分 Option Explicit Sub Test() Dim wsJL As Worksheet 'Jobs List Dim lastrow As Long Set wsJL = Sheets("Jobs List") lastrow = wsJL.Range("B" & Rows.Count).End

我有一个脚本,一个非常简单的脚本,它是一个更大的脚本的一部分,现在这最后一点给了我一些问题,我不知道为什么

这是脚本中给我带来问题的部分

Option Explicit


Sub Test()

    Dim wsJL As Worksheet 'Jobs List
    Dim lastrow As Long    
    Set wsJL = Sheets("Jobs List")

    lastrow = wsJL.Range("B" & Rows.Count).End(xlUp).Row
    wsJL.Range("B3:N3").Copy
    wsJL.Range("B4:N" & lastrow).PasteSpecial xlPasteFormats

End Sub
这是练习册

就我所知,我正在做的事情不应该发生。现在的情况是,它覆盖了所有内容,而不是用最初复制的内容替换格式

有人能试着复制一下,告诉我我的错误在哪里吗


谢谢。

您无需复制和粘贴即可完成相同的操作。它需要更多的代码,但不使用剪贴板,也不选择工作表上的任何内容

它运行速度快得惊人。我很想知道这在你的工作电脑上是否比你已经尝试过的更好

试试这个:

Sub WriteInsteadOfCopyFormatting()

    Dim wsJL As Worksheet 'Jobs List
    Dim rng As Range ' Columns B through N
    Dim dateRng As Range ' Column F
    Dim numbersRng As Range ' Columns J through L
    Dim NCMRRng As Range ' Column M

    Dim lastRow As Long
    Dim firstCopyRow As Long

    Set wsJL = Sheets("Jobs List")

    lastRow = wsJL.Range("B" & Rows.Count).End(xlUp).Row
    firstCopyRow = 4
    Set rng = wsJL.Range("B" & firstCopyRow & ":N" & lastRow)
    Set dateRng = wsJL.Range("F" & firstCopyRow & ":F" & lastRow)
    Set numbersRng = wsJL.Range("J" & firstCopyRow & ":J" & lastRow)
    Set NCMRRng = wsJL.Range("M" & firstCopyRow & ":M" & lastRow)

    With rng
        .Interior.Color = 16777215
        .Font.Name = "Calibri"
        .Font.Size = 11
        .Font.Color = vbBlack
        .BorderAround Weight:=xlThin, Color:=vbBlack
    End With
    With rng.Borders(xlInsideVertical)
        .Weight = xlThin
        .Color = vbBlack
    End With
    With rng.Borders(xlInsideHorizontal)
        .Weight = xlThin
        .Color = vbBlack
    End With

    dateRng.NumberFormat = "d/mm/yyyy"
    numbersRng.NumberFormat = "#,##0"
    NCMRRng.NumberFormat = "0######"

End Sub

这个代码看起来不错。你确定这是不起作用的部分吗?你能试着在你的工作表上运行这个代码吗?(很抱歉,我无法从我当前的计算机下载您的文件进行测试…)我刚刚运行了它,看起来不错。将格式向下复制到
lastrow
。未将第3行中的任何数据复制到其他行上。为了测试,我甚至对格式做了一些修改。成功了。我明天上班时会试试,我的电脑在工作时有时会表现得很滑稽。我不知道为什么,但确实如此。嗯。。。谢谢你的测试,我觉得它看起来不错,我只是需要一个验证。好的,再试一次,找出问题所在,是EBKAC。再往下一点有一间牢房,我不知道在那里。现在已经修复了。我在s&Gs上试用过,它的速度快了一点,但不足以保证额外的代码。请注意,使用剪贴板复制和粘贴与选择相同,在代码中选择几乎应该(也可以)总是被避免的。阅读这篇优秀的文章,了解更多细节:谢谢,我会调查的。我现在做这件事只是为了让事情开始运转。