[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『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 >
>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
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
さらに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
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.