0

我想将一个范围从过滤表复制到另一个工作表。起点很简单,但是我只想根据用户输入的单元格向下复制一些行。当我对数字进行硬编码时,我可以让它工作,但是我想基于一个单元格来做这个。

变量 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

非常感谢任何帮助

4

2 回答 2

1

听起来你只需要这个?

Let Copyrange = "B" & Startrow & ":" & "H" & Range("H4")
于 2013-10-21T00:16:54.123 回答
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。

于 2013-10-21T02:57:52.263 回答