- ベストアンサー
Worksheet_Changeについて
A列1~10のセルそれぞれに「A」と入ると右側2つのセルに色がつき 「B」と入ると右側5つのセルに色がつくようにしたいのですが・・Worksheet_Changeの使い方が良く判りません。 過去の質問や他のHPも調べて見ましたが・・ まだ超初心者なのでよく理解できてないのです。 出来れば分かりやすく教えていただけませんか?宜しくお願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>Alt+F11で挿入「標準モジュール」ですよね? ワークシートのイベントですので、標準モジュールでは動きません。もちろん、ワークシートのコードから標準モジュールのコードを呼び出すことは可能ですが。 プロジェクトのツリーで、標準モジュールの上のほうに、”Microsoft Excel Objects”が表示されていて、その配下にシート名が表示されていますよね。 操作対象にしたいシートの所に、プログラムコードを記述して下さい。
その他の回答 (3)
- rotesKomet
- ベストアンサー率31% (83/265)
補足を書いておきますと Target.Row,Target.Column では直前に操作したセルの行番号と列番号が取得できます。 例えば、"A8"に値を入力した場合、Target.Rowは 8、Target.Columnは 1になります。 Target.Cells(1, 1).Value では直前に操作したセルの値が取得できます。セルに"C"と値を入力した場合、Target.Cells(1, 1).Valueは"C"になります。Target.Valueでも値は取得できますが、複数セルが対象となった場合にエラーになります(複数セルを選択して値を削除したときなど)。 Range(セル1, セル2)で複数のセルを対象とできます。 ActiveSheet は今選択されているシートです。 対象の範囲.Interior.ColorIndex = カラーパレット番号 で、対象の範囲の背景色を変更できます。
- rotesKomet
- ベストアンサー率31% (83/265)
下記の感じでいかがでしょうか? 急いで作ったので少し汚いですが Targetという引数に直前に操作したセル範囲が渡ってきますので、そこから情報を取得しています。 Private Sub Worksheet_Change(ByVal Target As Range) Dim lngTargetRow As Long Dim lngTargetCol As Long Dim vntCellValue As Variant '操作セルの行番号と列番号を取得 lngTargetRow = Target.Row lngTargetCol = Target.Column 'セルがA1~A10の時 If lngTargetRow >= 1 And lngTargetRow <= 10 And lngTargetCol = 1 Then '操作セルの値を取得 vntCellValue = Target.Cells(1, 1).Value '操作セルの値により分岐 Select Case vntCellValue 'Aの時 Case "A" '右側2つのセルの色を変更 Range(ActiveSheet.Cells(lngTargetRow, lngTargetCol + 1), ActiveSheet.Cells(lngTargetRow, lngTargetCol + 2)).Interior.ColorIndex = 6 'Bの時 Case "B" '右側5つのセルの色色を変更 Range(ActiveSheet.Cells(lngTargetRow, lngTargetCol + 1), ActiveSheet.Cells(lngTargetRow, lngTargetCol + 5)).Interior.ColorIndex = 7 End Select End If End Sub
補足
ありがとうございます!!すいません、こんなに丁寧に。。 すいません、ほんとはじめたばかりで超初心者で申し訳無いです・・・コンパイルしてエラーは出ないのですが、実際に動かないんです。なぜですか? 根本的に何か間違ってますか? Alt+F11で挿入「標準モジュール」ですよね?
- rotesKomet
- ベストアンサー率31% (83/265)
VBA を使用して実現しなければならないのでしょうか? 条件付書式を使えば簡単にできますが。
補足
実は・・本当はもっと条件が複雑で条件付書式では対応出来ないのです。ですのでVBAでと頑張っているのですが・・説明がわかりにくくてすいません。 Worksheet_Changeの例はいくつか見たのですが、わからなくて・・・宜しくお願いします(ぺこり
お礼
きゃぁ~うごいたぁ♪ ありがとうございますぅぅ(^▽^) 変だと思ってたんです!そうか、そういう事だったんですね!! rotesKometさん、こんな超初心者に気長に付き合って頂いてありがとうございます!!