[[20140611141444]] 『シート名の一部を取得してセルの値を太文字にする』(なっち) ページの最後に飛ぶ

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

 

『シート名の一部を取得してセルの値を太文字にする』(なっち)

お世話になってます。

シートが3つ、シート名は「Sheet001」「Sheet002」「Sheet003」です。

全てのシートの中のセルに、文字列で「001」」「002」「003」がランダムの位置に記入されています。(位置は不特定)

その記入された数値の右隣には全て「A」と記入されています。

シート名の数値が「Sheet001」の場合、シートの中から001を見つけて
「A」の文字を標準→太文字に変更したいです。

Sheet001 の場合

001 A ←これを太文字にする
002 A
003 A

Sheet003 の場合

001 A
002 A
003 A ←これを太文字にする

詳しい方、よろしくおねがいします。

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


 一例です。
Sub sample()
Dim i As Long, j As Long, f As Range
Dim s1 As String, s2 As String, ad As String
    For i = 1 To 3 'シート数
        s1 = "00" & i & " A" '検索対象文字列
        s2 = "A"             '変更対象文字列
        Set f = Sheets("Sheet00" & i).Cells.Find(s1, , , 1)
        If Not f Is Nothing Then
            ad = f.Address
            Do
                j = InStr(f, s2)
                If j Then f.Characters(j, Len(s2)).Font.FontStyle = "太字"
                Set f = Sheets("Sheet00" & i).Cells.FindNext(f)
            Loop Until ad = f.Address
        End If
    Next i
End Sub
(Jera) 2014/06/11(水) 16:06

 標準機能の例で。

 シートのどこかにシート名を置いて(例えばAA1)
 B1をクリックしてから対象範囲(B:Z)を選択し、条件付書式の数式で
 =RIGHT($AA$1,3)=A1
 で書式で太字でどうでしょうか。

 AA1 には
 =RIGHT(CELL("filename",A2),LEN(CELL("filename",A2))-FIND("]",CELL("filename",A2)))
 などでシート名表示はできます。
(Mook) 2014/06/11(水) 16:14

Jeraさん、ありがとうございます。

やってみましたが、「インデックスが有効範囲にありません。(Error 9)」と
エラーになってしまいうまくいきませんでした。。

それと「A」ですが、セルに記入されているのは「A」とは限らず、右隣のセルに
入力されている文字を太文字にしたいです。「A」はサンプル文字です。

Mookさん、ありがとうございます。
試してみます。。

(なっち) 2014/06/11(水) 16:26


Mookさん、出来ましたぁ!
ありがとうございました!
また教えてください。。
(なっち) 2014/06/11(水) 16:37

 あぁ、同一セルに"001 A"と入力されていて、セルの一部だけ太字にしたいのかと思ってました。

 ※一応修正案を出しておきます。
   インデックスエラーは実際のシート名が"Sheet001"のようになっていないのでしょうね。
   Mookさんの案で解決されたようなので、これでも大丈夫かな…
Sub sample()
Dim i As Long, f As Range
Dim s As String, ad As String
    For i = 1 To Worksheets.Count
        s = Right$(Sheets(i).Name, 3)   '検索対象文字列
        Set f = Sheets(i).Cells.Find(s, , , 1)
        If Not f Is Nothing Then
            ad = f.Address
            Do
                f.Offset(, 1).Font.FontStyle = "太字"
                Set f = Sheets(i).Cells.FindNext(f)
            Loop Until ad = f.Address
        End If
    Next i
End Sub
(Jera) 2014/06/11(水) 16:46

Jeraさん、おはようございます。

修正案確認しました、出来ました!
ありがとうございました!

また教えてくださいね。。
(なっち) 2014/06/12(木) 07:30


コメント返信:

[ 一覧(最新更新順) ]


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