2016-08-03 48 views
0

Ich versuche, die Formatierung einer Tabelle zu automatisieren, und ich bin fest auf Formatierung Teil einer Zeichenfolge in einer Zelle. Was ich tun muss, ist die Farbe eines Teils eines Strings (beginnend am Anfang des Strings) basierend auf der Länge der Zelle daneben zu ändern.Excel VBA - Formatierung partieller String in einer Zelle mit der Länge einer Zeichenfolge in einer anderen Zelle

Ich glaube, ich habe einen Teil der Lösung herausgefunden, aber ich bin auf einem Bit nicht sicher:

Sub Macro1() 
Range("C4").Select 
With ActiveCell.Characters(Start:=1, Length:=??).font 
.Color = -16776961 
End With 
End Sub 

ich will ?? um die Länge der Zelle daneben (in diesem Fall D4) zu sein

Ich habe VBA nicht lange verwendet, so dass ich nicht einmal sicher bin, dass ich auf dem richtigen Weg bin.

Wenn es einen Unterschied macht, würde ich gerne in der Lage sein, die Formatierung auf eine Reihe von Zellen (so etwas wie C4: C30) anzuwenden, aber das ist im Moment über mich.

Vielen Dank für jede Hilfe

+0

Versuchen 'Länge: = Len (ActiveCell.Offset (0,1))' – BruceWayne

Antwort

0

Hier ist, wie Sie Bereich iterieren können („C4: C30“) und die Zeichenformatierung auf der Textlänge im Bereich basierend ändern („D4: D30“). mit

Sub Example() 
    Dim r As Range 
    Dim length As Integer 

    For Each r In Range("C4:C30") 
     length = Len(r.Offset(0, 1)) 

     With r.Characters(Start:=1, Length:=length).Font 
      .Color = -16776961 
     End With 

    Next 

End Sub 
+0

Ich glaube nicht, Sie in der Lage sein werden es Länge zu nennen, 'Länge: = length' sieht aus wie es wäre verursacht ein reserviertes Name Problem –

+0

Length: = ist ein benannter Parameter kein reserviertes Wort. –

+0

Danke, das hat perfekt funktioniert. – 0263359