ExcelでA列に番号をトリガーにし、
一番最初のシート同じ番号のセルに違うシートのセル内容を
随時反映したいです。
添付ファイルに内容はあります。
下記はVBAですが上手くいきません。
Sub prog2()
Sheets("2月1日").Range("C1").Copy Sheets("2月原紙").Range("C1").PasteSpecial Paste:=xlPasteAll
End Sub
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
用語が独自すぎてなにをしたいのか伝わってきません。
正確な用語を使って、具体的に何をしたいのか、
他人も正確に伝わるように質問を修正してください。
たぶんVBAですることではない要件に思えます。式で参照すれば済む話だと思います。
回答3件
0
jinojiさんの推察力すごいですね。
ThisWorkBookのモジュールに下記のように記述すれば、コードは一か所ですみます。
各シートにコピーする必要はなくなります。
vba
1Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) 2 If Sh.Name = "2月原紙" Then Exit Sub 3 If Target.Column <> 3 Then Exit Sub 4 Dim ws As Worksheet, rowNo 5 Set ws = ThisWorkbook.Worksheets("2月原紙") 6 If WorksheetFunction.CountIf(ws.Columns(2), Target.Offset(, -1)) > 0 Then 7 rowNo = WorksheetFunction.Match(Target.Offset(, -1), ws.Columns(2), False) 8 Target.Copy ws.Cells(rowNo, "C") 9 End If 10End Sub
投稿2021/03/08 15:23
総合スコア34073
0
ベストアンサー
想像で書くとこんな感じ。
VBA
1'Sheet2 (2月1日) のシートオブジェクトに記述 2 3Private Sub Worksheet_Change(ByVal Target As Range) 4 If Target.Column <> 3 Then Exit Sub 5 Dim ws As Worksheet, rowNo 6 Set ws = ThisWorkbook.Worksheets(1) '2月原紙 7 If WorksheetFunction.CountIf(ws.Columns(2), Target.Offset(, -1)) > 0 Then 8 rowNo = WorksheetFunction.Match(Target.Offset(, -1), ws.Columns(2), False) 9 Target.Copy ws.Cells(rowNo, "C") 10 End If 11End Sub 12
投稿2021/03/08 12:35
総合スコア4592
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/08 12:48
ありがとうございます。'Sheet2 (2月1日) のシートオブジェクトに記述してもマクロがでできません
2月1日のシートに張ってもおなじです。
2021/03/08 12:53
'Sheet2 (2月1日) のシートオブジェクトにコードを記述したあと、
もう一度C1セルに東京と入力してみてください。原紙の方に反映されませんか?
2021/03/08 13:05
なるほど、ありがとうございます。反映しました。2月1日のシートがたまたまA1が田中ですが A3などに田中の項目を入力し「2月の原紙」は変わらず、A1に田中がある状況で反映がしたいです。行はちがいますが「2月1日」と「2月の原紙」はA列に「田中」はあります。できそうならご教授ください。よろしくお願いいたします。
2021/03/08 13:09
A3に田中、B3に111、C3に 大阪 と入力すると、 2月の原紙 のC1 に 大阪 となると思います。
2021/03/08 13:22
そうですね。確かになります。やあやこしいですが、シートを2月1日、2月2日・・・と増やし、田中のC1の項目を入力する(日によりA列のセルに田中が同じセル番地にこないです)と2月の原紙に田中の項目を追記できるようにしたいです。そんな事はできないですかね。またご教授ください。よろしくお願いいたします。
2021/03/08 13:27 編集
そういうことなら、
Target.Copy ws.Cells(rowNo, "C") のところを
ws.Cells(rowNo, "C").Value = ws.Cells(rowNo, "C").Value & Target.Value
としたらいいと思います。
2月1日、2月2日・・・のシートには同じコードを書きます。
(シートをコピーすればコードも一緒にコピーされると思います。)
2021/03/08 13:44
可なり思っていた通り出来ました。勉強になりました。確認したいです。A1=田中 B1=111 が別シートのA列、B列にあるとc3の内容が「2月の原紙」に反映になりそうですがあっていまあすか?2月1日、2月2日、2月3日、2月4日と全てにコードを貼り付けるとよいですか?よく標準モジュールに貼り付けていますが、そこは反映しないですか?よろしくお願いいたします。
2021/03/08 13:50
2月1日、2月2日、2月3日、2月4日と全てにコードを貼り付けてください。
C列のセルを変更すると、その左隣りのセルの値で原紙を探しに行きます。
2021/03/08 13:55
ご丁寧に、迅速に対応いただきましてありがとうございます。非常に役たつ情報ありがとうございます。
早速、使わせていただきます。また、ご縁あればよろしくお願いいたします。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。