2016-03-23 5 views
-1

In Word habe ich ein Dokument mit mehreren Tabellen voller Daten. Versteckt in diesen Zellen (außer Sicht, aber die Daten sind dort) ist der Hex-Code der Farbe, die ich die Zellen schattieren möchte. Ich habe den Hexadezimalwert gewählt, nur weil er relativ kurz ist und ein einzigartiger Text ist, der nicht mit dem Rest des Textes in der Zelle verwechselt wird.Verwenden Sie Word VBA zum Ausmalen von Zellen in Tabellen basierend auf Zellenwert

Ich habe einige Code online gefunden, um zu ändern, aber ich kann nicht scheinen, damit es funktioniert. Es gibt keine Fehler, nichts passiert. Ich habe das Gefühl, dass das Problem darin besteht, die Tabellen nach dem Textwert zu durchsuchen, aber ich habe Stunden damit verbracht und ich denke, ich habe mich jetzt verwirrt!

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 

Vielen Dank!

Edit:

ich auch diesen Code wit das gleiche Ergebnis von nichts habe versucht passiert:

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

Der Code selbst funktioniert, er hebt die Zelle hervor, in der sich der Hex-Code befindet Daten? – gizlmo

+0

Hier ist ein Screenshot mit einer Erklärung: http://i.imgur.com/mxOBbNb.png Bewegt sich dieser Code durch alle Zellen im Dokument oder bleibt er irgendwo hängen? Das obere Ende des Dokuments mit Datum/Uhrzeit usw. ist ebenfalls ein Tisch, ich frage mich, ob es oben hängen bleibt? –

Antwort

0

Ihr Code nirgends stecken zu bleiben. Aber Sie überprüfen den ganzen Zellenwert gegen den Hex-Code, und das wird nicht funktionieren, da "blablabla FFFFFF" niemals gleich "FFFFFF" ist. So müssen Sie überprüfen, ob die Hex-Code in der Zelle Wert ist:

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 

Jetzt müssen Sie nur noch alle Farben, die Sie verwenden möchten, fügen Sie (ich würde eine Select Case-Anweisung bevorzugen) und der Code sollte funktionieren

+1

oh wow danke, das sieht aus wie es perfekt funktioniert. Vielen Dank! –

+1

FWIW Ein Select Case ist möglicherweise ein besserer Ansatz als ElseIf. –

+0

Ja, offensichtlich. Bearbeitete meine Antwort – gizlmo

Verwandte Themen