首页 > 解决方案 > 使用带有 VBA 的表格从另一个工作表复制和粘贴

问题描述

Dim Revenue As Worksheet
Set Revenue = ThisWorkbook.Sheets("Revenue")
 
ThisWorkbook.Activate
Revenue.Range("GVS1Revenue").Find("Energy Revenue").Select

Dim Row1 As String
Row1 = ActiveCell.Row

Dim ReportDate As Variant
ReportDate = Revenue.Range("V19")

Revenue.Range("GVS1Revenue").Find(ReportDate).Select

Dim Column1 As Long
Column1 = ActiveCell.Column

Dim StartingPoint As String
StartingPoint = ActiveSheet.Range("GVS1Revenue").Cells(1, 1)
 
Dim StartingPointAddress As String
StartingPointAddress = ActiveSheet.Range("GVS1Revenue").Cells(1, 1).Address
        
Dim NumberOfRows As Integer
NumberOfRows = Cells(Rows.Count, Columns(0, StartingPoint)).End(xlUp).Row
            
Revenue.Range("StartingPoint").Select

ActiveCell.Offset(Row1 - NumberOfRows, Column1).PasteSpecial xlPasteValues

总体而言-我正在尝试使用表格来避免直接引用单元格。我发现添加的行或列可以完全破坏 VBA 代码。

所以,我的第一次尝试是尝试从另一个工作表中复制一个值并将其粘贴到一个表中。这将每月使用一次,因此变量会发生变化。这意味着我需要使用索引/匹配方法,因为日期逐月变化(所以这是一个移动变量)。我试图用这段代码做的是在表格中找到行和列的地址,这样我就可以将另一个工作簿中的内容粘贴到所述行和列的交叉点(比如 excel 中的索引匹配)。

我想如果我能找到我的表的第一行/列的地址,我可以根据我在 row1 和 column1 中识别的变量使用偏移量。我遇到的问题是 row1 和 column1 变量,这告诉我我的工作表地址,但我不确定如何在表格中使用它。我认为如果我从 row1 和 column1 变量中减去工作表位置,这将引导我找到我在表中的位置,但是 1) 我一直在 ActiveCell.Offset(Row1 - NumberOfRows, Column1).PasteSpecial xlPasteValues 上抛出错误' 一点代码,不知道我的方法对不对。

感谢任何愿意通读本文并尝试解决问题的人,您比我更好!

标签: excelvba

解决方案


推荐阅读