- ベストアンサー
エクセルVBA、セルのコピー
VBAにて あるセルに何かを入力した瞬間に、そのセルの内容をコピーし違うセルに貼り付ける という事を実装したいです。 (セルが変更された時に)入力した時に実行されるというVBAはわかりました。 わからないのは、 「入力したセル」をコピーし、違うセルに貼り付ける というところなのですが・・・ ちなみに、貼り付ける場所の指定や入力したセルの内容、などなど かなり条件があるので、関数はで厳しいのでVBAにてお願いいたします。 よろしくお願いいたします!
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>(セルが変更された時に)入力した時に実行されるというVBAはわかりました。 とのことですので、あえていう事ではありませんが、 シートを右クリックで「コードの表示」を選び以下のコードを貼り付けてください。 Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False Target(1).Copy Range("A1") Application.EnableEvents = True End Sub どこかのセルの内容が変われば、A1セルにそのセルがコピーされます。 入力ではなく、コピー貼付でも反応します。 (複数の貼付時には範囲の中の左上のセルをA1にコピーします) 「セルの内容をコピー」とあるので値のみのコピーであれば以下をご利用ください。 Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False Range("A1").Value = Target(1).Value Application.EnableEvents = True End Sub
その他の回答 (3)
- keithin
- ベストアンサー率66% (5278/7941)
手順: シート名タブを右クリックしてコードの表示を選ぶ 現れたシートに記載済みの内容を全て消去する 改めて下記をコピー貼り付ける private sub Worksheet_Change(byval Target as excel.range) dim h as range on error resume next for each h in application.intersect(target, range("A:A")) if h.value > worksheets("Sheet2").range("A1").value then h.copy worksheets("Sheet2").range("A65536").end(xlup).offset(1) end if next end sub ファイルメニューから終了してエクセルに戻る A列のセル(セル範囲)を変更すると、シート2のA1と比較してシート2のA列にコピーする 「指定された列」とかって具体的に何列なのか、「固定のセル」ってどこ番地のセルなのか、どうして説明できないのですかね。わざわざ言い換える手間をかけるだけのいったいどんなナイショなのか、とっても不思議です。 既に一回回答した内容や皆さんから寄せられているマクロからほとんど変える必要ありませんし、もうイチイチ聞きませんのであとは勝手にどうぞ。
- mt2008
- ベストアンサー率52% (885/1701)
サンプルだけ有れば良いですかね? 1列目を1セルだけ更新した場合、C3セルに更新した値を表示します。 Private Sub Worksheet_Change(ByVal Target As Range) If (Target.Row <> 1) * (Target.Count <> 1) Then Exit Sub Application.EnableEvents = False 'イベント停止 Range("C3") = Target.Value Application.EnableEvents = True 'イベント再開 End Sub
- keithin
- ベストアンサー率66% (5278/7941)
シート名タブを右クリックしてコードの表示を選ぶ 現れたシートに下記をコピー貼り付ける private sub Worksheet_Change(byval Target as excel.range) dim h as range on error resume next for each h in application.intersect(target, range("A:A")) h.copy h.offset(0, 2) next end sub ファイルメニューから終了してエクセルに戻る A列のセル(セル範囲)を変更すると、C列にコピーする #「入力したセル」とか「あるセル」とか「条件がある」とか、どこからどこに何をしたいのか「具体的な説明」が何一つありません。自力で適切にあなたのヤリタイ事に、しっかり応用してください。
補足
すみません。 「指定された列」のセルを変更すると その値が2シート目の「固定セル」の値より大きければ 2シート目の「指定された列」のデータ最終行の一つ下に入力されるというものです
補足
(Target.Row <> 1) * (Target.Count <> 1) この「* 」はどういう意味なのでしょうか?