0

現在、列 B を調べて、文字列を列 Z の文字列と照合し、一致する文字列の色を列 B の font.color に変更するワークシートがあります。問題は、列 B が条件付き書式によって色付けされているため、コード認識されていません。条件が真の場合、列 B で実際のフォントの色を変更できるようにする必要があります。さらに、シートの最後の行に到達するまで、コードをインクリメントする必要があります。

これが私が設定した現在の条件付き書式です

引用符

=ISNUMBER(SEARCH("Story",Template!D5))=TRUE 'format dark blue
=ISNUMBER(SEARCH("Requirement",Template!D5))=TRUE 'format green
=ISNUMBER(SEARCH("EPIC",Template!D5))=TRUE 'format red
=ISNUMBER(SEARCH("Test",Template!D5))=TRUE 'format teal
=ISNUMBER(SEARCH("New Feature",Template!D5))=TRUE 'format orange
=ISNUMBER(SEARCH("Theme",Template!D5))=TRUE 'format gray

引用符

Sub Main()
  Call NoLinks
  Call SetCellWarning
  Call colortext
End Sub

Sub NoLinks()
ActiveSheet.Hyperlinks.Delete
End Sub

Sub SetCellWarning()
    Dim iLastRow As Long
    Dim cel As Range, rSetColumn As Range

    iLastRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).row

    Set rSetColumn = Range(Cells(5, 26), Cells(iLastRow, 26)) ' Column "Z"...

    For Each cel In rSetColumn
        If cel.Value = "" Then
            With cel
                cel.Value = "NOT MAPPED"
            End With
        End If
    Next cel

End Sub

***'The colortext runs but does not update unless the font color is manually updated***    
Sub colortext()
start_row = 5
key_col = 2
linked_col = 26
i = start_row 'start on row one
Do While Not IsEmpty(Cells(i, key_col)) 'Do until empty cell
    o = start_row 'start with row one for second column
    Do While Not IsEmpty(Cells(o, linked_col)) 'Do until empty cell
    If Not InStr(1, Cells(o, linked_col), Cells(i, key_col)) = 0 Then  'if cell    contents found in cell
        With Cells(o, linked_col).Characters(Start:=InStr(1, Cells(o, linked_col), Cells(i, key_col)), Length:=Len(Cells(i, key_col))).Font
            .Color = Cells(i, key_col).Font.Color  'change color of this part of the cell
        End With
    End If
    o = o + 1 'increment the cell in second column
    Loop
    i = i + 1 'increment the cell in the first column
Loop
End Sub

引用符

4

3 に答える 3

1

「以前に試した解決策」を機能させたい場合に備えて、条件付き書式を機能させる方法は次のとおりです。

  1. 条件付き書式を適用するセル (列 B) を選択します
  2. 「条件付き書式」ボタンをクリックします。不要になったルールをクリアし、「方程式が真である」ことに基づいて「新しいルール」を作成します。
  3. 次の式を入力します。=ISNUMBER(SEARCH(B1, "EPIC"))
  4. テキスト「EPIC」を含むセルに必要な形式を選択します (注 - この「検索」の順序では、B1 のテキストがフレーズ「EPIC」に含まれているため、「E」が一致します。 「IC」も同様です。「That was EPIC」を含むセルのみを一致させたい場合は、引数の順序を逆にする必要があります。
  5. 一致させたい他の単語と必要な色のルールを追加します

1 つのルールを作成した直後のダイアログは次のようになります。

ここに画像の説明を入力

これは、2 番目のルールを完了した後の "条件付き書式" ダイアログの外観です (私の例では、これらのルールを 8 つのセルに適用しました)。

ここに画像の説明を入力

この時点で、スプレッドシートは次のようになります。

ここに画像の説明を入力

これはあなたが求めていたもののようです... そうでない場合は、コメントで明確にしてください!

于 2013-08-06T23:11:11.573 に答える
0

勝利のソリューションは次のとおりです。

Sub colorkey()

start_row = 5
key_col = 2
flag_col = 4

i = start_row 'start on row one

Do While Not IsEmpty(Cells(i, key_col)) 'Do until empty cell

Tval = Cells(i, flag_col).Value
Select Case Tval
Case "Requirement"
    'cval = green
    cVal = 10
Case "New Feature"
    'cval = orange
    cVal = 46
Case "Test"
    'cval = lt blue
    cVal = 28
Case "Epic"
    'cval = red
    cVal = 3
Case "Story"
    'cval = dk blue
    cVal = 49
Case "Theme"
    'cval = grey
    cVal = 48
Case "NOT MAPPED"
    'cval = Maroon
    cVal = 53
End Select
Cells(i, key_col).Font.ColorIndex = cVal

i = i + 1 'increment the row
Loop

End Sub
于 2013-08-08T16:23:42.780 に答える