- ベストアンサー
エクセルBVA範囲
VBAの超初心者です、A1からZ95の範囲内でA1の列に文字が有る行をZ列まで選択コピーして 別のシートへ貼り付ける命令文を教えて下さい。ちなみにエクセル2003です。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>BVA範ーー>VBAのミスタイプ。お門が知られるので注意。 >A1からZ95の範囲内 A列からZまでで、の意味ではないのか? >A1の列に文字が有る行をZ列まで選択コピーして A列にデータがある行は、必ずB-Z列にもその同じ行分だけデータがあるのではないのか?長方形形。 質問の表現だと難しく考えてしまう。 ーー A-Z列までデータ最終行までをコピーして、他シートへ貼り付けたい、でわかる。 こういう類には (1)End(xlup) (2)Currentregion (3)UsedRange など有り (2)(3)はデータ内容のあり方によっては不適当な結果になるが、本件はどうかな。 ーー (1) Sub test01() Dim sh1, sh2 Set sh1 = Worksheets("Sheet1") Set sh2 = Worksheets("Sheet2") d = sh1.Range("A65536").End(xlUp).Row sh1.Range("A1:Z" & d).Copy sh2.Range("A1") End Sub ーーー データ最終行のとらえ方は Googleででも「VBA データ最終行」で照会すれば、すぐわかること。 VBAで毎行処理をする場合には、「いの1番」に学ぶ必要になること。 Range("A5").End(xlDown).Row や Sub test02() Range("A1").Select MsgBox Selection.SpecialCells(xlCellTypeLastCell).Row End Sub などでも良いが、後者はデータの在り様と使い道によっては、結果が適当でないことがある。
その他の回答 (1)
- DOUGLAS_
- ベストアンサー率74% (397/534)
下記の操作を [新しいマクロの記録(R)...] で記録してみましょう。 1)シート に オートフィルタ をかけます。 2)A1 を アクティブ にした状態で、プルダウン から、A列 の [オートフィルタ オプション] を開き、[A1] の欄は空にして、その右の欄を「と等しくない」にして、[OK] します。 3)A1:Z95 に相当する範囲を選択して、コピー([Ctrl] + [C])します。 4)「別のシートへ貼り付け」ます。 5)元の シート の オートフィルタ を解除します。 すると、 Sub Macro1() Selection.AutoFilter Selection.AutoFilter Field:=1, Criteria1:="<>", Operator:=xlAnd Application.Goto Reference:="R95C26" Range(Selection, Cells(1)).Select Selection.Copy ActiveSheet.Previous.Select ActiveSheet.Paste ActiveSheet.Next.Select Application.CutCopyMode = False Selection.AutoFilter Range("A1").Select End Sub というような コード が得られますので、アクティブ な シート、アクティブ な セル を意識して、これを書き直します。 Sub Macro1() Sheets("コピー元のシート").Select Range("A1").Select Selection.AutoFilter Selection.AutoFilter Field:=1, Criteria1:="<>", Operator:=xlAnd Range("A1:Z95").Copy Sheets("別のシート").Range("A1") Application.CutCopyMode = False Selection.AutoFilter End Sub Sub Macro2() Sheets("コピー元のシート").Columns("A:A").SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy _ Sheets("別のシート").Range("A1") End Sub というような簡単な コード でも似たようなことができますが、AA列以右も入ってしまいますので、用途(ニーズ)に応じて コーディング しなければなりません。 何か、問題が発生したら、その都度、エラー の原因を突き止めて、コーディング を改善されればよいかと存じます。
お礼
早速回答していただき大変ありがとうございました。助かりました。
お礼
回答ありがとうございます。初歩的な質問で申し訳ありませんでした。