【问题标题】:Find a date in a column and paste data array in neighbouring cells在列中查找日期并将数据数组粘贴到相邻单元格中
【发布时间】:2014-08-18 13:57:46
【问题描述】:

大家好,我有以下问题: 我有 2 个文件 - A 和 B 在文件 A 中,我在单元格 A1 中有一个准确的日期 在 c3:z3 范围内,我有要复制并粘贴到文件 B 中的值

文件 B 在 A 列中有一个日期列表。

问题:程序必须将文件 A 单元格 A1 中的日期与文件 B 中的日期之一匹配,然后将文件 A 单元格 c3:z3 中的值粘贴到相邻单元格中

到目前为止,我想出了这个,但是我收到关于“With”的错误并且不知道如何解决它

Sub copy_GeoFac()
 'get date
   Windows("File_A.xlsm").Activate

    Dim data As Date
     data = Worksheets("Sheet1").Cells(1, "A").Value
     Range("C3:Z3").Select
    Application.CutCopyMode = False
    Selection.copy

    Windows("File_B.xlsx").Activate
     Dim FindString As Date
     Dim Rng As Range
     FindString = CLng(data)
     With Sheets("GEOF").Range("A:A")
     Worksheets("GEOF").Activate
      Set Rng = Range("A:A").Find(data)

    Rng.Offset(0, 1).Select
  Selection.Paste.Value
  End With

    End Sub

提前致谢

【问题讨论】:

  • 你还在用 With 块做什么?在 With 块内的 4 行中,我看不到你曾经利用过 With 块。
  • 嗯,我是新手,从论坛和说明中学习,所以我正在尝试调整从不同来源找到的代码。 WITH来自这样一段代码。
  • 好吧,这就是 With 块的工作原理...... With Sheets("GEOF").Range("A:A") 的重点是您可以使用 .Find(data) 而不是Sheets("GEOF").Range("A:A").Find(data)。当您要对激活 With 块的变量执行多项操作时,请使用 With 块。
  • 如果是我,我会在这里去掉 With 块,因为您只在 With 块内引用 Sheets("GEOF").Range("A:A") 一次。
  • 您是否绝对确定第一个工作表的 A1 中的值在目标电子表格的 A 列中?如果您找到的范围返回 null,则此代码应引发 With Block Variable Not Set 错误。

标签: excel vba date find


【解决方案1】:

您的代码只需进行一次更改即可为我工作。替换:

Selection.Paste.Value

与:

Selection.PasteSpecial Paste:=xlPasteValues

Selection.Paste 没有 Value 方法。那不是有效的语法。此替换将使您的代码适用于复制和粘贴值。显然,您仍然需要修改代码以适应在输出电子表格中找不到日期的情况,但这是一个简单的 if 语句。

【讨论】:

  • 完美!效果很好。我刚刚删除了“With”
【解决方案2】:

所以最终的代码是这样的:

'sell ENEMONA Windows("Daily_Trading volumes_template.xlsm").Activate 工作表(“时间表”)。激活 如果 Range("AA13").Value > 0 那么 范围(“C13:Z13”)。选择 Application.CutCopyMode = False 选择.复制

Windows("EG_Sell.xlsx").Activate
Worksheets("ENEM").Activate

 Set Rng = Range("A:A").Find(data)
 Rng.Offset(0, 1).Select
 Selection.PasteSpecial Paste:=xlPasteValues
'copy prices
Windows("Daily_Trading volumes_template.xlsm").Activate
Worksheets("Schedules").Activate
    Range("AH13:BE13").Select
Application.CutCopyMode = False
Selection.copy
   Windows("EG_Sell.xlsx").Activate
Worksheets("ENEM").Activate

 Set Rng = Range("AC:AC").Find(data)
 Rng.Offset(0, 1).Select
 Selection.PasteSpecial Paste:=xlPasteValues
    End If

我添加了一个 If 来检查我感兴趣的范围是否有要复制的值。第二个复制过程获取一些与第一个范围相关的数据并将其粘贴到相应的工作表中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-27
    • 1970-01-01
    • 2019-01-08
    相关资源
    最近更新 更多