[[20150210133718]] 『セル内の文字(数字)の一部にだけフォント書式を』(Excel知りたい) ページの最後に飛ぶ

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

 

『セル内の文字(数字)の一部にだけフォント書式を適用したい。』(Excel知りたい)

セル内の文字(数字)の一部にだけフォント書式を適用したい。
条件付き書式ではセル内全てに適応されてしまいます。

下記3種類が別々のセルにあるとします。
12-24
14-26
20-30

このうち1行目「12」のみに太字を適応するマクロができるものか、
できないのかも分からずに取り組んでいます。
ご教示いただけますと助かります。よろしくお願いいたします。

以下のページを参考に下記のマクロを実行すると、
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_cell_font.html
Sub mojiiro3()
 Dim RE, c
 Dim myRng As Range
 Dim myStr As String
 Dim i As Integer
  Set RE = CreateObject("VBScript.RegExp")
  With RE
    .Pattern = "[¥61&¥62]+"
    .Global = False
    For Each myRng In Selection
      For Each c In .Execute(myRng.Value)
        With myRng.Characters(c.firstindex + 1, c.Length).Font
          .ColorIndex = 3
          .Size = 14
        End With
      Next c
    Next myRng
  End With
 Set RE = Nothing
End Sub

1と2の部分すべてに適応されます。
具体的には、1行目の「12」と2行目14のうち「1」と3行目20のうち「2」に適応されてしまいます。
マクロでは1と2を1つずつ個別にみてしまうことしかできないのでしょうか?
「12」を1つとみなして判別できると嬉しいのですが、無理でしょうか?
実際には、先頭にある「12」「20」「22」「24」の4種類を同時に判別してこの部分だけを太字にしたいのです。
セルの値は数字の2桁-数字の2桁で決まっています。それ以外の桁数や数字以外のものは入りません。

長々とすみませんが、どうぞよろしくお願いいたします。

< 使用 Excel:Excel2013、使用 OS:Windows7 >


すみません、最後のところで矛盾しています。
完成系では1行目の「12」と3行目の「20」に適応されることが目的です。
まずは、「12」のみと思いやっていたので上記のコメントになっています。
(Excel知りたい) 2015/02/10(火) 13:52

 .Pattern = "[¥61&¥62]+"
 ではなく
  .Pattern = "^(12|20|22|24)"
 にして、どうでしょうか。
(Mook) 2015/02/10(火) 14:13

 To Mookさん

 失礼します。
 「「12」「20」「22」「24」の4種類を同時に判別してこの部分だけを太字」ですから

 ^ は不要で、.Pattern = "12|20|22|24" ではないですか?

(β) 2015/02/10(火) 15:00


「^」を抜いてしまうと、13-20 のような場合、後ろの 20 にも色が付いちゃいますから、抜いては駄目かと。
(???) 2015/02/10(火) 15:07

 正規表現?

 Sub test()
    Dim r As Range
    For Each r In Selection
        If Evaluate("or(left(" & r.Address & ",2)={""12"",""14"",""20""})") Then
            With r.Characters(1, 2).Font
                .ColorIndex = 3
                .Size = 14
            End With
        End If
    Next
End Sub
(seiya) 2015/02/10(火) 15:08

Mookさん、βさん、seiyaさん、誠にありがとうございます。
Mookさんの方法で完全に目的が達成されました。
本当にありがとうございました。
「^」を抜くと
20-20の場合は前の「20」のみ適応されるのですが、
16-20の場合は後ろの「20」に適応されてしまうようで、
前のみに対応させたかったのでMookさんの方策がベストでした。

あとから質問を読み直すと言葉足らずでした。
βさんすみません。前側のみをターゲットにしていました。
Mookさん、私の言葉足らずな質問内容を的確にご判断下さり本当にありがとうございました。

以下で完璧に動作しました。
Sub mojiirofutoji()

 Dim RE, c
 Dim myRng As Range
 Dim myStr As String
 Dim i As Integer
  Set RE = CreateObject("VBScript.RegExp")
  With RE
   .Pattern = "^(12|20|22|24)"
   .Global = False

   For Each myRng In Selection
    For Each c In .Execute(myRng.Value)
     With myRng.Characters(c.Firstindex + 1, c.Length).Font
       .ColorIndex = 3
       .Bold = True
      End With
    Next c
   Next myRng
  End With
 Set RE = Nothing
End Sub

(Excel知りたい) 2015/02/10(火) 15:39


 「「^」を抜いてしまうと、13-20 のような場合、後ろの 20 にも色が付いちゃいますから、抜いては駄目かと。 」

 先頭のという意味を取り違えていました。
 (最初に現れたと思い込み)

 失礼しました。

(β) 2015/02/10(火) 15:45


コメント返信:

[ 一覧(最新更新順) ]


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