ここから本文です

【ExcelVBA】 .End(xlDown).Rowを使って行削除したいのですが

con********さん

2013/11/1717:59:58

【ExcelVBA】 .End(xlDown).Rowを使って行削除したいのですが

こんにちは。 ExcelVBAの勉強を始めたばかりの者です。
Excel2000を使っています。
添付画像のようにsheet2にデータ数の変動するデータがあり、
このシートの[A1:データのある行のG列]だけをsheet1へペーストしたいのですが
うまくできません。

添付画像の場合ですと[A1:G10]だけの選択コピーペーストをしたいので、
-----------------

Sub シート1にペースト()

Dim コピー元 As Variant
Dim 最後のデータ As Long

コピー元 = ActiveSheet.Name

'*******最後のデータを取得
最後のデータ = ActiveSheet.Range("B5").End(xlDown).Row

'*******コピー元からのペースト
Worksheets(コピー元).Range("A1:G" & 最後のデータ).Copy _
Destination:=Sheets(1).Range("A1")

End Sub

------------------------

と書いて実行すると、[A1:G21]までがコピーされます。

元のシート(sheet1)ですが、
・F列に残高計算の式があり、
・E,F列はIMEコントロールで”半角英数字”にしています
・A列も日付の書式設定が入っています
・罫線の入った4~20行目がそのようになっています

どのような書き方をすれば
[A1:データのある行のG列]だけをsheet1へペーストできるのでしょうか?

変数の指定のしかたなどに間違いがあるでしょうか?

補足補足:

すみません!間違えました!

正:
元のシート(sheet2)ですが、
・F列に残高計算の式があり、

の間違いです。すみません!!

xlDown,Sheet1,Excel VBA,Excel2000,As Variant,A5&quot,B5&quot

閲覧数:
429
回答数:
1
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

seg********さん

2013/11/1719:11:12

= ActiveSheet.Range("B5").End(xlDown).Row

= ActiveSheet.Range("A21").End(xlUP).Row
にするか
= ActiveSheet.Range("A5").End(xlDown).Row
に変更

質問した人からのコメント

2013/11/17 21:46:38

ありがとうございます。教えて頂いたコードで思い通りの処理ができました。ただ、今やったら元のコードでも思い通りの結果が…。 変数に重複がないか、これを機に確認してみようと思います。

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる