• ベストアンサー

エクセルVBA、セルのコピー

VBAにて あるセルに何かを入力した瞬間に、そのセルの内容をコピーし違うセルに貼り付ける という事を実装したいです。 (セルが変更された時に)入力した時に実行されるというVBAはわかりました。 わからないのは、 「入力したセル」をコピーし、違うセルに貼り付ける というところなのですが・・・ ちなみに、貼り付ける場所の指定や入力したセルの内容、などなど かなり条件があるので、関数はで厳しいのでVBAにてお願いいたします。 よろしくお願いいたします!

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

  • ベストアンサー
  • eden3616
  • ベストアンサー率65% (267/405)
回答No.2

>(セルが変更された時に)入力した時に実行されるという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)
回答No.4

手順: シート名タブを右クリックしてコードの表示を選ぶ 現れたシートに記載済みの内容を全て消去する 改めて下記をコピー貼り付ける 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)
回答No.3

サンプルだけ有れば良いですかね? 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

kayomana
質問者

補足

(Target.Row <> 1) * (Target.Count <> 1) この「* 」はどういう意味なのでしょうか?

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

シート名タブを右クリックしてコードの表示を選ぶ 現れたシートに下記をコピー貼り付ける 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列にコピーする #「入力したセル」とか「あるセル」とか「条件がある」とか、どこからどこに何をしたいのか「具体的な説明」が何一つありません。自力で適切にあなたのヤリタイ事に、しっかり応用してください。

kayomana
質問者

補足

すみません。 「指定された列」のセルを変更すると その値が2シート目の「固定セル」の値より大きければ 2シート目の「指定された列」のデータ最終行の一つ下に入力されるというものです

関連するQ&A

専門家に質問してみよう