Excel VBA質問箱 IV

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

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


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

【21484】作業完了予定日が過ぎるとセルの色が変わる書式を教えてください。 ISOTOPE 05/1/21(金) 19:31 質問[未読]
【21485】Re:作業完了予定日が過ぎるとセルの色が変... ichinose 05/1/21(金) 20:04 発言[未読]
【21518】Re:作業完了予定日が過ぎるとセルの色が変... ISOTOPE 05/1/22(土) 12:30 発言[未読]
【21520】Re:作業完了予定日が過ぎるとセルの色が変... G-Luck 05/1/22(土) 14:56 回答[未読]
【21521】Re:作業完了予定日が過ぎるとセルの色が変... [名前なし] 05/1/22(土) 15:57 回答[未読]
【21526】Re:作業完了予定日が過ぎるとセルの色が変... [名前なし] 05/1/22(土) 18:50 回答[未読]
【21531】Re:作業完了予定日が過ぎるとセルの色が変... ichinose 05/1/22(土) 21:00 発言[未読]
【21524】Re:作業完了予定日が過ぎるとセルの色が変... [名前なし] 05/1/22(土) 16:20 回答[未読]
【21528】Re:作業完了予定日が過ぎるとセルの色が... ponpon 05/1/22(土) 19:22 回答[未読]
【21695】Re:作業完了予定日が過ぎるとセルの色が... koshimizu 05/1/27(木) 9:33 質問[未読]
【21697】Re:作業完了予定日が過ぎるとセルの色が... Jaka 05/1/27(木) 11:23 発言[未読]
【21698】Re:作業完了予定日が過ぎるとセルの色が... koshimizu 05/1/27(木) 12:47 お礼[未読]
【21706】Re:作業完了予定日が過ぎるとセルの色が... ISOTOPE 05/1/27(木) 17:57 お礼[未読]

【21484】作業完了予定日が過ぎるとセルの色が変わ...
質問  ISOTOPE  - 05/1/21(金) 19:31 -

引用なし
パスワード
   たとえば下記のような表があったとして、例1のように
作業完了予定前に作業が完了している場合はセルの色を変えず
例2のように1月4日に完了予定なのに4日を過ぎても作業が完了
しない場合はセルの色を赤にしたいです。また、例3のように、
予定日は過ぎ、セルの色が赤だが、その後作業が完了したものについて、
セルの色が元に戻るように設定したいのですが、
どうすれば良いか解りません。力を貸してください。
作業完了予定(C1)  作業完了日(D1)
 1月1日(C2)     12月30日(D2)←例1
 1月4日(C3)         (D3)←例2
 1月7日(C4)     1月10日 (D4)←例3

【21485】Re:作業完了予定日が過ぎるとセルの色が...
発言  ichinose  - 05/1/21(金) 20:04 -

引用なし
パスワード
   ▼ISOTOPE さん:
こんばんは。

>たとえば下記のような表があったとして、例1のように
>作業完了予定前に作業が完了している場合はセルの色を変えず
>例2のように1月4日に完了予定なのに4日を過ぎても作業が完了
>しない場合はセルの色を赤にしたいです。また、例3のように、
>予定日は過ぎ、セルの色が赤だが、その後作業が完了したものについて、
>セルの色が元に戻るように設定したいのですが、
>どうすれば良いか解りません。力を貸してください。
>作業完了予定(C1)  作業完了日(D1)
> 1月1日(C2)     12月30日(D2)←例1
> 1月4日(C3)         (D3)←例2
> 1月7日(C4)     1月10日 (D4)←例3
これは、条件付書式を使用すると可能ですよ!!

C列(上記の例だとC2〜C4)を選択して、
「書式」----「条件付書式」とクリックして下さい。
ダイアログが表示されますから、記述された条件にあうような設定を行って下さい。

コードで設定するなら、
'====================================================
Sub main()
  With Selection.FormatConditions
   .Delete
   .Add Type:=xlExpression, Formula1:= _
    "=AND(rc[1]="""",rc<TODAY())"
   .Item(1).Interior.ColorIndex = 3
   End With
End Sub

セルC2〜C4を選択した状態でmainを実行してみて下さい。
但し、C列には予定日が入力されていると仮定しています。
(未入力の場合は、色無しなら数式をもう一工夫ですが・・)

確認して下さい。

【21518】Re:作業完了予定日が過ぎるとセルの色が...
発言  ISOTOPE  - 05/1/22(土) 12:30 -

引用なし
パスワード
   メール頂き、ありがとうございます。
ただ、初心者のため、解る様で解りません。
どんな設定にすればいいでしょうか?
ご連絡お待ちしております。

【21520】Re:作業完了予定日が過ぎるとセルの色が...
回答  G-Luck  - 05/1/22(土) 14:56 -

引用なし
パスワード
   EXCEL上ですと、書式>条件付書式と進んで、設定をして下さい。
三つまでですと、これで出来ます。

VBAコードは、標準モジュールにコピーしてください。
EXCELに戻って、
>セルC2〜C4を選択した状態でmainを実行してみて下さい。
ツール>マクロ>マクロ>mainを選択して、実行してください。

【21521】Re:作業完了予定日が過ぎるとセルの色が...
回答  [名前なし]  - 05/1/22(土) 15:57 -

引用なし
パスワード
   ▼ISOTOPE さん:
>メール頂き、ありがとうございます。
>ただ、初心者のため、解る様で解りません。
>どんな設定にすればいいでしょうか?
>ご連絡お待ちしております。


パソコンを全く使ったことない字も打てない人にホラ
この報告書1時間いないにメモ帳でいいから書けって
いってもわからないのと同じです。
まずエクセルの基本機能をいろいろいじって
あぁ こいうふうにうごくんだなって
ある程度感じ取って、もう少しわかるようになってから挑戦するといいです。

まず基本がなっていないので、ステップアップが必要です。
あの提示されたコードが読めないのなら いまのあなたの知識では無理です。


ステップ アップ。1
1。新規エクセルを立ち上げる
2。セル A1 に1といれる。
3.セルA2にカーソルをあわせ、 = ボタンを押す。
4. if() と入力する。  入力画面があらわれます。
5。 論理式に A1=1といれてみる。 右にTrueとでるはずです。
6。 論理式に A1=2といれてみる。 右にFalseとでるはずです。

その論理式の部分が、理解できない限り、

Excelの上にあるメニューの【書式】 → 【条件付書式】
への設定はできません。 


逆にそれが、理解できれば、 
【条件付書式】もできるはずです。

ステップ アップ。2
1.A1にカーソルをあわせる
2.Excelの上にあるメニューの【書式】 → 【条件付書式】
3.条件1 の セルの値が を 数式が に変更。
4. (A1=1)と入力して、 書式を設定。
5.追加をおす
6.条件2 の セルの値が を 数式が に変更し、 (A1<>1)と入力して、 書式を設定。
7.OKをおす。
A1のセル値を2とかいれてみる。
動作が理解できるはず。


そこまでできたら、 VBでコードで書くことを始めましょう。

【21524】Re:作業完了予定日が過ぎるとセルの色が...
回答  [名前なし]  - 05/1/22(土) 16:20 -

引用なし
パスワード
   ▼ISOTOPE さん:
>たとえば下記のような表があったとして、例1のように
>作業完了予定前に作業が完了している場合はセルの色を変えず
>例2のように1月4日に完了予定なのに4日を過ぎても作業が完了
>しない場合はセルの色を赤にしたいです。また、例3のように、
>予定日は過ぎ、セルの色が赤だが、その後作業が完了したものについて、
>セルの色が元に戻るように設定したいのですが、
>どうすれば良いか解りません。力を貸してください。
>作業完了予定(C1)  作業完了日(D1)
> 1月1日(C2)     12月30日(D2)←例1
> 1月4日(C3)         (D3)←例2
> 1月7日(C4)     1月10日 (D4)←例3


一見ひじょーにむずかしぃーこといってるみたいにみえるけどだけど。
日本語を整理すると 要するに
作業完了日に入力がない(空白)か調べればいいだけの
ひじょーに簡単な条件書式じゃないのかな

isblank かい
 はい。 じゃぁ今日越えた? 
   はい 赤色
   いいえ、 普通の色?
 いいえ。 完了の色

【21526】Re:作業完了予定日が過ぎるとセルの色が...
回答  [名前なし]  - 05/1/22(土) 18:50 -

引用なし
パスワード
   ▼ISOTOPE さん:
>メール頂き、ありがとうございます。
>ただ、初心者のため、解る様で解りません。
>どんな設定にすればいいでしょうか?
>ご連絡お待ちしております。

同じ条件で複数列指定する場合、
絶対座標で代入しない場合、マクロからは、全部横にずれるようなので
難易度が高いみたいです
ISOTOPE さん:のコードを改良して
複数列に 対応するコードに修正しました。


左から
作業完了予定    作業完了日 の順に選択した状態で使ってください。あとに続く右の文字はなんでもいいです。

作業完了予定より左にあるセルも色を変えるには、また別のコードに修正する必要があります。
絶対アドレスで、コードを書く方が、FormatConditionsが補正をかけないので
簡単なんですけどね・・・


Private Sub CommandButton1_Click()
 Call FormatConditionsTest
End Sub


Public Sub FormatConditionsTest()
 Dim Siki As String
 Dim i, j As Long
 Dim sRange As String
 Dim Kyori As Long
 
 For i = 1 To Selection.Rows.Count
  For j = 1 To Selection.Columns.Count
   sRange = Selection.Cells(i, j).Address
   Kyori = 1 - j
   Siki = "=AND(RC[" + CStr(Kyori + 1) + "]=""""," + _
      "RC[" + CStr(Kyori) + "]<TODAY())"
   ' "=AND(rc[1]="""",rc<TODAY())"
  
 '  MsgBox Siki + vbCrLf + sRange
   With Range(sRange).FormatConditions
   .Delete
   .Add Type:=xlExpression, Formula1:=Siki
   .Item(1).Interior.ColorIndex = 3
   End With
  
  Next
 Next
' RCについては、 Address プロパティの使用例参照
End Sub

【21528】Re:作業完了予定日が過ぎるとセルの色が...
回答  ponpon  - 05/1/22(土) 19:22 -

引用なし
パスワード
   ▼[名前なし] さん,ISOTOPE さん:
 こんにちは。ponponです。
 ここの掲示板ではずいぶんお世話になったので、
 自分のわかるところは、少しでもお答えしたいと思います。
 自分の勉強にもなりますので・・・

>一見ひじょーにむずかしぃーこといってるみたいにみえるけどだけど。
>日本語を整理すると 要するに
>作業完了日に入力がない(空白)か調べればいいだけの
>ひじょーに簡単な条件書式じゃないのかな
>
>isblank かい
> はい。 じゃぁ今日越えた? 
>   はい 赤色
>   いいえ、 普通の色?
> いいえ。 完了の色

 ↑を条件付き書式で設定する場合、
 提示された例で考えると、
 D2をクリック→「書式」→「条件付き書式」をクリック。
 条件1「セルの値が」を「数式が」に変更。
 隣の四角の中に「=ISBLANK(D2)=TRUE」と入力
 右端の「書式」をクリック→パターン赤色を選ぶ。OK→OK
  これでD2の条件付き書式が設定されます。
 後は、D2を右クリックコピー、条件付き書式を設定したい範囲を選択し右クリックし、形式を選択して貼り付け→書式をチェック→OK
これで選択した範囲すべてに条件付き書式が設定されます。
  以上で、空欄ならば赤、それ以外なら色なしが設定されます。

 さらに、完了予定日以内に作業が完了した場合の色設定は、
同じようにD2クリック→条件付き書式までは一緒。
条件2「セルの値が」を「数式が」に変更。
隣の四角の中に「=$C2>=$D2」書式に緑色。OK→OK

 さらに完了予定日を超えた場合は、
条件3「セルの値が」を「数式が」に変更。
隣の四角の中に「=$C2<$D2」書式に青色。OK→OK
 後は、書式を必要な範囲に形式を選択して貼り付けすれば、
  予定日以内で完了すれば  緑色
  予定日を超えて完了すれば 青色
  完了していなければ(空欄)赤色
 に設定されます。
 やってみてください。

【21531】Re:作業完了予定日が過ぎるとセルの色が...
発言  ichinose  - 05/1/22(土) 21:00 -

引用なし
パスワード
   皆さん、こんばんは。
一日、出かけていたので遅くなりましたが、
条件付書式の設定については、回答がついているみたいなので
よろしいですよね?


>同じ条件で複数列指定する場合、
>絶対座標で代入しない場合、マクロからは、全部横にずれるようなので
>難易度が高いみたいです

そうですねえ!!
私も列単位の設定で複数列指定を考えてみました。
'=============================================
Sub main1()
  fml = ""
  For idx = 1 To Selection.Columns.Count
    With Selection.Columns(idx).FormatConditions
     .Delete
     .Add Type:=xlExpression, Formula1:= _
      IIf(fml = "", "=AND(rc[1]="""",rc<TODAY())", fml)
     .Item(1).Interior.ColorIndex = 3
     If fml = "" Then
       fml = Application.ConvertFormula(.Item(1).Formula1, _
               xlA1, _
               xlA1, _
               xlRelRowAbsColumn)
       '↑列のアドレスだけ絶対番地に変換
       End If
     End With
   Next
End Sub

今度は、例えば、c2:f7と選択し(c列が予定日、d列が完了日だとして)
Main1を実行してみて下さい。

【21695】Re:作業完了予定日が過ぎるとセルの色が...
質問  koshimizu E-MAIL  - 05/1/27(木) 9:33 -

引用なし
パスワード
   おはようございます。
おしえてください

ponponさんの回答で条件付書式で色がついていますが、この色ナンバーを使って
集計を考えましたが、条件付書式で色がついたものは色ナンバーが出ません。
ペイントでつけたものは
Function セルカラーNo(セル As Variant) As Variant
  Application.Volatile
  セルカラーNo = セル.Interior.ColorIndex
End Function
で集計しています。良い方法がありますか。

【21697】Re:作業完了予定日が過ぎるとセルの色が...
発言  Jaka  - 05/1/27(木) 11:23 -

引用なし
パスワード
    こんにちは。

条件付書式でつけられた色を取得するのは難しいです。
[#20251]

どんな集計なのか解りませんけど、条件付書式の条件がわかっているのですから、
CountIF等で求められませんか?

また、新規にスレッドを立てた方が良かったと思います。

【21698】Re:作業完了予定日が過ぎるとセルの色が...
お礼  koshimizu E-MAIL  - 05/1/27(木) 12:47 -

引用なし
パスワード
   Jaka さん
こんにちは。
ご回答ありがとうございます。

条件付書式でつけられた色を取得するのは難しいんですね。
CountIFで求めてはありましたが、条件付書式でつけられた色と
ペイントの色の違いがわかりませんでした。
過去を調べずに質問しまして申し訳ありませんでした。
今後とも宜しくお願い致します。

【21706】Re:作業完了予定日が過ぎるとセルの色が...
お礼  ISOTOPE  - 05/1/27(木) 17:57 -

引用なし
パスワード
   ようやくできました。
ありがとうございました。

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