具有可变范围的条件复制(非空文本字段)

时间:2015-01-05 16:26:57

标签: vba variables range conditional copying

美好的一天,

我已经看过许多不同的问题/答案,但所有这些都与我的略有不同,它让我发疯,因为我无法弄明白。请在下面找到问题:

在workheet1('add')中有一个A4到Z14的表。它用于显示具有不同端口的船舶的航行并自动计算时间和日期。我想把这张桌子(这个特定的航程)复制到另一张工作表2('时间表'),并附上船只的完整行程。要做到这一点,我必须将范围复制到vba中的剪贴板(我用它运行一些其他的宏,但解释变得有些复杂)。

我的问题:我想只复制包含portcalls的范围。端口以colunm C输入,因此范围为C4至C14。因此,如果航程中只有三个端口,则C4到C6包含端口名称,而C7到C14为空或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的粘贴值:J14,M5:R14,T5:T14,AB5:AG14

范围的行数应取决于lastrow,其值在C4范围内:C14

1 个答案:

答案 0 :(得分:0)

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