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 に答える