[[20141121224341]] 『2つの表の違いを見つけるマクロを作りたい』(ねこ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『2つの表の違いを見つけるマクロを作りたい』(ねこ)

エクセルの2つの表の違いを見つけて、差異のあるセルに色を付けるマクロを作りたいのですが、以下の内容で実行するとエラーが出てしましました。
「rangeクラスのslectメソッドが失敗しました」というエラーです。
エラーは、出るけれどきちんと動いているようなのですが・・・
2つの表というのは、全く同じフォームで少しずつ更新されているのですが、他者が更新している為、差異を見つけるのが大変という状況です。

急いでませんので、教えいただければ幸いです。
よろしくお願い致します。

Sub Compare()

    Dim obj_before As Variant
    Dim obj_after As Variant
    Set obj_before = Application.InputBox _
        (prompt:="比較元のセルを範囲で指定してください" _
        , Title:="比較元のセルの指定" _
        , Type:=8)
    Set obj_after = Application.InputBox _
        (prompt:="比較先(色を塗る側)のセルを範囲で指定してください" _
        , Title:="比較先のセルの指定" _
        , Type:=8)

    If obj_before.Cells.Rows.Count <> obj_after.Cells.Rows.Count Or _
        obj_before.Cells.Columns.Count <> obj_after.Cells.Columns.Count Then
        MsgBox "比較元と比較先の範囲の大きさが異なります"

    Else
        For i = 1 To obj_before.Cells.Count
            If obj_before.Cells(i).Value <> obj_after.Cells(i).Value Then
                obj_after.Cells(i).Interior.ColorIndex = 6  '黄色
            End If
        Next
    End If
    obj_after.Cells(1).Select
End Sub

< 使用 Excel:Excel2010、使用 OS:Windows7 >


activeでないシートのセルはselectできません。

 >obj_after.Cells(1).Select
 この行は、obj_afterのシートがactiveでない場合にエラーになります。
  
http://officetanaka.net/excel/vba/tips/tips125.htm
  

(マナ) 2014/11/21(金) 23:30


マナ 様

コメント有難うございました!
素人なもので、よくわかっていないのですが…
シートが違うと、実行できないのでしょうか?
頑張って、お勉強してみます(>_<)
(ねこマナ 様 コメント有難うございました! 素人なもので、よくわかっていないのですが… シートが違うと、実行できないのでしょうか?) 2014/11/22(土) 00:25


最後セルを選択する前に、シート選択するように1行追加します。

 obj_after.Parent.Select
 obj_after.Cells(1).Select

(マナ) 2014/11/22(土) 09:00


マナ 様
 有難うございました!
上手く実行できました!全くわからない素人なので、感動です・・・

(ねこ) 2014/11/22(土) 12:07


もうみてないかな?

シートが違うと実行できないというか
ほかのシートのセルはSelectできないんです。
べつにカッコつけてSelectと云ったんじゃなくて
Select以外は結構できるんです。
obj_after.Cells(1).Copy とか
obj_after.Cells(1).ClearContentsとか

でもなぜかSelectはダメなんです。
(みけ) 2014/11/22(土) 12:56


 Select は Active なシートだけでできる処理になっています。
 複数シートの選択は出来ますが、一応 Workbook は Active ですよね。

 そのあたりは仕様として、理解しておくしかないかもしれません。

 追記:
 一応関連説明サイトです。
http://officetanaka.net/excel/vba/tips/tips125.htm

(Mook) 2014/11/22(土) 13:16


みなさま
アドバイス有難うございました!
(ねこ) 2014/11/22(土) 16:20

追加質問です!
同じワークブックで、別シートの比較は成功しました。
しかし、全く別のワークブックの場合はエラーが出てしまいます。
何か解決策はありますか?
よろしくお願いします!
(ねこ) 2014/11/28(金) 08:12

activeでないシートのセルをselectしようとするとエラーになるの同様に
activeでないブックのシートをselectしようとするとエラーになります

 さらに1行追加

 obj_after.Parent.Parent.Activate
 obj_after.Parent.Select
 obj_after.Cells(1).Select

 もしくは

 Application.Goto obj_after.Cells(1)

(マナ ) 2014/11/29(土) 09:44


マナ様
有り難うございました!
大成功でした(#^^#)
自分では、全く検討もつかないので本当に助かりました!
(ねこ) 2014/12/02(火) 09:14

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.