基于非空文本字段复制变量范围
Copying a variable range based on nonempty text fields
在工作sheet1 ('add') 我有一个 table,范围从 A4
到 Z14
。它用于显示船舶在不同港口的航行,并自动计算时间和日期。我想将此table(此特定航次)复制到另一部作品sheet2('schedule')中,其中包含该船的完整行程。为此,我使用 VBA 将范围复制到剪贴板。 (我用它运行了一些其他宏,但解释变得有些复杂。)
我的问题:我只想复制包含端口调用的范围。端口在 C 列中输入,因此范围为 C4
到 C14
。所以如果航程只有三个港口,C4
到C6
包含港口名称而C7
到C14
为空或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:J14
、M5:R14
、T5:T14
、AB5: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
在工作sheet1 ('add') 我有一个 table,范围从 A4
到 Z14
。它用于显示船舶在不同港口的航行,并自动计算时间和日期。我想将此table(此特定航次)复制到另一部作品sheet2('schedule')中,其中包含该船的完整行程。为此,我使用 VBA 将范围复制到剪贴板。 (我用它运行了一些其他宏,但解释变得有些复杂。)
我的问题:我只想复制包含端口调用的范围。端口在 C 列中输入,因此范围为 C4
到 C14
。所以如果航程只有三个港口,C4
到C6
包含港口名称而C7
到C14
为空或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:J14
、M5:R14
、T5:T14
、AB5: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