※ ChatGPTを利用し、要約された質問です(原文:同じブックのシート間でセルの値を転記するヒントが欲しいです。)
同じブックのシート間でセルの値を転記するヒントが欲しいです。
このQ&Aのポイント
excel2002で牛の繁殖・肥育データの管理をしています。同じブックのシート間でセルの値を転記する方法を教えてください。
繁殖牛データ、種付け台帳のひな形、肥育牛データという3つのシートがあります。種付け台帳のひな形シートに繁殖牛の番号を入力し、分娩や双子の情報が入力された場合、他のシートに必要な値をコピーしたいです。
VBAを使用してコードを作成しましたが、うまく動作しません。シートをコピーした際にコードも複製されるかどうかも不明です。具体的な間違いを見つける方法がわかりません。アドバイスをお願いします。
同じブックのシート間でセルの値を転記するヒントが欲しいです。
excel2002で牛の繁殖・肥育データの管理をしています。
1つのブックに"繁殖牛データ""肥育牛データ""種付け台帳のひな形"というシートがあり、"種付け台帳のひな形"シートは、コピーして繁殖牛の頭数分に増える予定です(コピーしたシートの名前はそれぞれ母牛の5桁の数字に変更します)。
"繁殖牛データ"
A B C D E
5 個体番号 生年月日 父 祖父 曾祖父
6
7
・
・
1004
"種付け台帳"
G2に繁殖牛の番号を入力
B D E F ・・ CA CB CC CD CE CF CG
6 日付 種類 性別 種の名前 個体番号 性別 生年月日 母 父 祖父
7 1/2 人工 精液1
8 10/2 分娩 ♂ 01234 =$F8 =$E8 =$B8 =$G$2 =$F7
9 双子 ♂ 56789 =$F9 =$E9 =$B8 =$G$2 =$F7
10 12/2 人工 精液2
11 9/20 分娩 ♀ 02345 =$F1 =$E11 =$B11 =$G$2 =$F10
・
・
100
"肥育牛データ"
A B C D E F G
3 個体番号 性別 生年月日 母 父 祖父 曾祖父
4
・
・
母牛の頭数分ある"種付け用"では人工授精と分娩の記録がなされ、D列が"分娩"もしくは"双子"の時だけCAからCGに必要な値を入れる式を入れています。
"肥育牛データ"シートに生まれた子牛のデータを入れたいのですが、
vlookupでは複数シートからの検索が出来ない事がわかり、VBAの勉強を始めました。
コードは書いてみたものの、エラーどころか何も動きを見せてくれなくて困っています。間違いだらけだろうとは思うのですが、参考書を見ただけでは具体的な間違いを見つけられないのでアドバイスお願いします。
下記コードは、シートをコピーした際にコードも一緒に複製されるだろうと思って"種付け台帳のひな形"というシートの部分に書いています。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 4 Then Exit Sub
If Target.Value <> "分娩" Or Target.Value <> "双子(2)" Then Exit Sub
Dim gyou As Variant, katann As Variant
gyou = Target.Row
katann = Worksheets("データ").Range.End(xlDown)
Worksheets("データ").Cells(katann, "A").Value = ActiveSheet.Cells(gyou, "CA").Value
Worksheets("データ").Cells(katann, "B").Value = ActiveSheet.Cells(gyou, "CB").Value
Worksheets("データ").Cells(katann, "C").Value = ActiveSheet.Cells(gyou, "CC").Value
Worksheets("データ").Cells(katann, "D").Value = ActiveSheet.Cells(gyou, "CD").Value
Worksheets("データ").Cells(katann, "E").Value = ActiveSheet.Cells(gyou, "CE").Value
Worksheets("データ").Cells(katann, "F").Value = ActiveSheet.Cells(gyou, "CF").Value
Worksheets("データ").Cells(katann, "G").Value = ActiveSheet.Cells(gyou, "CG").Value
End Sub
お礼
回答ありがとうございます。 >ORの使い方がおかしいです。これでは分娩・双子(2)ともにはじかれます。 この指摘でようやく自分の間違いに気付きました。 ANDに直して試したところ、今度はしっかり? 実行時エラー'450':引数の数が一致していません。または不正なプロパティを指定しています。 が表示され、デバッグ機能も使えました! >katann = Worksheets("データ").Range.End(xlDown) せっかく表示されたエラーの意味を理解できないので、今参考書をめくっているところです。
補足
エラーが出た部分で、基準になるセルを指定していない事に気付き、さらに終端セルの1行下の行番号を取得できるよう修正したつもりです。 katann = Worksheets("データ").Range("A3").End(xlDown).Offset(1).Row しかし、修正したつもりの上記コードで「実行時エラー1004:アプリケーション定義またはオブジェクト定義のエラーです。」となってしまいました。 アプリケーションは使っていないのでオブジェクト定義がおかしいということだと思うのですが、Worksheets("データ")の部分の書き方がおかしいのでしょうか?