Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


10327 / 13644 ツリー ←次へ | 前へ→

【22453】入力に反映してセルに色をつける もち 05/2/21(月) 12:03 質問[未読]
【22455】Re:入力に反映してセルに色をつける ichinose 05/2/21(月) 12:41 発言[未読]
【22456】Re:入力に反映してセルに色をつける 訂正 ichinose 05/2/21(月) 13:09 発言[未読]

【22453】入力に反映してセルに色をつける
質問  もち E-MAIL  - 05/2/21(月) 12:03 -

引用なし
パスワード
   シート1
  A  B
1 名前 席番号(入力例:A-3 S-10 など)
2 名前 席番号
3 名前 席番号
------------------------------------
シート2
  A B C D E F G H
1    2 3 A 4 5 
2    2 3 B 4 5 
3   1 2 3 C 4 5 6
4   1 2 3 D 4 5 6
-----------------------------
と入力されているとして、
例えばシート1の B1 のセルに C-3 と入力されたら、
シート2の D-3 に自動で色がつくようにしたいのです。
よろしくお願いします。



【22455】Re:入力に反映してセルに色をつける
発言  ichinose  - 05/2/21(月) 12:41 -

引用なし
パスワード
   ▼もち さん:
こんにちは。

> シート1
>  A  B
>1 名前 席番号(入力例:A-3 S-10 など)
>2 名前 席番号
>3 名前 席番号
>------------------------------------
>シート2
>  A B C D E F G H
>1    2 3 A 4 5 
>2    2 3 B 4 5 
>3   1 2 3 C 4 5 6
>4   1 2 3 D 4 5 6
>-----------------------------
>と入力されているとして、
>例えばシート1の B1 のセルに C-3 と入力されたら、
>シート2の D-3 に自動で色がつくようにしたいのです。
>よろしくお願いします。
シート1のB列に例えば、C-3と入力されたら

C-3-----シート2のセルC3の一つ右列のセル----セルD3を塗りつぶす

ということですよね?

シート1のモジュールに
'======================================================
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim rtarget As Range
  Dim crng As Range
  Dim color_rng As Range
  On Error Resume Next
  Set rtarget = Application.Intersect(Target, Range("b:b"))
  If Not rtarget Is Nothing Then
   For Each crng In rtarget
     Err.Clear
     Set color_rng = Worksheets("シート2").Range(Join(Split(crng.Value, "-"), ""))
     If Err.Number = 0 Then
      color_rng.Offset(0, 1).Interior.ColorIndex = 3
      End If
     Next
   End If
  On Error GoTo 0
End Sub

こんなコードで塗りつぶしてくれます。
Split関数やJoin関数を使っていますからExcel2000以降で
確認してみて下さい。
例題は、赤で塗りつぶしました。

条件付書式を工夫してもできるかもしれません。

確認してみて下さい。

【22456】Re:入力に反映してセルに色をつける 訂正
発言  ichinose  - 05/2/21(月) 13:09 -

引用なし
パスワード
   >シート1のモジュールに
>'======================================================
>Private Sub Worksheet_Change(ByVal Target As Range)
>  Dim rtarget As Range
>  Dim crng As Range
>  Dim color_rng As Range
>  On Error Resume Next
>  Set rtarget = Application.Intersect(Target, Range("b:b"))
>  If Not rtarget Is Nothing Then
>   For Each crng In rtarget
>     Err.Clear
     Set color_rng = Worksheets("sheet2").Range(Replace(crng.Text, "-", ""))
'     訂正して下さい、これで済みます
>     If Err.Number = 0 Then
>      color_rng.Offset(0, 1).Interior.ColorIndex = 3
>      End If
>     Next
>   End If
>  On Error GoTo 0
>End Sub
>

10327 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free