首页 > 解决方案 > 对象变量或块变量错误vba excel宏

问题描述

我正在研究一个在不同范围内循环的宏(O2 直到最后一张表中 O 行中最后使用的单元格),并将每个值复制到一个名为“Overview”的表中,向下偏移 3 行并在最后一列后面的列中如果该值不为 0,则在“概述”中使用列。之后,如果范围内有任何值不是 0,我想将 o1 从最后一张表复制到最后使用的列后面的列中的第一个单元格工作表“概述”(将包括标题)。我基于我已经在其他正在工作的宏中使用的其他代码片段构建了一些代码,并相应地更改了行和列。但是,现在我得到一个对象变量或块变量未设置错误。我找不到错误,有人可以帮助我并告诉我我需要改变什么(也许还有如何改变?)。

Sub Sendmemoremetrics()
    '
    ' Sendmemoremetrics Macro
    '
    Dim cRange As Range
    Dim valuessendmemore As Range
 
    Dim Cell As Range
    Dim wsDestination As Worksheet, wsSource As Worksheet
        
    'set worksheets
    With ThisWorkbook
        Set wsSource = .Worksheets(Sheets.Count)
        Set wsDestination = .Worksheets("Overview")
    End With

    LastRow1 = Sheets(Sheets.Count).Cells(Rows.Count, "O").End(xlUp).Row
    LastColumn1 = wsDestination.Cells(5, wsDestination.Columns.Count).End(xlToLeft).Column
    cRange = wsSource.Range(wsSource.Cells(2, 15), wsSource.Cells(LastRow1, 15))

    For Each Cell In cRange
        If Cell.Value > 0 Then
            wsDestination.Cells(Cell.Row, LastColumn1).offset(3, 1) = Cell.Value
            Sheets(Sheets.Count).Range("O1").Select
            Selection.Copy
            Sheets("Overview").Range(4, LastColumn1).Paste
        End If
    Next Cell

    Call format_headlines
End Sub

标签: excelvbaobject

解决方案


正如@FaneDuru 已经回答的那样,请尝试:

Set cRange = wsSource.Range(wsSource.Cells(2, 15), wsSource.Cells(LastRow1, 15))

范围对象应显式“设置”


推荐阅读