advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 33 for 選択 セル 目立たせる (0.023 sec.)
選択 (24685), セル (67546), 目立たせる (54)
[[20160331093458]]
#score: 11245
@digest: 7bf10679ed45ec5112439956035eb5fc
@id: 70338
@mdate: 2016-04-04T00:33:48Z
@size: 22609
@type: text/plain
#keywords: ipbox (57279), findvalue (53346), trng (51222), italic (50831), setcolor (45790), firstindex (39923), (yn (39590), 字対 (36713), プ文 (29851), xlautomatic (20797), length (17057), characters (16254), 索文 (15049), sm (13515), 強調 (12090), font (11179), textbox1 (9496), エス (9267), pattern (8952), colorindex (7957), 検索 (6662), size (6545), スケ (6033), execute (5978), vbred (5867), vbscript (5332), global (5144), caption (5068), 字色 (4984), 文字 (4237), 2016 (3476), アロ (2798)
『検索結果文字を強調表示』(YNo)
お教えください、、、 文字の検索で検索文字のあるセルを強調表示するのは、、、インストラクターのネタ帳の アクティブセルのある行・列を目立たせる、、 h ttp://www.relief.jp/itnote/archives/001406.php で出来たのですが、 セルではなく検索文字そのものを強調表示する方法があったらお教えいただきたいのですが、、、 やりたいこと、、、エクセルで、おり返して全体を表示するで、日誌まがいのことをやっています。 1セルにかなりの文字を入力した場合検索でセルを強調ではなく文字を強調したい。 よろしくお願いします。 < 使用 Excel:Excel2010、使用 OS:Windows7 > ---- ここで紹介されているアンドリューさんの方式は 検索文字のあるセルを「選択」することで、行や列をハイライトしているわけですけど 選択した 1 セルのみを 強調するということですか? 「検索」という言葉を使っておられるので、どう、理解したらいいか、迷っているんですが。 なんとなく、1セルの中の文章のなかで、たとえば 「こんにちは」という文字が現れるところを 文字色を付けて表示するとか、そういうことですか? これは、本格的な(?)マクロになりますが、それでいいのですか? ●追加 その「検索文字」は、どのように与える予定ですか? 固定ですか? ●もう1つ、追加 以下が参考になりますか? [[20160318163251]] 『特定の文字だけ色を変えたい』(ちぃ) (β) 2016/03/31(木) 10:12 ---- βさん ありがとうございます。 外出していて遅くなりました。 >ここで紹介されているアンドリューさんの方式は 検索文字のあるセルを「選択」することで、行や列をハイライトしているわけですけど >選択した 1 セルのみを 強調するということですか? そうです、いまはこれを使わせて頂いています。 >「検索」という言葉を使っておられるので、どう、理解したらいいか、迷っているんですが。 ごめんなさい、、日誌のようなものを作りいろいろ書いたものの中で特定の文字を検索したいのです。 長い文を入力してセルが検索で見つかった場合等その見つかったセルのどこに目的の文字があるかを手抜き?して見つけたいのです。 >なんとなく、1セルの中の文章のなかで、たとえば 「こんにちは」という文字が現れるところを >文字色を付けて表示するとか、そういうことですか? はい、、そうです、上記の様に、、、 >これは、本格的な(?)マクロになりますが、それでいいのですか? はい、出来ればお教えください。 >●追加 >その「検索文字」は、どのように与える予定ですか? 固定ですか? 可変です、今はCTRL+F ( SendKeys "^f" このサイト?で教えていただきました。) でやっています。 >●もう1つ、追加 >以下が参考になりますか? [[20160318163251]] 『特定の文字だけ色を変えたい』(ちぃ) ごめんなさい、良く解りません。 よろしくお願いします。 (YNo) 2016/03/31(木) 12:21 ---- βさん お世話になります。 [[20160318163251]] 『特定の文字だけ色を変えたい』(ちぃ) 、、やってみました この方法で、reg.Pattern にその都度文字を入れられ、個別に検索(ループ?ではなく)できれば、、 希望の方法?です、、 よろしくお願いします。 午後も外出してしまいますので連絡遅れるかもしれません、よろしくお願いします。 (YNo) 2016/03/31(木) 12:49 ---- はい、検索によって選択されたセルの中の文章から検索文字列を【指定して】その文字色をかえるというのは ご紹介したトピのコードで簡単にできます。 でも、今回の件は(βにとっては)難問です。 Ctrl/f で表示されたダイアログ、これは Application.Dialogs(xlDialogFormulaFind).Show でも可能というか 置換タブがないダイアログを表示できるので、おすすめですが、そのダイアログで指定された、検索文字列が何であったかの取得が(βには)できません。 書式検索等の書式なら、エクセルがちゃんと、その情報を開示してくれるんですが。 (次に検索ダイアログを開くと前回の検索文字列が表示されますから、絶対に、エクセルは、その情報をどこかに保持しているはずなんですが) なんとか、どこかに、この情報がないか、ちょっとエクセル内を調べてみますが、おそらく希望薄。 おそらく、以下のような流れになるかと思います。 ・検索ダイアログの代わりに、ユーザーフォーム(簡易検索ダイアログ)そこで、検索文字列をいれて検索。 ・検索の結果、セルが確定すれば、文字色変換。 (β) 2016/03/31(木) 13:32 ---- アップ後、以下、変更してあります。(14:43) ・表示場所を、すこし上、右に調整 ・操作中にシートスクロールも行うでしょうから、モードレス表示に。 簡易検索ダイアログ方式です。 ユーザーフォームを1つ準備してください。 そこにコントロールとして、Label1、TextBox1、CommandButton1、CommandButton2 を配置して下さい。 表示は、Excel画面の左下済に表示しますが、操作の邪魔にならないように、ユーザーフォームの大きさは適度に小さくしておいたほうがいいですね。 で、以下の標準モジュールに書いた Test に、たとえば ショートカットキーで a あたりを割り振っておけば Ctrl/a で、現在、Ctrl/f でやっているように、ダイアログがでて、検索。加えて、選択されたセルに対して 文字色の置換を行います。 ●標準モジュール Sub Test() UserForm1.Show vbModeless End Sub ●ユーザーフォームモジュール Dim c As Range Private Sub UserForm_Initialize() Caption = "検索" Label1.Caption = "検索する文字列" CommandButton1.Caption = "次を検索" CommandButton2.Caption = "文字に色塗り" StartUpPosition = 0 Left = Application.Left + 80 Top = Application.Top + Application.Height - Height - 80 End Sub Private Sub CommandButton1_Click() If TextBox1.Value = "" Then MsgBox "検索文字を指定してください" Exit Sub End If If TextBox1.Value <> TextBox1.Tag Then Set c = Range("A1") End If Set c = Cells.Find(After:=c, What:=TextBox1.Value, LookAt:=xlPart) If c Is Nothing Then MsgBox "検索文字列が見つかりません" Else c.Select TextBox1.Tag = TextBox1.Value End If End Sub Private Sub CommandButton2_Click() Dim sm As Object If c Is Nothing Then MsgBox "まだ検索が行われていません" Exit Sub End If With CreateObject("VBScript.RegExp") .Global = True .Pattern = "(.{1})" .Pattern = .Replace(TextBox1.Tag, "¥$1") 'エスケープ文字対応 c.Font.ColorIndex = xlAutomatic For Each sm In .Execute(c.Value) c.Characters(sm.firstindex + 1, sm.Length).Font.Color = vbRed Next End With End Sub (β) 2016/03/31(木) 14:20 ---- もしかして、検索にヒットしたら、自動的にそのセル内の文字色を変更。 続けて、次を検索したら、前のセルの文字色は元に戻り、次に検索されたセル内の文字色を変更、次に・・・ とやっておいて、ユーザーフォームが閉じられたら、最後に検索されて色がついているセルの文字色も元に戻すということおだったかな? それであれば、そのようにも対応可能ですので。 (β) 2016/03/31(木) 14:49 ---- もし、↑ の要件であれば、CommandButton2 は不要です。 で、ユーザーフォームモジュールを以下で、総入れ替えしてください。 Dim c As Range Private Sub UserForm_Initialize() Caption = "検索" Label1.Caption = "検索する文字列" CommandButton1.Caption = "次を検索" StartUpPosition = 0 Left = Application.Left + 80 Top = Application.Top + Application.Height - Height - 80 End Sub Private Sub UserForm_Terminate() If Not c Is Nothing Then c.Font.ColorIndex = xlAutomatic End Sub Private Sub CommandButton1_Click() If Not c Is Nothing Then c.Font.ColorIndex = xlAutomatic If TextBox1.Value = "" Then MsgBox "検索文字を指定してください" Exit Sub End If If TextBox1.Value <> TextBox1.Tag Then Set c = Range("A1") End If Set c = Cells.Find(After:=c, What:=TextBox1.Value, LookAt:=xlPart) If c Is Nothing Then MsgBox "検索文字列が見つかりません" Else c.Select TextBox1.Tag = TextBox1.Value setColor End If End Sub Private Sub setColor() Dim sm As Object If c Is Nothing Then MsgBox "まだ検索が行われていません" Exit Sub End If With CreateObject("VBScript.RegExp") .Global = True .Pattern = "(.{1})" .Pattern = .Replace(TextBox1.Tag, "¥$1") 'エスケープ文字対応 c.Font.ColorIndex = xlAutomatic For Each sm In .Execute(c.Value) c.Characters(sm.firstindex + 1, sm.Length).Font.Color = vbRed Next End With End Sub (β) 2016/03/31(木) 15:00 ---- β様 ありがとうございます。連絡が遅れ申し訳ありません。 これから挑戦?します。 少し時間を下さい。 (YNo) 2016/03/31(木) 20:35 ---- こんばんわ。 Workbook_Openイベントに、Application.OnKeyで、インプットボックスを適当に使いやすいショートカットキーに割り当てて、 ショートカットからマクロを起動してインプットボックスに検索したい文字を入力して、 入力された文字の協調部分はβさんのコードで協調表示すると言うのはダメでしょうか? βさん、コードお借りします。 ThisWorkbookモジュールのWorkbook_Openイベントに Private Sub Workbook_Open() Application.OnKey "^m", "strFind" End Sub として(ここではmですけどキーは適当に使いやすいものを指定して下さい) Workbook_BeforeCloseイベントに解除コードを忘れないで下さい。 Private Sub Workbook_BeforeClose(Cancel As Boolean) Application.OnKey "^m" End Sub ここから検索コードなので標準モジュールに貼り付けて下さい。 Sub strFind() Dim c As Range Dim cAdd As String Dim IpBox step1: IpBox = Application.InputBox(Prompt:="検索したい文字を入力して下さい。", Type:=2) Select Case IpBox Case False Exit Sub Case "" MsgBox "検索する文字を入力して下さい。" GoTo step1 End Select Set c = Cells.Find(What:=IpBox, LookAt:=xlPart) If c Is Nothing Then MsgBox "検索文字列が見つかりません" Exit Sub Else c.Select cAdd = c.Address Call setColor(CStr(IpBox), c) Do Set c = Cells.FindNext(After:=c) If c.Address = cAdd Then Exit Sub Else Call setColor(CStr(IpBox), c) End If Loop End If End Sub Sub setColor(ByVal FindValue As String, ByRef tRng As Range) Dim sm As Object With CreateObject("VBScript.RegExp") .Global = True .Pattern = "(.{1})" .Pattern = .Replace(FindValue, "¥$1") 'エスケープ文字対応 tRng.Font.ColorIndex = xlAutomatic For Each sm In .Execute(tRng.Value) tRng.Characters(sm.firstindex + 1, sm.Length).Font.Color = vbRed Next End With End Sub (sy) 2016/03/31(木) 21:28 ---- TO Ynoさん はい。ゆっくり確認してください。 その際には、最初にアップしたコードは捨てて2番目にアップしたものでお願いします。 最初のものは、検索してから色塗り指示なんて、まだるっこしい手順になりますので。 (β) 2016/03/31(木) 21:35 ---- β様 ありがとうございます。。。。 31日 15:00の方法でばっちりです!!! もう少しやってみて疑問が出ましたらまたお尋ねしますのでよろしくお願いします。 sy様 ありがとうございます。これからやってみます。 少し時間を下さい。。。 ありがとうございます。 (YNo) 2016/04/01(金) 08:08 ---- sy様 お教えいただいたコードはコントロール+mで1件検索、該当文字を赤色にして終了、、、ということでしょうか? 再度コントロール+mで検索しても前の検索結果文字は赤色のまま?、、、、 やり方を間違っている?のか1件のみ検索着色のままで終了?してしまいます。 もう少しトライしてみます。 (YNo) 2016/04/01(金) 09:58 ---- こんばんわ。 すいません、要件を全然勘違いしてました。 動きだけなら、こう言う事だったんですね。 単に色を変えて強調表示がしたいだけなら、インプットボックスならフォーム作成の手間が省けるかなと思っただけなんですけど、全然意味が違ってました。 インプットボックスは順番に文字を検索して強調表示だけなら出来るけど、モードレス表示ができないから検索中にセル操作が出来ないので、要件を満たしていませんでした。 YNoさん、βさん お騒がせして大変申し訳ありませんでした。 Sub strFind() Dim c As Range Dim IpBox If c Is Nothing Then Set c = Range("A1") IpBox = "" End If step1: IpBox = Application.InputBox(Prompt:="検索したい文字を入力して下さい。", Default:=IpBox, Type:=2) Select Case IpBox Case False c.Font.ColorIndex = xlAutomatic Exit Sub Case "" MsgBox "検索する文字を入力して下さい。" GoTo step1 End Select c.Font.ColorIndex = xlAutomatic Set c = Cells.Find(After:=c, What:=IpBox, LookAt:=xlPart) If c Is Nothing Then MsgBox "検索文字列が見つかりません" Exit Sub Else c.Select Call setColor(CStr(IpBox), c) End If GoTo step1 End Sub Sub setColor(ByVal FindValue As String, ByRef tRng As Range) Dim sm As Object With CreateObject("VBScript.RegExp") .Global = True .Pattern = "(.{1})" .Pattern = .Replace(FindValue, "¥$1") 'エスケープ文字対応 tRng.Font.ColorIndex = xlAutomatic For Each sm In .Execute(tRng.Value) tRng.Characters(sm.firstindex + 1, sm.Length).Font.Color = vbRed Next End With End Sub (sy) 2016/04/01(金) 19:47 ---- sy様 ありがとうございます。 すみません、ちょっと時間下さい。。。。 (YNo) 2016/04/01(金) 21:02 ---- sy様 ありがとうございました。 要領の得ない質問で失礼しました。 思い通りの結果です。 β様、sy様 丁寧に対応してくださり、本当にありがとうございました。 アンドリューさんの方式でセルを薄く着色し、お教えいただいた方法で 目的の文字を強調、、、、、でやります。 今後ともよろしくお願いします。 (YNo) 2016/04/02(土) 07:38 ---- すみません、追加質問です。 よろしくお願いします、、、 検索結果文字を赤色にして見やすくなったのですが、欲をだし文字サイズ、書体も変更できればと思い お教えいただいたコードに、、、ためしに、**⇒部分を追加してみました。 β様のコード Private Sub setColor() Dim sm As Object If c Is Nothing Then MsgBox "まだ検索が行われていません" Exit Sub End If With CreateObject("VBScript.RegExp") .Global = True .Pattern = "(.{1})" .Pattern = .Replace(TextBox1.Tag, "¥$1") 'エスケープ文字対応 c.Font.ColorIndex = xlAutomatic For Each sm In .Execute(c.Value) c.Characters(sm.firstindex + 1, sm.Length).Font.Color = vbRed ** ⇒ c.Characters(sm.firstindex + 1, sm.Length).Font.Size = 14 ** ⇒ c.Characters(sm.firstindex + 1, sm.Length).Font.Italic = True Next End With End Sub (sy)様のコード Sub setColor(ByVal FindValue As String, ByRef tRng As Range) Dim sm As Object With CreateObject("VBScript.RegExp") .Global = True .Pattern = "(.{1})" .Pattern = .Replace(FindValue, "¥$1") 'エスケープ文字対応 tRng.Font.ColorIndex = xlAutomatic For Each sm In .Execute(tRng.Value) tRng.Characters(sm.firstindex + 1, sm.Length).Font.Color = vbRed ** ⇒ c.Characters(sm.firstindex + 1, sm.Length).Font.Size = 14 ** ⇒ c.Characters(sm.firstindex + 1, sm.Length).Font.Italic = True Next End With End Sub 文字フォントは14に、書体は斜体にできたのですがこれでいいのか?また、検索を抜けたときの解除方法 (元のフォントサイズに、元の書体に)が分かりません。 解除方法をお教えください。 どうぞよろしくお願いします。 (YNo) 2016/04/03(日) 16:42 ---- 以下は参考になりますか? Sub 参考() Range("A1").Value = "祇園精舎の鐘の声、諸行無常の響きあり" MsgBox "今から A1 の文字列の文字書式を一部変更します" With Range("A1").Characters(6, 3).Font .Color = vbRed .Size = 14 .Italic = True End With MsgBox "確認してください。確認後元に戻します" With Range("A1").Font .ColorIndex = xlAutomatic .Size = Application.StandardFontSize .Italic = False End With End Sub (β) 2016/04/03(日) 17:13 ---- 私のコードは元々βさんのをお借りしているだけですので、 βさんのコードで複数個所に、 c.Font.ColorIndex = xlAutomatic となってる部分が、色をもとに戻す部分です。 私のも同じです。 一か所だけ、 tRng.Font.ColorIndex = xlAutomatic になってますが、 その部分に、βさんからのヒントを当てはめれば、実現できませんか。 (sy) 2016/04/03(日) 17:34 ---- ごめんなさい、β様,sy様 鈍くてよく理解できません、、、 **⇒部分を追加してみました。これで正常に?動くのは動くのですが、、、、 With CreateObject("VBScript.RegExp") .Global = True .Pattern = "(.{1})" .Pattern = .Replace(FindValue, "¥$1") 'エスケープ文字対応 tRng.Font.ColorIndex = xlAutomatic For Each sm In .Execute(tRng.Value) tRng.Characters(sm.firstindex + 1, sm.Length).Font.Color = vbRed ** ⇒ c.Characters(sm.firstindex + 1, sm.Length).Font.Size = 14 ** ⇒ c.Characters(sm.firstindex + 1, sm.Length).Font.Italic = True Next ** ⇒ MsgBox "元に戻します、、、" ** ⇒ tRng.Font.Size = 12 ** ⇒ tRng.Font.Italic = False ** ⇒ tRng.Font.ColorIndex = xlAutomatic End With これでは教えていただいていることとは違いますよね? すみません、、、 (YNo) 2016/04/03(日) 18:08 ---- 考え方は合ってるんですけど。 ** ⇒ tRng.Font.Size = 12 ** ⇒ tRng.Font.Italic = False は元々 tRng.Font.ColorIndex = xlAutomatic があった場所と同じ場所に記述していますか? 後コード内を検索文字 c.Font.ColorIndex = xlAutomatic で検索してみて下さい。 何ヶ所が検索されますので、 それら全てを変更しないといけません。 (sy) 2016/04/03(日) 18:52 ---- それと私のコードは忘れてくれて良いですよ。 インプットボックスならフォーム作成の手間が省ける以外のメリットが特に思いつかないので、 元々私の意図もそれだけですし、 もうフォームを作成しているなら、検索中の文字編集も可能ですし、レイアウトも自由に出来るし、 別の機能追加も可能なので、フォームの方が便利と思います。 (sy) 2016/04/03(日) 19:11 ---- sy様 ありがとうございます。 >考え方は合ってるんですけど。 > ** ⇒ tRng.Font.Size = 12 > ** ⇒ tRng.Font.Italic = False > は元々 > tRng.Font.ColorIndex = xlAutomatic > があった場所と同じ場所に記述していますか? はい、そうしたつもりです、、、が?? > 後コード内を検索文字 > c.Font.ColorIndex = xlAutomatic > で検索してみて下さい。 > 何ヶ所が検索されますので、 Sub strFind()の中に、2か所あります > それら全てを変更しないといけません。 すみません、すべてを変更?何に変更でしょうか? 理解不足、お詫びします。よろしくお願いします。 (YNo) 2016/04/03(日) 20:04 ---- sy様 ごめんなさい、、19:11のMSG見落としていました。 もう少し挑戦してみます。 (YNo) 2016/04/03(日) 20:06 ---- syさん指摘以上でも以下でもありません。 たとえば 私のコードだと c.Font.ColorIndex に xlAutomaticをセットしている場所が3か所あると思います。 その3か所のところを、Italic も Size も 変更するようにしなければいけませんよ という指摘ですよね。 今までは ColorIndex だけだったので、それぞれの場所で記載していましたけど、Italic と Size も加わると その3か所で、それぞれ ColorIndex,Size,Italic の3つを変更ということになりますので、 共通サブプロシジャに仕立て上げてとばすと、コードも若干スリムになります。 YNo さんに、がんばってもらいたいところですが、一応、コード例を。 Dim c As Range Private Sub UserForm_Initialize() Caption = "検索" Label1.Caption = "検索する文字列" CommandButton1.Caption = "次を検索" StartUpPosition = 0 Left = Application.Left + 80 Top = Application.Top + Application.Height - Height - 80 End Sub Private Sub UserForm_Terminate() If Not c Is Nothing Then reset c End Sub Private Sub CommandButton1_Click() If Not c Is Nothing Then reset c If TextBox1.Value = "" Then MsgBox "検索文字を指定してください" Exit Sub End If If TextBox1.Value <> TextBox1.Tag Then Set c = Range("A1") End If Set c = Cells.Find(After:=c, What:=TextBox1.Value, LookAt:=xlPart) If c Is Nothing Then MsgBox "検索文字列が見つかりません" Else c.Select TextBox1.Tag = TextBox1.Value setColor End If End Sub Private Sub setColor() Dim sm As Object If c Is Nothing Then MsgBox "まだ検索が行われていません" Exit Sub End If With CreateObject("VBScript.RegExp") .Global = True .Pattern = "(.{1})" .Pattern = .Replace(TextBox1.Tag, "¥$1") 'エスケープ文字対応 reset c For Each sm In .Execute(c.Value) With c.Characters(sm.firstindex + 1, sm.Length).Font .Color = vbRed .Size = 14 .Italic = True End With Next End With End Sub Private Sub reset(c As Range) With c.Font .ColorIndex = xlAutomatic .Size = Application.StandardFontSize .Italic = False End With End Sub (β) 2016/04/03(日) 20:38 ---- β様 ありがとうございます。 > syさん指摘以上でも以下でもありません。 > たとえば 私のコードだと c.Font.ColorIndex に xlAutomaticをセットしている場所が3か所あると思います。 > その3か所のところを、Italic も Size も 変更するようにしなければいけませんよ という指摘ですよね。 やっとわかりました。。。。 コチコチ頭でダメですね、、、、、 今回お教えいただいたコードでこれからやってみます。 ありがとうございました。 (YNo) 2016/04/03(日) 21:20 ---- β様 ありがとうございます、ばっちりです。頑張りたいのですが頭が?? sy様 ありがとうございます。 > c.Font.ColorIndex = xlAutomatic > で検索してみて下さい。 > 何ヶ所が検索されますので、、、、 Sub strFind()の中に、2か所ありました。 どちらも Size も Italic も元に戻して OK でした、、、、 前回投稿時の** ⇒の部分は、、 tRng.Characters(sm.firstindex + 1, sm.Length).Font.Color = vbRed ** ⇒ c.Characters(sm.firstindex + 1, sm.Length).Font.Size = 14 ** ⇒ c.Characters(sm.firstindex + 1, sm.Length).Font.Italic = True は tRng.Characters(sm.firstindex + 1, sm.Length).Font.Size = 14 tRng.Characters(sm.firstindex + 1, sm.Length).Font.Italic = True の間違いでした。 ありがとうございました。 β様、sy様 お世話になりました。今後ともよろしくお願い致します。 (YNo) 2016/04/04(月) 09:33 ...
http://www.excel.studio-kazu.jp/wiki/kazuwiki/201603/20160331093458.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97012 documents and 608132 words.

訪問者:カウンタValid HTML 4.01 Transitional