Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 基于非空文本字段复制变量范围_Excel_Vba_Range_Conditional Statements_Copying - Fatal编程技术网

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

Excel 基于非空文本字段复制变量范围,excel,vba,range,conditional-statements,copying,Excel,Vba,Range,Conditional Statements,Copying,在工作表1(“添加”)中,我有一个从A4到Z14的表格。它用于显示具有不同港口的船舶的航程,并自动计算时间和日期。我想将此表(此特定航程)复制到另一个工作表2(“时间表”)中,并附上船舶的完整行程。为此,我使用VBA将范围复制到剪贴板。(我用它运行了一些其他宏,但解释起来有些复杂。) 我的问题是:我只想复制包含端口调用的范围。端口在C列中输入,因此范围为C4到C14。因此,如果航程中只有三个港口,C4至C6包含港口名称,C7至C14为空或0。然后,复制的范围应为A4:Z6。如果有五个端口,则范围

在工作表1(“添加”)中,我有一个从
A4
Z14
的表格。它用于显示具有不同港口的船舶的航程,并自动计算时间和日期。我想将此表(此特定航程)复制到另一个工作表2(“时间表”)中,并附上船舶的完整行程。为此,我使用VBA将范围复制到剪贴板。(我用它运行了一些其他宏,但解释起来有些复杂。)

我的问题是:我只想复制包含端口调用的范围。端口在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

范围的行号应取决于最后一行,其中的值在范围内
C4:C14


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

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

请分享您迄今为止所使用的代码。请在中查找代码!谢谢!我没有太多麻烦就把它装进去了,而且它的工作原理和我所希望的一样。