基于非空文本字段复制变量范围

Copying a variable range based on nonempty text fields

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

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

由于某些单元格需要复制公式,而某些单元格只需要复制值(来自一般输入 sheet),我首先插入完整范围,然后插入 copied/pasted 值它上面的范围以打破 link 与一般输入 sheet.

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

范围内

我看过许多不同的problems/answers,但都与我的略有不同。

您可能需要更改它在附表中的粘贴位置 sheet,因为我不知道 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