• ベストアンサー

WorkSheet _Change を使って

たびたびお世話になります。 worksheet_changeを使うマクロを作成しています。 sheet1で入力されたデータがsheet2にあるデータベースの文字と一致した場合、sheet1の該当セル(入力した部分)の色を変えます。 もしそのセルの内容が変更、削除された場合は塗りつぶしなしに戻します。 Private Sub Worksheet_Change(ByVal Target As Range) Dim sTitle As String sTitle = Target.Value If sTitle = "aaa" Then Target.Interior.ColorIndex = 7 Else Target.Interior.ColorIndex = xlNone End If End Sub このコードで、「aaaという文字を入れたら色を変える/削除・変更されたらは塗りつぶしなし」という動作はできました。 しかしその後、aaaに当たる項目が増え、項目自体を変更する可能性も増えたので、上記のように別シートにデータベースを作ることにしたのです。 このコードを基にしてプログラムを組んだのですが、うまく参照が出来てないようでコンパイルエラーになってしまいます。 アイディアでも良いのでアドバイスをお願いします。

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

  • ベストアンサー
  • pbforce
  • ベストアンサー率22% (379/1719)
回答No.2

すいません修正です。 Private Sub Worksheet_Change(ByVal Target As Range) Dim sTitle As String sTitle = Target.Value For i = 1 To Sheets("Sheet2").Range("A1").End(xlDown).Row If sTitle = Sheets("Sheet2").Cells(i, 1).Value Then Target.Interior.ColorIndex = 7 Exit For Else Target.Interior.ColorIndex = xlNone End If Next i End Sub

nepa-aiko
質問者

お礼

ありがとうございます! 動作しました。

その他の回答 (3)

  • squip
  • ベストアンサー率16% (2/12)
回答No.4

関数、リスト、そして条件付き書式による単純な解決案 A1: aaa   条件付き書式の設定   数式が =$C$1 C1: =NOT(ISNA(MATCH(A1,C2:C4,0))) C2: aaa C3: ggg C4: zzz

nepa-aiko
質問者

お礼

回答ありがとうございます。 条件つき書式だと4つくらい?しか設定できないですよね? 該当のデータは20くらいあります。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.3

「データベース」がSheet2のA列にあるとします  If sTitle = "aaa" Then の1行を  If Application.CountIf(Sheets("Sheet2").Columns(1), sTitle) > 0 Then に変更したらどうですか? ワークシート関数のCOUNTIFで合致する文字列があったとき処理をします。コードは直打ちしていますのでスペルミスがあるかもしれません。そのときは訂正してください

nepa-aiko
質問者

お礼

回答ありがとうございます。 勉強になりました。 参考にさせていただきます。

  • pbforce
  • ベストアンサー率22% (379/1719)
回答No.1

動いているコードを書いてもらっても、参考になる回答は出来ませんよ。 うまく行かないところのコードを書いて下さい。 また、Sheet2のデータベースはどのような形のものかもわかると回答しやすくなります。 Sheet2のA列に並んでいるデータに同じデータがあれば~~という条件判断は・・・ For i=1 To Sheets("Sheet2").Range("A1").End(xlDown).Row If sTitle = Sheets("Sheet2").Cells(i,1).Value Then Target.Interior.ColorIndex = 7 Else Target.Interior.ColorIndex = xlNone End If と言う方法があります。 が、シートモジュールから他のシートを参照するコードが書けるか不安になってきましたので、要調査です。 試してみてダメなら、補足を下さい。

nepa-aiko
質問者

補足

すみません。 業務の都合上そのエクセルブックをリリースしなければならなくなったので。 うまくいかない部分は後回しにすることにして、ひとまずコメントアウトしておいたんですが。 そのせいか?他の部分にエラーが出てしまったので、やむなく削除してしまったのです・・・。(そうしたらなぜか正常動作するようになりました) たしか「オブジェクトがありません」というエラーメッセージが出ていました。 sheet2は、A列の部分に文字データが並んでいるだけです。