Zellen nach Inhalt in Word über VBA einfärben?

Hallo zusammen,

ich habe eine Tabelle in Word, die eigentlich aus Access importiert wird - da ich aber noch kein Access habe, aber weiß, wie die Tabelle aussieht, habe ich sie selber erstellt und arbeite so an ihr. Das mit Access ist nur zur Info, damit ihr wisst, warum ich die Tabelle immer ausschneide und wieder einfüge… eine bessere Lösung habe ich nicht gefunden, da die Tabelle mit Inhalt befüllt ist.

Meine Tabelle hat 11 Spalten und 14 Zeilen. Dort befinden sich mehrfach vorkommende Werte wie 25, 35, 45, 55 und 65. Je nach Inhalt sollen die Zellen in unterschiedlichen Fabren eingefärbt werden. Steht z.B. in einer Zelle die 25, soll die Zelle rot eingefärbt werden, wenn 35, dann gelb usw.

Es ist schon etwas her, dass ich mit VBA gearbeitet habe - in Word jedoch noch nie… Diesen Quelltext habe ich mir bisher zusammengebastelt - wirklich was Dolles ist da nicht bei rumgekommen :frowning:
Langsam bin ich schon am verzweifeln :´-(

Public Sub CopyTable()
Dim newPos As Range

Set newPos = Selection.Range
ActiveDocument.Tables(1).Select
Selection.Cut
newPos.Paste
newPos.Select

Dim Zelle As Word.Cell
Dim Tabelle As Word.Table
Dim Zeile As Word.Row
Set Tabelle = Selection.Tables(1)

Inhalt = Left(Selection.Tables(1).Range.Text, Len(Selection.Tables(1).Range.Text) - 2)

Select Case Tabelle()

Case 25
ActiveDocument.Tables(1).Cell(2, 2).Shading.BackgroundPatternColor = wdColorRed

Case „35“
ActiveDocument.Tables(1).Cell(2, 2).Shading.BackgroundPatternColor = wdColorRed

Case Else
ActiveDocument.Tables(1).Shading.BackgroundPatternColor = wdColorBlue

End Select

End Sub

Momentan färbt meine Erfindung die ganze Tabelle blau… Ich habe mich schon durch so viele Forums gelesen, dass ich schon nicht mehr weiß, wo mir der Kopf steht:frowning:

Kann mir jemand helfen??

Vielen Dank und liebe Grüße
Katha

Hi Katha, warum verwendest du nicht Excel und „bedingte Formatierung“?Excel ist doch auch näher an Access.
Gruß
Mario

Hallo Mario,

weil die Tabelle eig aus einer Datenbank ausgelsen wird und in ein Worddokument mit/zwischen Textinhalt eingefügt wird.

Liebe Grüße
Katha

Hi Katha, warum verwendest du nicht Excel und „bedingte
Formatierung“?Excel ist doch auch näher an Access.
Gruß
Mario

Hallo Katha,
ich würde trotzdem den Umweg über Excel nehmen und dann in Word über BEarbeiten -> Inhalte einfügen -> Verknüpfung einfügen auf das Excel-Sheet referieren.
Mir ist nicht bekannt, dass es in Word eine bedingte Formatierung gibt und der Weg über VB scheint mir „von hinten durch die Brust ins Auge“ zu sein :wink:.
Gruß
Mario

Hallo Katja

Ich hoffe dieses makro aus Word 2003 funktioniert bei dir ebenso wie bei meinem Test.

Sollte deine Tabelle mal größer oder kleiner werden, so musst nur diesen for i = 1 to 154 (11 * 14) ändern.
Ebenso kannst du natürlich jedwede Farbe einsetzen die du möchtest. Must nur mal sehen wie der Wert (zB wdColorPink) dann heissen muss.

Schreib mal ob es geklappt hat,
Gruß Peter

Sub Farbtabelle()

’ Farbtabelle Makro
’ Makro aufgezeichnet am 25.10.2012 von peter

’ weitere Farbangaben:

’ .Color = wdColorYellow
’ .Color = wdColorPink
’ .Color = wdColorBrightGreen
’ .Color = wdColorBrown

Selection.HomeKey Unit:=wdStory
Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
For I = 1 To 154 ’ = 11 x 14 = Anzahl Zellen - 1)
a = WordBasic.val(WordBasic.Selection$)
If Len(a)

Hallo Katja,

Peter nochmal, das mit dem -1 in der Erläuterung des for i - Wertes is falsch, vergiss es. Das war aus meinem ersten Test. Ich hab das Ende der Schleife dann mit dem If ganz am Ende gelöst. Es geht vielleicht eleganter aber so funktioniert es ja.

Gruß Peter

Hallo Katja,

sorry, soeben, wohl „etwas“ spät sehe ich dass du die Zelle färben möchtest und nicht die Werte darin, sorry.

So nimm denn dieses Makro:

Sub Farbtabelle()

’ Farbtabelle Makro
’ Makro aufgezeichnet am 25.10.2012 von peter

’ weitere Farbangaben:

’ .Color = wdColorYellow
’ .Color = wdColorPink
’ .Color = wdColorBrightGreen
’ .Color = wdColorBrown


Selection.HomeKey Unit:=wdStory
Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
For I = 1 To 154 ’ = 11 x 14 = Anzahl Zellen - 1)
a = WordBasic.val(WordBasic.Selection$)
If Len(a)

Hallo Katha,

leider bin ich alles andere als Experte in VBA, meine Versuche, Dein Problem zu loesen blieben leider erfolglos … Sorry!

Hallo Peter,

wow - das ist Wahnsinn :smile: das klappt :smiley:
Da wäre ich nie drauf gekommen :-/

Vielen vielen Dank!!!

Liebe Grüße und ein schönes We:wink:
Katha

kein Problem, hat Spaß gemacht mal wieder etwas herum zu popeln.

Ich denke du kannst das Makro leicht modifizieren was Tabellengröße und Arrangement der Farben angeht.

Machs gut

Hallo Katha,

bei Word bin ich schon zu frieden wenn ich einfachen Text
mit einigermaßen Format hin bekomme

Gruß Hugo