Excel VBA質問箱 IV

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

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


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

【74135】条件付き書式 nonoka 13/4/20(土) 11:42 質問[未読]
【74136】Re:条件付き書式 UO3 13/4/20(土) 16:36 発言[未読]
【74137】Re:条件付き書式 UO3 13/4/20(土) 17:08 発言[未読]
【74138】Re:条件付き書式 UO3 13/4/20(土) 18:36 発言[未読]
【74139】Re:条件付き書式 nonoka 13/4/20(土) 18:45 回答[未読]
【74140】Re:条件付き書式 UO3 13/4/20(土) 19:34 発言[未読]
【74141】Re:条件付き書式 UO3 13/4/20(土) 19:40 発言[未読]
【74142】Re:条件付き書式 UO3 13/4/20(土) 19:42 発言[未読]
【74143】Re:条件付き書式 UO3 13/4/20(土) 19:51 発言[未読]

【74135】条件付き書式
質問  nonoka  - 13/4/20(土) 11:42 -

引用なし
パスワード
   いつもお世話になってます。
現在は条件付き書式でセルの色を変えています。
ですが、行の切り取りや削除などを行うと条件付き書式の適応範囲も変わってしまうため、困っています。

シート名Schedule 開始行は10行目から下。
まずM列のセルが
INS、SHIPならセルの色をブルー。
CHECK、URGENTならセルの色をレッド。
OG、RX、PS、DYE-D、DYE-L、MS、RC、DRY、FSならセルの色をピンク。

D列のセルがChrW(10003)ならセルの色をレッド。

O列からAA列のセルの値がL3と同じならセルの色をピンク。

以上です。
ご教示よろしくお願いします。

【74136】Re:条件付き書式
発言  UO3  - 13/4/20(土) 16:36 -

引用なし
パスワード
   ▼nonoka さん:

条件付き書式がいいとは思うのですが、nonokaさんのエクセルバージョンは何でしたっけ?

それと、当該領域、条件付き書式ではなくても条件に応じて色がつけばいいのですか?
その場合、D,M,O〜AA列のセルは入力ではなく計算式でしたっけ?
また、L3 は入力ですか?計算式ですか?

【74137】Re:条件付き書式
発言  UO3  - 13/4/20(土) 17:08 -

引用なし
パスワード
   ▼nonoka さん:

テーマとは離れるんですけど、前スレの時から ChrW(10003) が気になっています。
これは、マクロでセットされるんでしょうか?
それとも、操作者が入力?

レ点入力は、いろんな方法がありますが以下のほうが操作者の入力上も簡単かもしれません。

1.対象セルの文字列フォントを WingDings 2 にする。
  で、レ点を入れたい場合は、半角大文字の P を。
2.対象セルの文字列フォントを Marlett にする。
  で、レ点を入れたい場合は、半角小文字の a か b を。

ご参考まで。

【74138】Re:条件付き書式
発言  UO3  - 13/4/20(土) 18:36 -

引用なし
パスワード
   ▼nonoka さん:

↑で質問した各セルが計算式なのか、あるいは操作者またはVBAで値が入るのかということについて追加で。

その領域が計算式の場合、その計算式で参照する値がいれられるセルが、どこなのかを教えてください。
(参照先も計算式なら、さらに、その先の、最終的に値が入れられるセル)

【74139】Re:条件付き書式
回答  nonoka  - 13/4/20(土) 18:45 -

引用なし
パスワード
   ▼UO3 さん:
お世話になります。
エクセルバージョンは2010です。
L3はTODAY()がはいってます。
OからABはVBAコードで日付を計算した結果が入ります。
以前と列が一つずれてます。
b列はイベントでセルをダブルクリックすればチェックが入るようにしています。
すべて、セルに計算式は入っていません。コードで処理しています。

【74140】Re:条件付き書式
発言  UO3  - 13/4/20(土) 19:34 -

引用なし
パスワード
   ▼nonoka さん:

それでは、基本的に L3 の値は変わらないということを前提に。
(その日、一番にブックを開いたときは昨日の日付とは変わっていますので、そのタイミングでは強制的に処理しますが)

このシートには、様々なイベントルーティンが仕掛けられていると思いますので、それらとの
整合性というか、お互いに悪さをしないように、最終的には、そちらで調整していただくとして
今回の件のみをコードにすれば以下。

ThisWorkbookモジュールに記述してください。

Private Sub Workbook_Open()
  Dim mRow As Long
  With Sheets("Schedule")
    mRow = .UsedRange.Row + .UsedRange.Rows.Count - 1  '最終行番号
    process3 .Range("O10:AA" & mRow)
  End With
End Sub

Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal Target As Range)
  Dim mRow As Long
  Dim r1 As Range
  Dim r2 As Range
  Dim r3 As Range
  
  If sh Is Sheets("Schedule") Then
    mRow = sh.UsedRange.Row + sh.UsedRange.Rows.Count - 1  '最終行番号
    Set r1 = Intersect(Target, sh.Range("D10:D" & mRow))
    Set r2 = Intersect(Target, sh.Range("M10:M" & mRow))
    Set r3 = Intersect(Target, sh.Range("O10:AA" & mRow))
  End If
  
  If Not r1 Is Nothing Then Call process1(r1)
  If Not r2 Is Nothing Then Call process2(r2)
  If Not r3 Is Nothing Then Call process3(r3)
  
End Sub

Private Sub process1(r As Range)
  Dim c As Range
  r.Interior.ColorIndex = xlNone
  For Each c In r
    If c.Value = ChrW(10003) Then c.Interior.Color = vbRed
  Next
End Sub

Private Sub process2(r As Range)
  Dim c As Range
  Dim myColor As Long
  
  r.Interior.ColorIndex = xlNone
  For Each c In r
    Select Case c.Value
      Case "INS", "SHIP"
        myColor = vbBlue
      Case "CHECK", "URGENT"
        myColor = vbRed
      Case "OG", "RX", "PS", "DYE -D", "DYE - L", "MS", "RC", "DRY", "FS"
        myColor = vbMagenta
    End Select
    If myColor <> 0 Then c.Interior.Color = myColor
  Next
End Sub

Private Sub process3(r As Range)
  Dim c As Range
  Dim sh As Worksheet
  Set sh = r.Parent
  r.Interior.ColorIndex = xlNone
  For Each c In r
    If c.Value = sh.Range("L3").Value Then c.Interior.Color = vbMagenta
  Next
End Sub

【74141】Re:条件付き書式
発言  UO3  - 13/4/20(土) 19:40 -

引用なし
パスワード
   ▼nonoka さん:

↑の process2 の For Each c In r の下に
myColor = 0 を追加してください。

【74142】Re:条件付き書式
発言  UO3  - 13/4/20(土) 19:42 -

引用なし
パスワード
   ▼nonoka さん:

説明をよく読んでみますと、D列の色塗り・色消しは、ここではなく、
すでにやっておられる、ダブルクリックでのレ点セットのところでやるほうが
いいですね。

【74143】Re:条件付き書式
発言  UO3  - 13/4/20(土) 19:51 -

引用なし
パスワード
   ▼nonoka さん:

さらに、さらに。
M列、O〜AA列に関しても、現在のコードで値をセットしているところで
比較して色塗り・色消しをしたほうがいいですよ。

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