2016-03-23 17 views
-1

Wordでは、複数の表を持つ文書があります。これらのセルの中に隠れている(見えないがデータがある)のは、色を濃くしたい色の16進コードです。比較的短く、セルのテキストの残りの部分と混同されないユニークなテキストです。Word VBAを使用して、セルの値に基づいて表のセルの色を指定します。

私は修正するためにオンラインでいくつかのコードを見つけましたが、動作させるようには見えません。それは何の誤りも与えない、ただ何も起こらない。私は問題がテキスト値のためのテーブルを検索しているように感じるが、私はこれに数時間を費やして、今私は自分自身を混乱させたと思う!

Sub ColourIn() 

Dim oTbl As Table 
Dim oCel As Cell 
Dim oRng As Range 
Dim oClr As String 

For Each oTbl In ActiveDocument.Tables 
For Each oCel In oTbl.Range.Cells 
Set oRng = oCel.Range 
oRng.End = oRng.End - 1 

If oRng = "CCFFCC" Then 
oCel.Shading.BackgroundPatternColor = wdColorLightYellow 
End If 
If oRng = "FFFF99" Then 
oCel.Shading.BackgroundPatternColor = wdColorPaleBlue 
End If 

Next 
Next 
End Sub 

ありがとうございます!

編集:私はまた、このコードのウィットに起こって何も同じ結果を試みた

Sub EachCellText() 

Dim oCell As Word.Cell 
Dim strCellString As String 

For Each oCell In ActiveDocument.Tables(1).Range.Cells 
strCellString = Left(oCell.Range.Text, _ 
Len(oCell.Range.Text) - 1) 

If strCellString = "CCFFFF" Then 
oCell.Shading.BackgroundPatternColor = wdColorLightGreen 
If strCellString = "CCFFCC" Then 
oCell.Shading.BackgroundPatternColor = wdColorLightYellow 
If strCellString = "FFFF99" Then 
oCell.Shading.BackgroundPatternColor = wdColorPaleBlue 

End If 
End If 
End If 

Next 
End Sub 
+0

コード自体が動作し、16進コードが入っているセルが強調表示されます。 テーブルのスクリーンショットを投稿して、「セル内に隠れている」という意味を実際に見ることができますか?データ? – gizlmo

+0

ここに説明付きのスクリーンショットがあります:http://i.imgur.com/mxOBbNb.pngこのコードはドキュメント内のすべてのセルに移動するのでしょうか、それともどこかでつまってしまうかもしれません。日付/時間などを含むドキュメントのトップもテーブルですが、そこに詰まっているのだろうかと思います。 –

答えて

0

あなたのコードはどこにもこだわっていないなっています。しかし、あなたはHexコードに対してCell Value全体をチェックしており、 "blablabla FFFFFF"は決して "FFFFFF"に等しくないので、これは機能しません。だから、16進コードは、セルの値であるかどうかを確認する必要があります。

Sub ColourIn() 

Dim oTbl As Table 
Dim oCel As Cell 
Dim oRng As Range 
Dim oClr As String 

For Each oTbl In ActiveDocument.Tables 

    For Each oCel In oTbl.Range.Cells 

     Set oRng = oCel.Range 
     oRng.End = oRng.End - 1 

     Dim cellvalue As String 

     'check if Colorcode is in cell 
     If InStr(oRng, "CCFFCC") Then 

      'Set Cell color 
      oCel.Shading.BackgroundPatternColor = wdColorLightYellow 

      'Remove Colorcode from Cell 
      cellvalue = Replace(oRng, "CCFFCC", "") 

      'load new value into cell 
      oRng = cellvalue 
     End If 
    Next 
Next 
End Sub 

は今、あなたはちょうどあなたが使用したいすべての色を追加する必要があります(私はSelect Caseステートメントを好むだろう)とコードが正常に動作する必要があります

+1

ああああ、ありがとう、それは完璧に動作するように見えます。本当にありがとう! –

+1

FWIW Select CaseはElseIfより優れたアプローチです。 –

+0

ええ、明らかに。私の答えを編集しました – gizlmo

関連する問題