Excel 基于非空文本字段复制变量范围
在工作表1(“添加”)中,我有一个从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。如果有五个端口,则范围
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
请分享您迄今为止所使用的代码。请在中查找代码!谢谢!我没有太多麻烦就把它装进去了,而且它的工作原理和我所希望的一样。