ここから本文です

すいません。

ihf********さん

2019/5/1619:31:52

すいません。

https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q122075029...でSub A列の重複対策の点を白にするマクロ2()でお世話になったのですがさらに追加をお願いします。
Sub A列の重複対策の点を白にするマクロ2()
Application.EnableEvents = False
Application.ScreenUpdating = False
Dim x As Range, xChr As Characters, xcol, xint
Dim i As Long
For Each x In Selection
xint = x.Interior.Color
If Right(x.Value, 1) = "." Then
x.Characters(Start:=InStr(x.Value, "."), Length:=Len(x.Value) - InStr(x.Value, ".") + 1).Font.Color = xint
End If
Next x
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub

このコード記述の中に除外して欲しいリストが入るようにして頂きたいのです
単語として複数登録していきたいです
例1)
あいうえお.→あいうえお --登録なしの場合は「.」は白字で見えない
かきくけこ.→かきくけこ.--除外リストに登録して「.」は黒字のままで見える
なお除外リストは新たに対象表など必要とせず、ほんの十数名程度なので
このマクロ内に記述していくので構わないです
但しもし除外リストの中に「..」の様にピリオドが2個以上の場合は、一番左の一つだけ黒字で見えるようにして残りは白字にして見えないようにしてください
例2)
Jr.----除外リストに登録なのでそのまま
Jr...---除外リストに追加でかつ2個以上あるので1個のみ残す→Jr.
条件が枝分かれしてしまって誠にすいませんが宜しくお願いします

この質問は、chi********さんに回答をリクエストしました。

閲覧数:
14
回答数:
1
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

chi********さん

リクエストマッチ

2019/5/1621:03:31

ベタな感じで…

MySkipListに除外リストを
MyListに2個以上あるので1個のみ残すリストを
それぞれ設定してください。

また、選択範囲ではなく一定の列でしたら
Selection

A列で1行目から最終データ位置までの場合
Range(Cells(1, "A"), Cells(Rows.Count, "A").End(xlUp))
に変更してください。

Sub A列の重複対策の点を白にするマクロ2()
Application.EnableEvents = False
Application.ScreenUpdating = False
Dim x As Range, xChr As Characters, xcol, xint
Dim i As Long
Dim MySkipList As Variant, MyList As Variant
Dim SkipFlg As Boolean, Flg As Boolean

MySkipList = Array("Jr1.", "Jr2.", "Jr3.")
MyList = Array("Jr1..", "Jr2...", "Jr3.....")

For Each x In Selection
SkipFlg = False
For i = 0 To UBound(MySkipList)
If StrComp(MySkipList(i), x.Value) = 0 Then
SkipFlg = True
Exit For
End If
Next i
If SkipFlg = False Then
xint = x.Interior.Color
Flg = False
For i = 0 To UBound(MyList)
If StrComp(MyList(i), x.Value) = 0 Then
Flg = True
Exit For
End If
Next i
If Flg = True Then
x.Characters(Start:=InStr(x.Value, ".") + 1, Length:=Len(x.Value) - InStr(x.Value, ".") + 1).Font.Color = xint
ElseIf Right(x.Value, 1) = "." Then
x.Characters(Start:=InStr(x.Value, "."), Length:=Len(x.Value) - InStr(x.Value, ".") + 1).Font.Color = xint
End If
End If
Next x
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub

  • 質問者

    ihf********さん

    2019/5/1621:35:56

    再回答ありがとうございます。

    MySkipListに除外リストと
    MyListに2個以上あるので1個のみ残すリストの作成方法なんですが
    MySkipList = Array(("Jr1.", "あいうえお2.", "かきくけこ3.", "さしすせそ4.")
    MyList = Array("Jr1..", "Jr2...", "Jr3.....")
    のような感じでいいのでしょうか?
    この「.」のあとの数字「1、2、3…」と振っていくのですか

    A列は12151行目から最終データ位置です
    Range(Cells(12151, "A"), Cells(Rows.Count, "A").End(xlUp))

  • その他の返信(2件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2019/5/16 22:17:50

この度のご回答誠にありがとうございました。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる