我想将过滤表格中的范围复制到另一张表格中。起点很简单但是我只想根据用户输入的单元格向下复制多行。当我对数字进行硬编码时,我可以使它工作,但我想根据单元格进行编码。
变量lastrow是我需要有细胞H4的地方。 (我的电子表格中的H4是用户键入要复制的行数的位置)
到目前为止我的代码是:
Sub Line()
Dim Copyrange As String
Dim lastrow As Range
Startrow = 8
lastrow = 10
Let Copyrange = "B" & Startrow & ":" & "H" & lastrow
Range(Copyrange).Select
End Sub
非常感谢任何帮助
答案 0 :(得分:1)
听起来你需要的就是这个吗?
Let Copyrange = "B" & Startrow & ":" & "H" & Range("H4")
答案 1 :(得分:0)
改为将我的答案改为以下内容。不是最好的解决方案,因为使用SpecialCells充其量是棘手的,但这可能会很好地满足您的需求。
Sub Illusion()
Dim Source, Dummy As Worksheet
Dim SRow, LRow As Long
Application.ScreenUpdating = False
With ThisWorkbook
Set Source = .ActiveSheet
Set Dummy = .Sheets.Add(After:=Sheets(Sheets.Count))
End With
SRow = 8
LRow = Range("H4").Value + 1
'Change the H10000 below to the correct end row of your unfiltered table.
Source.Range("B" & SRow & ":H10000").SpecialCells(xlCellTypeVisible).Copy
With Dummy
'We create an illusion that we copy only the names we need by bridging using a dummy sheet and copying from there.
.Range("A1").PasteSpecial xlPasteValues
.Range("A1:A" & LRow).Copy
'Paste to desired location as values as well.
.Delete
End With
Application.ScreenUpdating = True
End Sub
我在这里做的是,我们将可见的单元格复制到虚拟工作表中,调整要从该虚拟工作表复制的名称数量,并随意执行任何操作,然后删除虚拟工作表。这是一个快速和肮脏的,但它不得不去复杂的SpecialCells。