Excel VBA質問箱 IV

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

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


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

【10100】セルに入力された文字によって、セルの塗りつぶしの色を変えるには? STi 04/1/7(水) 17:41 質問
【10103】Re:セルに入力された文字によって、セルの... 04/1/7(水) 18:56 回答
【10106】Re:セルに入力された文字によって、セルの... ichinose 04/1/7(水) 19:42 回答
【10108】Re:セルに入力された文字によって、セルの... STi 04/1/7(水) 21:36 質問
【10109】Re:セルに入力された文字によって、セルの... ichinose 04/1/7(水) 21:55 発言
【10110】できました!! STi 04/1/7(水) 22:22 お礼

【10100】セルに入力された文字によって、セルの塗...
質問  STi E-MAIL  - 04/1/7(水) 17:41 -

引用なし
パスワード
   エクセル97です。
ある参加者名簿を作っています。
列Aには名前、列Bには出身地方(東、西、南、北のいずれか)が入ります。
列Eは塗りつぶしをしたいのですが、その色が、B列の文字が東なら赤、西なら青、南なら緑、北なら紫というように、その行のB列の文字によって変わるようにしたいのです。
どうしたらよろしいでしょうか?
よろしくお願いします。

【10103】Re:セルに入力された文字によって、セル...
回答    - 04/1/7(水) 18:56 -

引用なし
パスワード
   ▼STi さん:
条件付き書式の設定を使ってみては?

【10106】Re:セルに入力された文字によって、セル...
回答  ichinose  - 04/1/7(水) 19:42 -

引用なし
パスワード
   埃 さん、STi さん、こんばんは。
再送です。
シートのChangeイベントを使いました。
当該シートのシートモジュールに
'===============================================
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim newtarget As Range
  Dim crng As Range
  Dim 東西南北 As String
  Dim 色()
  東西南北 = "東西南北"
  色() = Array(xlNone, 3, 5, 10, 13)
'        色ナシ、赤、青、緑、紫
  Application.EnableEvents = False
  Set newtarget = Application.Intersect(Target, Range("b2:b65536"))
'                           ↑セルB2以降を対象
  If Not newtarget Is Nothing Then
    For Each crng In newtarget
     With crng.Offset(0, 3).Interior
       If crng.Value <> "" Then '未入力のとき処理は分岐
      
        .ColorIndex = 色(InStr(東西南北, crng.Value))
'                  厳密にはMatch関数の方がよいかも?
       Else
        .ColorIndex = xlNone
        End If
       If .ColorIndex > 0 Then .Pattern = xlSolid
       End With
     Next
    End If
  Application.EnableEvents = True
End Sub

確認してみて下さい。

【10108】Re:セルに入力された文字によって、セル...
質問  STi E-MAIL  - 04/1/7(水) 21:36 -

引用なし
パスワード
   ichinose さん ありがとうございます。
実行してみると、5行目の
 色() = Array(xlNone, 3, 5, 10, 13)
の所で、「配列には割り当てられません」
というメッセージが出て、中断してしまいます。
なぜでしょう?
初心者でよくわからなくてすみません

【10109】Re:セルに入力された文字によって、セル...
発言  ichinose  - 04/1/7(水) 21:55 -

引用なし
パスワード
   ▼STi さん:
こんばんは。
> 色() = Array(xlNone, 3, 5, 10, 13)
>の所で、「配列には割り当てられません」
>というメッセージが出て、中断してしまいます。
Excel2000では、エラーになりませんが・・・。
>Private Sub Worksheet_Change(ByVal Target As Range)
>  Dim newtarget As Range
>  Dim crng As Range
>  Dim 東西南北 As String
   Dim 色
>  東西南北 = "東西南北"
   色 = Array(-4142, 3, 5, 10, 13) ' 心配なので実数値を入れました
>'        色ナシ、赤、青、緑、紫
>  Application.EnableEvents = False
>  Set newtarget = Application.Intersect(Target, Range("b2:b65536"))
>'                           ↑セルB2以降を対象
>  If Not newtarget Is Nothing Then
>    For Each crng In newtarget
>     With crng.Offset(0, 3).Interior
>       If crng.Value <> "" Then '未入力のとき処理は分岐
   
>        .ColorIndex = 色(InStr(東西南北, crng.Value))
>'                  厳密にはMatch関数の方がよいかも?
>       Else
>        .ColorIndex = xlNone
>        End If
>       If .ColorIndex > 0 Then .Pattern = xlSolid
>       End With
>     Next
>    End If
>  Application.EnableEvents = True
>End Sub

としたらどうでしょうか?

【10110】できました!!
お礼  STi E-MAIL  - 04/1/7(水) 22:22 -

引用なし
パスワード
   ichinose さん、ありがとうございました。
おかげさまでできました。
2000でできても97ではダメなことってやっぱりあるんですね。
本当にありがとうございました。

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