こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

VBAにて

あるセルに何かを入力した瞬間に、そのセルの内容をコピーし違うセルに貼り付ける

という事を実装したいです。

(セルが変更された時に)入力した時に実行されるというVBAはわかりました。

わからないのは、
「入力したセル」をコピーし、違うセルに貼り付ける
というところなのですが・・・

ちなみに、貼り付ける場所の指定や入力したセルの内容、などなど
かなり条件があるので、関数はで厳しいのでVBAにてお願いいたします。

よろしくお願いいたします!

投稿日時 - 2014-05-29 17:46:20

QNo.8615725

困ってます

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

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

投稿日時 - 2014-05-29 18:17:12

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.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列にコピーする



「指定された列」とかって具体的に何列なのか、「固定のセル」ってどこ番地のセルなのか、どうして説明できないのですかね。わざわざ言い換える手間をかけるだけのいったいどんなナイショなのか、とっても不思議です。
既に一回回答した内容や皆さんから寄せられているマクロからほとんど変える必要ありませんし、もうイチイチ聞きませんのであとは勝手にどうぞ。

投稿日時 - 2014-05-29 20:39:10

ANo.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

投稿日時 - 2014-05-29 18:18:58

補足

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

投稿日時 - 2014-05-29 19:10:38

ANo.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列にコピーする




#「入力したセル」とか「あるセル」とか「条件がある」とか、どこからどこに何をしたいのか「具体的な説明」が何一つありません。自力で適切にあなたのヤリタイ事に、しっかり応用してください。

投稿日時 - 2014-05-29 18:12:42

補足

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

投稿日時 - 2014-05-29 19:20:10

あなたにオススメの質問