• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:別々のブックに対して「ジャンプ」→「アクティブ行との相違」?)

別々のブックに対して「ジャンプ」→「アクティブ行との相違」はできるか?

このQ&Aのポイント
  • Office XP Personal 2002のExcel 2002で「編集」-「ジャンプ」-「セル選択」を応用して別々のブックに対して行いたいがうまくできない。
  • Sub 相違()の中でWindows(tess.xls)とWindows(tess2.xls)を切り替えて行の相違を取得しようとしているが、希望通りに機能しない。
  • 最上のセル(xlTopCell)を指定することで解決できるか検討中。

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

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

間違い: x = Cells(65536, 3).End(xlUp).Rows.Count 正解: x = Cells(65536, 3).End(xlUp).Row 練習: Sub macro5() Dim c, x x = Cells(65536, 3).End(xlUp).Rows.Count msgbox x として,「無反応」の状況でxの値が実際に幾つを拾っているか確認してください。 また,別の可能性として。 漠然と「x = cells(… 」とか「x = range(… 」などのようにマクロを書いてしまうと,一体どのワークシートの当該番地のセルなのか,省略されていて何も指定していません。その場合エクセルは,当該の命令が実行された時点でのアクティブシートのその番地のセルだという事にしてプログラムを走らせますが,得てしてそれはあなたが企図していた目的のシートじゃなかったりするかもしれません。 丁寧に x = workbook("どのブックの.xls").worksheets("どのシートの").range("C65536").end(xlup).row などのようにキチキチと書いていくか, あるいは「省略するとアクティブシート」だという決め事を逆手に取って(?) 先に windows("こっちのブック").activate しておいて, さらに念を入れるなら worksheets("目的のシート").activate もきっちり操作しておいてから初めて x = range("C65536").end(xlup).row と安心して使えるような心配りをしてみてください。

oshietecho-dai
質問者

お礼

ご丁寧に、誠に有難うございました。 x = 1 でした。 調べましたら、 「Row」は行番号を求めるプロパティ、「Rows」は行数を求めるプロパティです。 とありました。 >少なくとも,そういった比較の用途で「アクティブ行との相違」は全く機能しません。 も、同様に 曖昧に解釈しておりました。

すると、全ての回答が全文表示されます。

その他の回答 (2)

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

平均して何個目ぐらいに違うセルが出てくるのでしょうか? シンプルに上から順に比較して違ったらそこで終わり,が一番楽そうですが。 sub macro2() dim c windows("Book2.xls").activate for c = 3 to 9999 if workbooks("Book1.xls").worksheets("Sheet1").cells(c, "C") <> _ workbooks("Book2.xls").worksheets("Sheet1").cells(c, "C") then workbooks("Book2.xls").worksheets("Sheet1").cells(c. "C").select exit sub end if next c end sub 少なくとも,そういった比較の用途で「アクティブ行との相違」は全く機能しません。

oshietecho-dai
質問者

補足

バッチリでした。 誠に有難うございました。 >平均して何個目ぐらいに違うセルが出てくるのでしょうか? 下記にしてみましたが、無反応になってしまいます。 お時間のおありの時で結構でございます。 度々と、すみません。 Sub macro5() Dim c, x x = Cells(65536, 3).End(xlUp).Rows.Count Windows("Book2.xls").Activate For c = 3 To x If Workbooks("Book1.xls").Worksheets("Sheet1").Cells(c, "C") <> _ Workbooks("Book2.xls").Worksheets("Sheet1").Cells(c, "C") Then Workbooks("Book2.xls").Worksheets("Sheet1").Cells(c, "C").Select Exit Sub End If Next c End sub

すると、全ての回答が全文表示されます。
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

単純に「先頭のセル」をSelectしたいのでしたら,たとえばselection(1).selectとかselection.cells(1).selectのような事になります。 また単一列(Columns("C:C"))を対象に「アクティブ行との相違(RowDiffernces)」を行っても 必ず 失敗します。 そもそも「異なるウィンドウ(ブック)」に対してSelectionもActivecellもありませんので,ご質問で書かれた意図は意味を為しません。 「別々のブックを対象に」一体「ナニをしたい」のか,もう一度ヤリタイ事を言葉にして説明してみてください。できればマクロ以前にまず手動でエクセルを操って,やりたい事をエラー無く実現できる正しい手順を確認して教えてください。

oshietecho-dai
質問者

補足

お答え有難うございます。 説明不足で、大変申し訳ございません。   Columns("C:C").Activate     ↓   実際は、    Range("C3", Range("C65536").End(xlUp)).Activate   となります。 画像が見にくくて、申し訳ございません。 画像のtess2(右表)の C6以下全部が違っておりますので、 実行後、 画像のtess2(右表)の C6 だけを選択したいと思っております。 よろしくお願い致します。

すると、全ての回答が全文表示されます。

関連するQ&A