Excel VBA質問箱 IV

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

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


6073 / 13646 ツリー ←次へ | 前へ→

【47355】シート内の指定色変更したいんです kanji 07/3/8(木) 21:46 質問[未読]
【47358】Re:シート内の指定色変更したいんです bykin 07/3/8(木) 22:45 発言[未読]
【47360】Re:シート内の指定色変更したいんです kanji 07/3/8(木) 23:22 質問[未読]
【47361】Re:シート内の指定色変更したいんです Kein 07/3/9(金) 0:07 回答[未読]
【47362】Re:シート内の指定色変更したいんです kanji 07/3/9(金) 0:28 質問[未読]
【47363】Re:シート内の指定色変更したいんです とおりすがり 07/3/9(金) 0:33 発言[未読]
【47364】Re:シート内の指定色変更したいんです Kein 07/3/9(金) 1:06 回答[未読]
【47365】Re:シート内の指定色変更したいんです Kein 07/3/9(金) 1:07 発言[未読]
【47366】Re:シート内の指定色変更したいんです kanji 07/3/9(金) 1:15 お礼[未読]

【47355】シート内の指定色変更したいんです
質問  kanji  - 07/3/8(木) 21:46 -

引用なし
パスワード
   初めて質問します
エクセルのシート内でフォントが赤の文字全てを
ボタンクリックでその文字だけ白に変更するVBAが分かりません
なぜそうしたいかと言うと文章暗記する時にするマーカーを
エクセルでしたいのです
何方かソースをお教え願えないでしょうか
ご教授下さい

【47358】Re:シート内の指定色変更したいんです
発言  bykin  - 07/3/8(木) 22:45 -

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

>エクセルのシート内でフォントが赤の文字全てを
>ボタンクリックでその文字だけ白に変更するVBAが分かりません

できんことはないけど・・・

>なぜそうしたいかと言うと文章暗記する時にするマーカーを
>エクセルでしたいのです

↑これはキーワードを隠すってことなんかな?
もしもそが目的なんやったら、セルの色を赤にすればええんとちゃうのかな?
こっちのほうがよっぽど簡単です。

まっ赤っ赤になるのがちょっと・・・ってことやったら、
例えばキーワードをもう少しおとなしめの色(水色とか)にして、
隠す時はその色でセルを塗りつぶすってのでええと思います。
それやったら、Cells.Interior.ColorIndex = 8 とかだけで操作できます。

勘違いしてたらすんまへん。
ほな。

【47360】Re:シート内の指定色変更したいんです
質問  kanji  - 07/3/8(木) 23:22 -

引用なし
パスワード
   早速のお返事感謝します
しかし当方がデータを入力する際に1つのセルに長文を入力しています
なので文字自体の色を判断して色を変える様にしないとだめになっています

VBAに書きたい事は
ボタンをクリック→シート内の赤文字を判断→白に変更
もう一度クリック→赤に戻す 
の繰り返しです

ご教授くださいませ

【47361】Re:シート内の指定色変更したいんです
回答  Kein  - 07/3/9(金) 0:07 -

引用なし
パスワード
   >1つのセルに長文
ということから推測すると、セル内の文字色が全て赤になっている
のではなく、任意の文字だけを赤にしているのでしょうか ?
それなら一文字づつチェックしていくしかないと思います。
サンプルコードは、グローバル変数を使った以下のようなものです。
モジュールの先頭から入れて、対象のシートを開いて試してみて下さい。

Private ColCk As Boolean

Sub Change_FColor()
  Dim C As Range
  Dim i As Long, ColA As Long, ColB As Long
 
  If ColCk Then
   ColA = 2: ColB = 3
  Else
   ColA = 3: ColB = 2
  End If
  For Each C In Cells.SpecialCells(2)
   For i = 1 To Len(C.Value)
     With C.Characters(i, 1).Font
      If .ColorIndex = ColA Then .ColorIndex = ColB
     End With
   Next i
  Next
  ColCk = Not ColCk
End Sub

一つのセルの文字色が全部赤になっている場合は、Excel4マクロ関数
のGET.CELLと、作業シートを組み合わせた方法も考えられます。
一文字づつ見ていく上のようなコードより、効率的な処理ができますが。

【47362】Re:シート内の指定色変更したいんです
質問  kanji  - 07/3/9(金) 0:28 -

引用なし
パスワード
   うわ〜!! ありがとうございます
出来ました!

わがままでもう一つ質問させてください
このマクロをシートのボタンに割り当てる方法がわかりません
どのシートにもボタンを貼り付けクリックしたらこの
モジュールが動作する方法をどうか教えてください

わがまま言ってすいません・・

【47363】Re:シート内の指定色変更したいんです
発言  とおりすがり  - 07/3/9(金) 0:33 -

引用なし
パスワード
   自習ターイム!
h t t p://www.moug.net/skillup/ebb/evbb/evbb013-3.htm

【47364】Re:シート内の指定色変更したいんです
回答  Kein  - 07/3/9(金) 1:06 -

引用なし
パスワード
   基本的にはとおりすがりさんが "自分で勉強するように" と
促していることに賛成なんですが
>どのシートにもボタンを貼り付け
というのは、あまり良いやり方とは思えませんので
"ブックを立ち上げたときに既存のツールバーへボタンを配置する"
というコードをお教えします。それなら一個作るだけで済むからです。
ThisWorkbook モジュールに、以下の2つを入れて一度ブックを閉じ、
再度開いてみてください。書式ツールバーの右端に"にこちゃん"マーク
のボタンが出ます。

Private Sub Workbook_Open()
  With Application.CommandBars("Formatting")
   .Visible = True
   With .Controls.Add(msoControlButton)
     .Caption = "文字色変更"
     .FaceId = 59
     .OnAction = "Change_FColor"
   End With
  End With
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
  With Application.CommandBars("Formatting")
   With .Controls(.Controls.Count)
     If .BuiltIn = False Then .Delete
   End With
  End With
End Sub
End Sub

【47365】Re:シート内の指定色変更したいんです
発言  Kein  - 07/3/9(金) 1:07 -

引用なし
パスワード
   >Private Sub Workbook_BeforeClose(Cancel As Boolean)
>  With Application.CommandBars("Formatting")
>   With .Controls(.Controls.Count)
>     If .BuiltIn = False Then .Delete
>   End With
>  End With
>End Sub
>End Sub
↑この最後の End Sub は削除しておいて下さい。

【47366】Re:シート内の指定色変更したいんです
お礼  kanji  - 07/3/9(金) 1:15 -

引用なし
パスワード
   みなさん ありがとうございました
無事完成しました

皆さんの親切に感動しました!

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