【问题标题】:Paste same value across multiple cell in different sheet在不同工作表的多个单元格中粘贴相同的值
【发布时间】:2019-10-04 15:51:33
【问题描述】:

我必须使用 VBA 将一些数据从工作表复制粘贴到另一个工作表中。 我已经能够毫无问题地将第一组数据从工作表 A 复制粘贴到工作表 B。 我现在需要将工作表 A 中的相同单元格值复制到工作表 B 的范围中

我尝试定义工作表 B 中的最后一个单元格和工作表 B 中的第一个单元格,以定义应复制工作表 A 中的值的范围。

这是 lastrow 的代码(工作正常)

Last_Row2 = Sheets("Records").Range("a1").End(xlDown).Row

起始单元格代码

legrng = Sheets("Records").Cells(Rows.count, 4).End(xlUp).Offset(1)

将值粘贴到范围内的代码

Range("LegRng & Last_row2").Copy Destination = "cell value in sheet A"

我在这里收到一个错误:

Range("LegRng & Last_row2").Copy Destination = "cell value in sheet A"

错误是:方法 'Range of object_global' 失败

你能告诉我我做错了什么吗?

感谢您的帮助/解释

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    你有几个错误

    首先,您尝试引用名称为 LegRng & Last_row2 的范围。这样的范围在您的工作表中不存在,它不能存在,因为这个名称是非法的。

    如果你想设置对包含多个单元格的范围的引用,你可以这样做:

    Sheets("Records").Range(startCell, endCell)
    

    所以首先您需要设置对startCellendCell 的引用(我假设您希望最后一个单元格也在第4 列中):

    Set startCell = Sheets("Records").Cells(Rows.count, 4).End(xlUp).Offset(1)
    Set endCell = Sheets("Records").Cells(Last_Row2, 4)
    

    您可以使用其属性Value 用值填充范围

    rng.Value = "value"
    

    所以,最后你的代码应该是这样的:

    With Sheets("Records")
        Last_Row2 = .Range("a1").End(xlDown).Row
        Set startCell = .Cells(Rows.count, 4).End(xlUp).Offset(1)
        Set endCell = .Cells(Last_Row2, 4)
        .Range(startCell, endCell).value = "cell value in sheet A"
    End With
    

    【讨论】:

    • 你真是太棒了:代码按照我的想法工作,快速回复,很好的解释。谢谢你!你太棒了。
    【解决方案2】:

    如果没有包含在测试startCell.Row 是否小于Last_Row2If Statement 中,则如果重新运行,接受的答案将导致问题,代码将每次将value from sheet A 放在下一个单元格中宏被重新运行。

    您应该始终定义和分配变量。

    使用Resize 可以让您不需要endCell

    从 startCell 中删除 Offset 可确保 Resize 的正确计数

    Sub FillInBlankCellsWithValue()
    Dim Last_Row2 As Long, startCell As Range
    
        With Sheets("Records")
            Last_Row2 = .Range("a1").End(xlDown).Row
            Set startCell = .Cells(Rows.Count, 4).End(xlUp)
    
            'Use the If statement to test that the startCell.Row is less then the Last_Row2 
            If startCell.Row < Last_Row2 Then
    
                'Offset to the first empty cell and resize by subtracting the startCell.Row
                'from Last_Row2, to set the range for the value from SheetA.
                startCell.Offset(1).Resize(Last_Row2 - startCell.Row).Value = Sheets("SheetA").Range("A1")
                'Change the worksheet and paste value's cell range, as needed
    
    
            End If
        End With
    End Sub 
    

    【讨论】:

      猜你喜欢
      • 2019-07-23
      • 1970-01-01
      • 1970-01-01
      • 2014-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多