- ベストアンサー
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に当たる項目が増え、項目自体を変更する可能性も増えたので、上記のように別シートにデータベースを作ることにしたのです。 このコードを基にしてプログラムを組んだのですが、うまく参照が出来てないようでコンパイルエラーになってしまいます。 アイディアでも良いのでアドバイスをお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
すいません修正です。 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
その他の回答 (3)
- squip
- ベストアンサー率16% (2/12)
関数、リスト、そして条件付き書式による単純な解決案 A1: aaa 条件付き書式の設定 数式が =$C$1 C1: =NOT(ISNA(MATCH(A1,C2:C4,0))) C2: aaa C3: ggg C4: zzz
お礼
回答ありがとうございます。 条件つき書式だと4つくらい?しか設定できないですよね? 該当のデータは20くらいあります。
- zap35
- ベストアンサー率44% (1383/3079)
「データベース」がSheet2のA列にあるとします If sTitle = "aaa" Then の1行を If Application.CountIf(Sheets("Sheet2").Columns(1), sTitle) > 0 Then に変更したらどうですか? ワークシート関数のCOUNTIFで合致する文字列があったとき処理をします。コードは直打ちしていますのでスペルミスがあるかもしれません。そのときは訂正してください
お礼
回答ありがとうございます。 勉強になりました。 参考にさせていただきます。
- pbforce
- ベストアンサー率22% (379/1719)
動いているコードを書いてもらっても、参考になる回答は出来ませんよ。 うまく行かないところのコードを書いて下さい。 また、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 と言う方法があります。 が、シートモジュールから他のシートを参照するコードが書けるか不安になってきましたので、要調査です。 試してみてダメなら、補足を下さい。
補足
すみません。 業務の都合上そのエクセルブックをリリースしなければならなくなったので。 うまくいかない部分は後回しにすることにして、ひとまずコメントアウトしておいたんですが。 そのせいか?他の部分にエラーが出てしまったので、やむなく削除してしまったのです・・・。(そうしたらなぜか正常動作するようになりました) たしか「オブジェクトがありません」というエラーメッセージが出ていました。 sheet2は、A列の部分に文字データが並んでいるだけです。
お礼
ありがとうございます! 動作しました。