• ベストアンサー

Excel データの一部を別シートにコピー

Excelで、データ行のどこかをクリックし、ボタンを押したとき、その行を別々のシートに分類してコピーさせるマクロを作りたいと思っています。 このとき、コピー先のシートをA列のデータで区別したいのです。 1.クリックした行のA列のセルを判定し、そのセルのデータを読み取る方法 2.読み取ったデータ(文字)を、コピー先シート名に指定する方法 このマクロの記述方法を教えてください。よろしくお願いします。 コピー範囲を指定し、貼り付け先のシートをアクティブにできれば、あとは記録マクロをつないで作るつもりです。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.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存在しない場合はどうするか の視点が、質問の問題点として書いてないが大切と思う。 上記は自分では、色々な今までの経験が詰まっているように思う。質問者には難しいと思う。

awazo
質問者

お礼

imogasiさん ありがとうございます。 > 質問者には難しいと思う。 はい、難しいです。 とりあえず手探りで、コピー式で作ってみました。 シートの選別、コピー貼付、記入データのなくなるまで実行、ここまで進みましたが、エラーメッセージが出てしまいました。 条件を具体的に書いて、新しい質問に置き換えたいと思います。

その他の回答 (1)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

例えば、こんな感じの事でしょうか? 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

awazo
質問者

お礼

n-junさん ありがとうございました。

関連するQ&A