• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:同じブックのシート間でセルの値を転記するヒントが欲しいです。)

同じブックのシート間でセルの値を転記するヒントが欲しいです。

このQ&Aのポイント
  • excel2002で牛の繁殖・肥育データの管理をしています。同じブックのシート間でセルの値を転記する方法を教えてください。
  • 繁殖牛データ、種付け台帳のひな形、肥育牛データという3つのシートがあります。種付け台帳のひな形シートに繁殖牛の番号を入力し、分娩や双子の情報が入力された場合、他のシートに必要な値をコピーしたいです。
  • VBAを使用してコードを作成しましたが、うまく動作しません。シートをコピーした際にコードも複製されるかどうかも不明です。具体的な間違いを見つける方法がわかりません。アドバイスをお願いします。

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

  • ベストアンサー
回答No.1

まず >If Target.Value <> "分娩" Or Target.Value <> "双子(2)" Then Exit Sub ORの使い方がおかしいです。これでは分娩・双子(2)ともにはじかれます。 分娩以外には双子(2)も該当、双子(2)以外には分娩も該当するので 分娩または双子(2)の場合は処理を抜けると取れるので何も起こりません。 この場合ORじゃなくてANDを使いましょう。 あと、今回の場合デバッグ機能を使えばどこが原因かはすぐわかるはずです。 やり方は参考書に載っていると思いますよ。ネットにもありますし。 あと、今のままだと末尾のデータが1件消えて新しいのが1件上書きされるって形になる様な気が。 違うかな~?あんまり自信ないです><。

kobuta2008
質問者

お礼

回答ありがとうございます。 >ORの使い方がおかしいです。これでは分娩・双子(2)ともにはじかれます。 この指摘でようやく自分の間違いに気付きました。 ANDに直して試したところ、今度はしっかり? 実行時エラー'450':引数の数が一致していません。または不正なプロパティを指定しています。 が表示され、デバッグ機能も使えました! >katann = Worksheets("データ").Range.End(xlDown) せっかく表示されたエラーの意味を理解できないので、今参考書をめくっているところです。

kobuta2008
質問者

補足

エラーが出た部分で、基準になるセルを指定していない事に気付き、さらに終端セルの1行下の行番号を取得できるよう修正したつもりです。 katann = Worksheets("データ").Range("A3").End(xlDown).Offset(1).Row しかし、修正したつもりの上記コードで「実行時エラー1004:アプリケーション定義またはオブジェクト定義のエラーです。」となってしまいました。 アプリケーションは使っていないのでオブジェクト定義がおかしいということだと思うのですが、Worksheets("データ")の部分の書き方がおかしいのでしょうか?

その他の回答 (1)

回答No.2

考えられる原因としたら 1.Worksheets("データ")のデータというシートがそもそも存在しない   ※わざとデータって名前にしてると思って突っ込まなかったんですけど   これはworksheets("肥育牛データ")じゃなくてWorksheets("データ")で問題ないんですよね? 2.A3以降にデータ入っていない場合Xldownを使うと最後まで行ってしまうにも関わらず(※1)   Offsetを使ってありえないセルを選択してる   ※これが原因なら   katann = Worksheets("データ").cells(rows.count,"A").End(xlup).Offset(1).Row   でいくかもしれません。 他にも何か原因あるかもしれませね。間違ってたらごめんなさい。 ※1エクセルのバージョンによって違うんですが エクセルには限界の行、列が存在します。 今回使ってるXldownはシート上でセルを選択しCtrlキーを押したまま キーボードの↓を押したのと同じ効果になります。A65536など

kobuta2008
質問者

お礼

出来ました♪ありがとうございます! いろいろ触ってるうちに"データ"というシートを作っていました。すみません。 失敗の原因は2番で、"データ"シートはA3:G3に項目が書かれているだけでした。 上の解決方法を見る前に、A2に特別必要ない文字を入れたことでいったん解決したのですが、tarinko_06さんに教えてもらった方が見やすくて助かります。 本当にありがとうございました。

関連するQ&A