【问题标题】:Copying a variable range based on nonempty text fields基于非空文本字段复制变量范围
【发布时间】:2015-03-03 05:40:42
【问题描述】:

在 worksheet1 ('add') 中,我有一个表格,范围从 A4Z14。它用于显示具有不同港口的船舶的航行,并自动计算时间和日期。我想将此表(此特定航次)复制到另一个包含船舶完整行程的工作表 2('schedule')。为此,我使用 VBA 将范围复制到剪贴板。 (我用它运行了一些其他宏,但解释变得有些复杂。)

我的问题:我只想复制包含端口调用的范围。端口在 C 列中输入,因此范围为 C4C14。因此,如果航程中只有三个端口,C4C6 包含端口名称,C7C14 为空或 0。复制的范围应为 A4:Z6。如果有五个端口,则范围应为A4:Z8

由于对于某些单元格需要复制公式,而对于某些只有值(来自一般输入表),我首先插入了完整的范围,然后复制/粘贴了范围的值以打破与通用输入表的链接。

Dim myC As Range
Set myC = ActiveCell
Application.CutCopyMode = False
          'insert 
Sheets("Add").Select
Rows("5:14").Select
Selection.COPY
Sheets("Schedule").Select
myC.Select
ActiveCell.Offset(1, 0).Select
Selection.Insert Shift:=xlDown
Application.CutCopyMode = False

'paste values voy#/ports            
Sheets("Add").Select
Application.CutCopyMode = False
Range("B5:C14").Select
Selection.COPY
Sheets("Schedule").Select
myC.Select
ActiveCell.Offset(1, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues,Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
Application.CutCopyMode = False

--> 为范围 E5:J14M5:R14T5:T14AB5:AG14 重复粘贴值

范围的行号应取决于范围C4:C14内的最后一行具有值

我查看了许多不同的问题/答案,但都与我的略有不同。

【问题讨论】:

  • 请分享您目前所编写的代码。
  • 请在修改后的问题中找到代码

标签: excel vba range conditional-statements copying


【解决方案1】:

您可能需要更改它在日程表中的粘贴位置,因为我不知道 ActiveCell 在哪里......但这应该可以完成工作。

Dim lngRowSearch As Long
lngRowSearch = 3
With Sheets("Add")
    Do
        lngRowSearch = lngRowSearch + 1
    Loop Until .Cells(lngRowSearch + 1, 3) = 0
    .Range("A4:Z" & lngRowSearch).Copy
End With
Sheets("Schedule").Cells(1, 1).PasteSpecial xlPasteValues

【讨论】:

  • 太棒了!多谢!我设法在没有太多麻烦的情况下安装它,并且它按我希望的那样工作。
猜你喜欢
  • 2021-05-04
  • 2013-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多