Excel VBA質問箱 IV

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

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


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

【46392】VBAでボタンを押すと指定したセルの色が白く、もう一度押すと黒くするには。 07/2/1(木) 17:48 質問[未読]
【46393】Re:VBAでボタンを押すと指定したセルの色が... へっぽこ 07/2/1(木) 18:01 発言[未読]
【46395】Re:VBAでボタンを押すと指定したセルの色が... りん 07/2/1(木) 18:31 発言[未読]
【46397】Re:VBAでボタンを押すと指定したセルの色が... Kein 07/2/1(木) 19:25 回答[未読]

【46392】VBAでボタンを押すと指定したセルの色が...
質問    - 07/2/1(木) 17:48 -

引用なし
パスワード
   現在エクセルでいろんな計算式が入ってものを作りました。
ですが問題がでてきてしまって、印刷時に表示しないで印刷したい箇所が何カ所かあるのです。 
その箇所が、A1〜A10、B5、B7〜B22 セルなのですが、
現在ボタンを設置したので、それを押すことで、このセルだけ表示しないようにしたいのですが、一番いいかなと思いついたのが、ボタンを押すだけで色が白くなり、画面に打つさないプログラムです。
そしてもう一度そのボタンを押すと指定セルが黒くなるというものでこれをつくりました。

If Range("A1").Font.ColorIndex <> 2 Then
Range("A1:A10", "B5", "B7:B22").Font.ColorIndex = 2
Else
Range("A1:A10", "B5", "B7:B22").Font.ColorIndex = xlColorIndexAutomatic
End If

しかしセルの中に赤色が含まれる部分があるのです。 
それは数値が−に(例−5等)なっている部分です。
そのためセルの中に黒or赤色が含まれており、これらを白にしたいのです。
そしてもう一度ボタンを押すと、もとに戻す(数値が−のところは判別して赤色に戻す)ようにしたいのですが可能でしょうか?
上のプログラムに何を追加したらいいのでしょうか?
わからず困っております。
これができれば仕事上でかなり役立つプログラムとなり、現在の悩みが解決いたします。
どうかわかる方がいましたら教えて頂けないでしょうか?
お願い致します。

【46393】Re:VBAでボタンを押すと指定したセルの色...
発言  へっぽこ  - 07/2/1(木) 18:01 -

引用なし
パスワード
   いま赤くなっているセルは「フォントの色」を赤くしてあるのではなく
「セルの書式設定」→「数値」で赤にしてあるのではないでしょうか?

もし書式設定で赤にしてあるようなら、フォントの色を白にしても
白くはならないです。
(手作業で同じことをしてみるとわかるかと)

その場合、「書式設定を標準に戻して…」とかすると面倒なことになりそう
なので、フォントサイズを1にしたり、元に戻したり
(処理したいセルが?ポイントで統一されているか不明ですが)
してはいかがでしょうか?

【46395】Re:VBAでボタンを押すと指定したセルの色...
発言  りん E-MAIL  - 07/2/1(木) 18:31 -

引用なし
パスワード
   彩 さん、こんばんわ。

>現在エクセルでいろんな計算式が入ってものを作りました。
>ですが問題がでてきてしまって、印刷時に表示しないで印刷したい箇所が何カ所かあるのです。 
>その箇所が、A1〜A10、B5、B7〜B22 セルなのですが、
マクロではなく、書式設定で切り替える方法です。
該当セルを選択して、
 書式 → 条件付き書式
  条件1 : 数式が =$Z$1=1  書式:フォント色を白
  条件2 : セルの値が  次の値より小さい  0  書式:フォント色を赤

Z1セルに1を入れるとフォント色が白になり、それ以外だと標準又は赤になります。

【46397】Re:VBAでボタンを押すと指定したセルの色...
回答  Kein  - 07/2/1(木) 19:25 -

引用なし
パスワード
   現在のコードを改造するだけで良いのなら・・

Dim C As Range

If Range("A1").Font.ColorIndex <> 2 Then
  Range("A1:A10, B5, B7:B22").Font.ColorIndex = 2
Else
  For Each C In Range("A1:A10, B5, B7:B22")
   If Sgn(C.Value) = -1 Then
     C.Font.ColorIndex = 3
   Else
     C.Font.ColorIndex = xlColorIndexAutomatic
   End If
  Next
End If

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