[[20081017111430]] 『色つきセルにデータが入力されている場合は?』(カルロ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『色つきセルにデータが入力されている場合は?』(カルロ)
 WindowsXP,Excel2002
 こんにちわ。いつもお世話になります。

 <リストシート>

       A          B        C        D        E 			
 1   氏名  |  色1  色2  色3  色4			
  - - - - - - - - - - - - - - - - - - - - - - - - - - 
 2   みどり  |  黄色セル      黄色セル(文字入力)
 3   さつき  |  青色セル  青色セル(日付入力)
 4   はつみ  |         ピンクセル      日付入力
 5   みどり  |  ピンクセル        ピンクセル(日付入力) 

 黄色セル、青色セル、ピンクセル、普通のセルがそれぞれあります。
 色付セルでも文字や日付の入っているセルもあれば普通のセルでも日付や文字が
 入っているせるもあります。
 そこで、
 色付セルに日付又は、文字が入っていない場合は、”はじめ”の文字を入力したいのです。
 マクロで処理する方法があれば教えて下さい。
 又は、
 F列以降に、関数を入力して色付セルに日付又は、文字が入っていない場合は、
 ”はじめ”の文字を入力したいのです。それを基の表に上書きコピーする。

 マクロ処理の方法 又は、関数を利用して処理する方法を教えて下さい。
 よろしくお願いします。
   


 >日付又は、文字が入っていない場合は、
  ↑
 ここの表現ですが、その意味するところは「単に未入力」と云う事でいいですか? それとも、
 厳密に「日付と文字だけ」で、「普通の数値」とか「エラー値」は「はじめ」に変えてしまうのですか?

 (半平太)

 半平太さんへ:
 未入力のところと日付が入っているところ、文字のみ入っているところがあります。
 エラー値は、ありません。よろしくお願いします(カルロ)

 Sub NonClrSt()
 Dim Cel As Range
     Application.ScreenUpdating = False

     For Each Cel In Range("B2:E5")
         With Cel
             If TypeName(.Value) = "Empty" And .Interior.ColorIndex <> -4142 Then .Value = "はじめ"
         End With
     Next

     Application.ScreenUpdating = True
 End Sub

  (半平太)


 書き忘れました。シートモジュールに書いてください。

 1) シート見出しを右クリックして「コードの表示」を選択。
 2) 画面中央の白いところにコードをコピペ
 3) Alt + F11 でエクセル画面に戻る
 4)メニュー[ツール]→[マクロ]→[マクロ]→マクロ名を指定→[実行]ボタンクリック

 (半平太)

 半平太さん回答有難うございました。
 できました。すごいですね (^_^)
 とても助かりました。有難うございます。
 今後とも よろしくお願いします(カルロ)

 すみません。もう1つ教えて下さい。
 上記のマクロで大成功なのですが、実は、B2:E5セルには、関数が入っていて
 必要なデータのみ抽出していたのです。データ抽出した関数は、複写して値貼り付け
 しています(B2:E5セルまで)
 外見上は、空白セルのように見えますが、セルには、なにか入っているようです。
 上記マクロを実行させると”はじめ”の文字が貼り付きません。
 そこで空白セルと見えるところをDELキーで消してマクロ実行すると”はじめ”の
 文字が貼りつきます。
 空白と見えるセルに”はじめ”を貼り付けるには、どうしたらよいのでしょうか?
 よい方法がありましたら教えて下さい。よろしくお願いします(カルロ)

 >なにか入っているようです。

 と云うことは、それは「未入力」ではありません。(文字列の一種です。文字数はゼロですけどね。。。)

 これに変更してください。(ただし、万一セルにエラー値が入っているとトラぶります)
  ↓
 Sub NonClrSt()
 Dim Cel As Range
     Application.ScreenUpdating = False

     For Each Cel In Range("B2:E5")
         With Cel
             If .Value = "" And .Interior.ColorIndex <> -4142 Then .Value = "はじめ"
         End With
     Next

     Application.ScreenUpdating = True
 End Sub

  (半平太)


 半平太さん回答有り難うございました。
 もうできないのではないかとあきらめていました。
 すごい!こんなこともできるのですね。
 私の能力では、到底 わかりません。
 本当に有り難うございました。感謝します。
 今後ともよろしくお願いします(カルロ)

 11/10
 すみません。上記 マクロで試してみたら最初は、良かったのですが、
 色付で日付が入っているセル以外は、"はじめ"の文字を入力したいのですが、
 "はじめ"の文字が入らないセルがでてしまいました。
 そのセルは、見た目では何も入っていないようにみえますが、"1900/1/0"という日付が
 入っていて日付形式になっています。
 そのような場合 どのようにマクロを変更したらよいのでしょうか?
 教えて下さい。よろしくお願いします(カルロ)


  >そのセルは、見た目では何も入っていないようにみえますが、"1900/1/0"という日付が
  >入っていて日付形式になっています。

 値が「0」で、書式が日付ですと、"1900/1/0"になります。 このセルが色付きなら「はじめ」にする。
 そして
 値が「0」で、書式が標準ですと単に「0」になりますが、これは色付きであっても「はじめ」にしない。

 ・・・でいいですね。 

  (半平太)


 半平太さんいつも有難うございます。
 >値が「0」で、書式が標準ですと単に「0」になりますが、これは色付きであっても「はじめ」にしない。
 以前 教えていただいたマクロで処理したら、色付セルで日付が入っているところ意外は、「はじめ」
 の文字が入っていたのですが、たまに色付セルでも「はじめ」の文字が入っていないところがありました。
 そのセルにカーソルをあててみると"1900/1/0"が入っていました。見た目は、色だけついているように 
 みえたのですが。。。そのセルも色付セルなので「はじめ」の文字を入力したいのです。
 *色付セルで、日付入力されているセル以外は、すべて「はじめ」の文字を入力したいのです。
 よろしくお願いします。(カルロ)


  1. 色付セルで「日付」以外は「はじめ」の文字を入力する。
  2. "1900/1/0"にも「はじめ」を入力

  で、いいですね?  → 色付セルで普通の数値(例:39762) は、「はじめ」に変わります。

  Sub NonClrSt()
  Dim Cel As Range
      Application.ScreenUpdating = False

      For Each Cel In Range("B2:E5")
          With Cel
              If (.Value2 = 0 Or Not IsDate(.Value)) And .Interior.ColorIndex <> -4142 Then .Value = "はじめ"
          End With
      Next

      Application.ScreenUpdating = True
  End Sub

  (半平太)


 半平太さん回答ありがとうございます。
 色付で日付入力以外のセルを確認したら空白(なにも入っていない)か、"1900/1/0"になっていました。
 普通の数値は、入っていませんでした。
 上記 計算式で処理したら色付セルで日付入力セル以外は、「はじめ」の文字が入りました。
 お手数をおかけしました。有難うございます。
 今後とも よろしくお願いします(カルロ)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.