[[20210612192724]] 『文字の一部をサイズ変更し太字に』(KO KO) ページの最後に飛ぶ

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

 

『文字の一部をサイズ変更し太字に』(KO KO)

お世話になります
文章の一部の文字を手動で選択し、選択した文字のフォントサイズを12、太字に変更したいです。
例 私は自由になったと思った。
上の文字の"自由"の部分を手動で選択し、マクロを実行すれば、フォントサイズ12及び太字に"自由"のところだけ変わってほしいです。
ご教示願います

< 使用 Excel:Excel2016mac、使用 OS:Windows8 >


マクロ必要ですか?

https://h1r0-style.net/excelvba/howto-convert-fonts-at-once/amp/
(通りすがり) 2021/06/12(土) 19:53


逆に、セル編集中はマクロを実行することは
できません。
(通りすがり) 2021/06/12(土) 20:01

マクロでセルの文字列の一部だけ変更するにはCharactersを使えばよいです。
最近↓トピックでその話をしたので参考にされてはどうですか?
[[20210606121808]] 『検索文字を含む文章の検索文字のみ色を変更』(経理初心者)

(もこな2) 2021/06/12(土) 20:50


セル編集中はマクロを実行することはできません 理解していませんでした 。
勉強になりました。
フォントサイズ等をかえる対象の文字が毎回違うので
少しでも手間をはぶきたく、マクロでできないものかと思った次第です。
コツコツ頑張ることにします

ありがとうございました。

(KO KO) 2021/06/12(土) 22:08


すみません
こつこつ作業しようとおもったのですが、再度質問させてください。

B列に色々な文言が入力されています。(500行くらい)
その色々な文言のなかで目立たせたい文字だけを太字等にマクロで編集したいです

E列に目立たせたい文言を入力しておけば、マクロ可能かとおもって挑戦してみましたが、うまくいきません。


 B2  私は自由になったと思った  E2 自由
 B3  昨日 喫茶店にいった。   E3 喫茶店

B列の自由と喫茶店の文字のみを編集したいのです。
ご教示願います。下記のマクロを挑戦してみたのですが、限界でした。

Sub 文字編集()
Dim mycell As Range
Dim i As Long
Dim 発見位置
Dim 検索文字長

i = Range("B" & Rows.Count).End(xlUp).Row

 For Each mycell In Range("b1:b" & i)

   With mycell
        発見位置 = WorksheetFunction.Find(Range(mycell), "e" & i)
        検索文字長 = Len(Range("e" & i))

        .Characters(発見位置, 検索文字長).Font.Bold = True
        .Characters(発見位置, 検索文字長).Font.Size = 12
        .Characters(発見位置, 検索文字長).Font.ColorIndex = 3 '赤
    End With

 Next

End Sub
(KOKO) 2021/06/13(日) 16:24


with mycell の中の変数 i を、mycell.row に変更してみたらどうでしょう
すみませんが、当方スマホなので検証できません
(出先マン) 2021/06/13(日) 17:16

出先マン様 ありがとうございます。
> 発見位置 = WorksheetFunction.Find(Range(mycell), "e" & mycell.Row)
>検索文字長 = Len(.Range("e" & mycell.Row))
こういうことでしょうか?
デバックになってしまいました。
もし、お時間がありましたら、後程ご教示願います。

(koko) 2021/06/13(日) 17:44


すみません。
以下の様に変更でどうでしょうか

発見位置 = InStr(mycell.Value, Range("e" & mycell.Row).Value)

(出先マン) 2021/06/13(日) 17:59


検索文字長 = Len(Range("e" & mycell.Row))
は、こうです
Rangeの前に入っていた"."は不要です。

(出先マン) 2021/06/13(日) 18:10


 こんばんは!
お邪魔します。。。ちょっと回答し過ぎな気もしますが、、ついつい(^^;
既に紹介のあった↓で作った kkk というコードを使ってみました。
[[20210606121808]] 『検索文字を含む文章の検索文字のみ色を変更』(経理初心者)

 対象の文字があったら kkk に引数を渡します。
検索位置を更新して
対象の文字があったら kkk に引数を渡します。
なくなったら終了します。
以上を繰り返すコードです。。。

 Option Explicit
Sub 文字編集()
Dim mycell As Range
Dim FStr As Range
    For Each mycell In Range("b1:b" & Range("B" & Rows.Count).End(xlUp).Row)
        If mycell.Value <> "" Then
            For Each FStr In Range("e1:e" & Range("e" & Rows.Count).End(xlUp).Row)
                If FStr.Value <> "" Then
                    If InStr(1, mycell, FStr) > 0 Then
                        kkk mycell, FStr.Value, InStr(1, mycell, FStr)
                    End If
                End If
            Next
        End If
    Next
End Sub
Sub kkk(ByVal r As Range, ByVal MyStr As Variant, ByVal S As Long)
    With r.Characters(InStr(S, r.Value, MyStr), Len(MyStr))
        .Font.Bold = True
        .Font.Size = 12
        .Font.ColorIndex = 3 '赤
    End With
    S = InStr(S + Len(MyStr), r.Value, MyStr)
    If S > 0 Then kkk r, MyStr, S
End Sub
(SoulMan) 2021/06/13(日) 19:01

皆さんとかぶる部分もありますが

■1

 Range("b1:b" & i)

↑は、B2セルから始まるなら↓でしょうね。

 Range("B2:B" & i)

■2

 Range(mycell)

↑は明らかにおかしいですね。

 mycell.Value とすべきでしょう

■3
ワークシートのFind関数について真面目に調べてみましょう
(引数の順番変じゃないですか?)

■4

 i = Range("B" & Rows.Count).End(xlUp).Row
 発見位置 = WorksheetFunction.Find(Range(mycell), "e" & i)
 検索文字長 = Len(Range("e" & i))

↑だとiがずっと同じ(例示の通りなら3のまま)なので適切ではないでしょう

■5
ということを踏まえ、[[20210606121808]]で提示しているInStrを使うとこんな感じでしょうか?
(Excel2016macをWindows8で使用するという一風変わった構成なので、お使いの環境でうまくいくか保証しませんが。)

    Sub さんぷる()
        Dim i As Long, n As Long
        For i = 2 To Cells(Rows.Count, "B").End(xlUp).Row
            n = InStr(Cells(i, "B").Value, Cells(i, "E").Value)

            If n > 0 Then
                With Cells(i, "B").Characters(n, Len(Cells(i, "E").Value)).Font
                    .Bold = True
                    .Size = 12
                    .Color = vbRed
                End With
            End If
        Next
    End Sub

(もこな2) 2021/06/13(日) 19:56


こんなのはどうでしょうか

 1)ユーザーフォームをモードレスで表示
 2)ユーザーフォームのActivateイベントで、
   テキストボックスにアクティブセルの文字列を表示
 3)テキストボックス内の変更したい部分をマウスで選択
 4)コマンドボタンをクリックで、アクティブセルのフォントを変更
 5)別のセルを選んで、3)4)を繰り返す。

(マナ) 2021/06/13(日) 23:04


試してみました。
悪くないです。

  Private Sub CommandButton1_Click()
    Dim 発見位置 As Long
    Dim 検索文字長 As Long

    発見位置 = TextBox1.SelStart + 1
    検索文字長 = TextBox1.SelLength
    If 検索文字長 = 0 Then Exit Sub

    With ActiveCell.Characters(発見位置, 検索文字長).Font
        .Bold = True
        .Size = 12
        .ColorIndex = 3 '赤
    End With

  End Sub

(マナ) 2021/06/13(日) 23:26


皆さま
どの方法もうまくいきました。
大変助かりました。ありがとうございました。
ActiveCell.Charactersのケースもありえますので、勉強になりました。

(koko) 2021/06/14(月) 09:47


コメント返信:

[ 一覧(最新更新順) ]


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