Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.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 我正在尝试将第一行的格式复制到我的范围内的其余行_Excel_Vba - Fatal编程技术网

Excel 我正在尝试将第一行的格式复制到我的范围内的其余行

Excel 我正在尝试将第一行的格式复制到我的范围内的其余行,excel,vba,Excel,Vba,我创建了2个函数,但都给出了运行时错误“1004”:应用程序定义的或对象定义的错误。你能告诉我这里的错误是什么吗 Sub test() Dim RowCount, ColumnCount As Integer Dim sRangeSt, sRangeEn, tRangeSt, tRangeEn As String Dim tmpRange As Range RowCount = Range("main").Rows.Count Colum

我创建了2个函数,但都给出了运行时错误“1004”:应用程序定义的或对象定义的错误。你能告诉我这里的错误是什么吗

Sub test()
    Dim RowCount, ColumnCount As Integer
    Dim sRangeSt, sRangeEn, tRangeSt, tRangeEn As String
    Dim tmpRange As Range

        RowCount = Range("main").Rows.Count
        ColumnCount = Range("main").Columns.Count

        'prepare range start and end cell-addresses
        sRangeSt = Range("main").End(xlToLeft).Offset(1, 0).Address
        sRangeEn = Range("main").End(xlToLeft).Offset(1, 0).End(xlToRight).Address
        tRangeSt = Range("main").End(xlToLeft).Offset(2, 0).Address
        tRangeEn = Range("main").End(xlToLeft).Offset(RowCount - 1, ColumnCount - 1).Address

        'Perform style copy
        Range(sRangeSt & ":" & sRangeEn).Copy
        'Worksheets("Report").Select
        Worksheets("Report").Range(tRangeSt & ":" & tRangeEn).PasteSpecial xlPasteFormats
End Sub


Sub test2()
    Dim sRangeSt, sRangeEn, tRangeSt, tRangeEn As String
    sRangeSt = Range("main").End(xlToLeft).Offset(1, 0).Address
    sRangeEn = Range("main").End(xlToLeft).Offset(1, 0).End(xlToRight).Address

    'Perform style copy
    Range(sRangeSt & ":" & sRangeEn).Copy

    For Each Row In Range("main").Rows
        Range(Row.Address).PasteSpecial xmlPasteFormts
    Next Row
End Sub

第一个块在最后一行给出错误。我尝试减少目标行的行数,但在excel范围4096行时运行良好,但在行数较大的范围内运行失败,出现上述错误。

您收到该错误,因为您的范围未完全限定。仅通过在
中用End With
将代码括起来将无法限定范围。在每个范围前添加一个
(点)。比如说

With Sheets("Report")
    RowCount = Range("main").Rows.Count
    ColumnCount = Range("main").Columns.Count
变成

With Sheets("Report")
    RowCount = .Range("main").Rows.Count
    ColumnCount = .Range("main").Columns.Count

同样,对于其他人

谢谢你的回复-悉达塔。实际上,我这里没有使用'With-EndWith'这个块。as“main”是工作簿范围的范围。我们可以忽略这一点。。我l更新我的代码。错误发生在最后一行。。。它可以粘贴到4096行,但在下一行中会给出“应用程序定义或对象定义错误”。存储在
main
中的地址是什么?@L42-address是“=Report!”$A$14:$P$12458',范围是“工作簿”。我尝试了你的代码,它正在工作。也许你应该改进你的变量声明,这样你就能得到你想要的结果。请参阅以获取一些指导。