1

こんにちは、事前に感謝します。私はデータセットを持っています。A3 から Z30 までとしましょう。行数と列数は異なります。セットにはブランクもあります。セクション全体を選択したいのですが、Z29とX30に空白があります

Range("A3").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.Copy

動作しません。

ただし、列 A の値は連続しています。だから私は最初の部分がうまくいくと思う

Range("A3").Select
    Range(Selection, Selection.End(xlDown)).Select

これは基本的なことのように思えるかもしれませんが、強調表示したすべての行をどのように選択するのですか? 私が言ったように、列と行の数が異なるため、これは動的である必要があります。

ああ、次の部分を理解するのを手伝ってくれるなら、ボーナスカルマと称賛. 範囲を選択して最後の行の直後に貼り付ける必要がありますが、この場合は最初のセルまたは A31 の値を変更する必要があり、それはシート 2 のリストから取得されています。

4

3 に答える 3

5

メソッドを使用し.EntireRowます。

次に例を示します。

Dim report as Worksheet
Set report = Excel.ActiveSheet

report.cells(1,1).EntireRow.Select

セル自体を選択する場合は、.UsedRangeメソッドを使用できます。

次に例を示します。

Dim report As Worksheet
Set report = Excel.ActiveSheet

report.Range(report.Cells(1, 1), report.Cells(1, report.UsedRange.Columns.Count)).Select

編集

質問のパート II の例を次に示します (要求に応じて)。

Sub test2()

Dim report As Worksheet
Set report = Excel.ActiveSheet

report.Cells(1, 1).EntireRow.Copy
report.Cells(report.UsedRange.Rows.Count + 1, 1).EntireRow.PasteSpecial xlPasteAll


End Sub

.UsedRangeメソッドには、値を持たないがユーザーによってフォーマットされたセルも含まれることに注意してください。たとえば、行 1000 のセルにボールド フォントを追加すると (テキスト自体を追加しなくても)、1000 に.UsedRange.Rows.Countなります。

さらに、詳細なガイダンスについては、次のリンクで私の回答を確認できます。ノートは初心者にとって非常に役立つと言われています。

于 2013-10-14T21:49:26.840 に答える
0

このを見てRange.CurrentRegionRange.Resizeと Range.Offset で何ができるかを検討すると、次のようになります。

Range("A3").CurrentRegion.Copy

さらに、Range.Select何が起こっているかをユーザーに見てもらいたい場合を除き、使用する必要はありません。(たとえば) a のRange.Select後に a (クリップボードにコピーする) の代わりに、ターゲット範囲に直接コピーSelection.Copy()する a を使用できます。Range.Copy(Range)

2番目の部分に関しては、次のことができます。

Dim CopyRow as Long
CopyRow = Range("A3").CurrentRegion.Rows.Count
Range("A3").CurrentRegion.Copy(Range("A3").CurrentRegion.Offset(CopyRow))
Range("A3").Offset(CopyRow) = x   ' Insert your reference to the Sheet 2 value here
于 2013-10-14T22:04:30.773 に答える