- ベストアンサー
Excel データの一部を別シートにコピー
Excelで、データ行のどこかをクリックし、ボタンを押したとき、その行を別々のシートに分類してコピーさせるマクロを作りたいと思っています。 このとき、コピー先のシートをA列のデータで区別したいのです。 1.クリックした行のA列のセルを判定し、そのセルのデータを読み取る方法 2.読み取ったデータ(文字)を、コピー先シート名に指定する方法 このマクロの記述方法を教えてください。よろしくお願いします。 コピー範囲を指定し、貼り付け先のシートをアクティブにできれば、あとは記録マクロをつないで作るつもりです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
余り十分テストできてないが Sheet4にコマンドボタンを1つ張り付け そのクリックイベントに Private Sub CommandButton1_Click() On Error GoTo err1 r = ActiveCell.Row sn = ActiveSheet.Range("A" & r) p1: Worksheets(sn).Select d = Worksheets(sn).Range("a65536").End(xlUp).Row d = d + 1 Worksheets(sn).Cells(d, "A") = Worksheets("Sheet4").Cells(r, "A") Worksheets(sn).Cells(d, "B") = Worksheets("Sheet4").Cells(r, "B") Exit Sub err1: Worksheets.Add.Name = sn GoTo p1 End Sub ーー 上記はコピー式でなく値代入方式でやっている。 シートが無いとエラーになるが、このエラーコードまで使ってチェックしてない。 移す列はA,B列だけで残りは、同パターンなので省略している。 ーー シートを開こうとしたとき、 A.存在する場合はどうするか、 B存在しない場合はどうするか の視点が、質問の問題点として書いてないが大切と思う。 上記は自分では、色々な今までの経験が詰まっているように思う。質問者には難しいと思う。
その他の回答 (1)
- n-jun
- ベストアンサー率33% (959/2873)
例えば、こんな感じの事でしょうか? Sub test() Dim sh As String sh = Range("A" & ActiveCell.Row).Value MsgBox sh Range("A" & ActiveCell.Row).Copy Worksheets(sh).Range("A1") End Sub
お礼
n-junさん ありがとうございました。
お礼
imogasiさん ありがとうございます。 > 質問者には難しいと思う。 はい、難しいです。 とりあえず手探りで、コピー式で作ってみました。 シートの選別、コピー貼付、記入データのなくなるまで実行、ここまで進みましたが、エラーメッセージが出てしまいました。 条件を具体的に書いて、新しい質問に置き換えたいと思います。