在VBA中使用单元格引用

时间:2013-10-20 22:10:27

标签: vba excel-vba excel

我想将过滤表格中的范围复制到另一张表格中。起点很简单但是我只想根据用户输入的单元格向下复制多行。当我对数字进行硬编码时,我可以使它工作,但我想根据单元格进行编码。

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

非常感谢任何帮助

2 个答案:

答案 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。