【问题标题】:How to copy data from one worksheet to another (using an indirect reference for the latter worksheet)如何将数据从一个工作表复制到另一个工作表(使用后一个工作表的间接引用)
【发布时间】:2019-05-16 19:38:19
【问题描述】:

我正在尝试将一些简单的 VBA 函数添加到工作中的 excel 文件(我在一家营销公司工作)并且正在努力编写一个可以将数据从一张表复制到另一张表的按钮(它需要复制到的位置每天更换)

我正在使用 VBA 来尝试选择我需要复制的值范围(并且它有效),但我正在努力将它们粘贴到所需的日常变化的单元格中。 我已经尝试编写一个公式来提供通往正确单元格的路径,然后在 VBA 代码中引入一个间接函数以进行粘贴,但我似乎无法让它工作。

Sub Gross_Wrap_Click()

Sheets("AUTOM").Select
Range("C1:C5").Select
Selection.Copy

Sheets("Daily").Select
Range([indirect("'AUTOM!O7'")]).Select
Selection.Paste

End Sub

我希望最终产品是 AUTOM 表中的单元格 C1:C5 的内容,复制并粘贴到 DAILY 表中所需的单元格(所需的单元格来自一个函数,并包含在 VBA 中,具有间接路径) .

但是,我只是收到大量不同的错误消息

【问题讨论】:

  • 是否应该将单元格粘贴到 Daily 表上的某个日期(例如今天或昨天)旁边?
  • @BigBen 是的,不是直接在日期旁边的单元格中,而是在与昨天日期相同的列中

标签: excel vba


【解决方案1】:

如果我没有在阅读您的代码时弄乱它,应该这样做:

Option Explicit
Sub Test()

    Dim rng As Range 'Range object, means a cell or a range of cells
    With ThisWorkbook 'here you reference the workbook, so you don't need to write Thisworkbook everytime, just "."
        Set rng = .Sheets("Daily").Find(.Sheets("AUTOM").Range("O7")) 'we set the object rng to the cell in sheets Daily which has the Cell O7 from AUTOM sheet value.
        .Sheets("AUTOM").Range("C1:C5").Copy 'copy the range from AUTOM
        rng.PasteSpecial xlPasteValues  'and paste it's values to the range object we declared and defined above
    End With

End Sub

【讨论】:

  • 谢谢!我会试一试,我对这些东西很陌生,你介意告诉我每行的作用吗?
  • @Liam,希望对您有所帮助。
  • 目前这似乎不起作用(错误消息:“对象不支持此属性或方法”),这是因为没有正确引用范围(范围所需的单元格数量通过公式在 O7 中指定,即公式在单元格内生成“Mq7:Mq9”)
  • @Liam 尝试将.Find 更改为.Range 并在.Range("O7") 之后添加此.Value
  • 那行得通,但是,有没有办法让它只复制单元格中的值,而不是公式和格式?谢谢!
猜你喜欢
  • 1970-01-01
  • 2018-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多