2017-06-07 7 views
0

Ich habe eine benannte Tabelle als Bereich (list object) und ich muss die Rand oben Randfarbe einer Zelle ändern, aber der Code funktioniert nicht, ich brauche etwas Hilfe. Hier ist ein Teil des Codes:Ändern der Rahmenfarbe einer einzelnen Zelle in einer Tabelle

With ws 
    .Unprotect Password:="pAtRiCiA" 

    For Each ctrl In Me.Controls 
     If Left(ctrl.Name, 5) = "texto" Then 
      If ultimafila - 1 <> 8 Then 
       If ctrl.Name = "textoCausas" Then 
        If Not IsError(Application.Match(Me.textoCausas.Value, ws.ListObjects(ActiveSheet.Name).ListColumns(1).DataBodyRange, 0)) Then 
         .Cells(ultimafila, ctrl.TabIndex) = "" 
         .ListObjects(ActiveSheet.Name).ListColumns(1).DataBodyRange(ultimafila, 1).Borders(xlEdgeTop).LineStyle = xlContinuous 
         .ListObjects(ActiveSheet.Name).ListColumns(1).DataBodyRange(ultimafila, 1).Borders(xlEdgeTop).ColorIndex = 3 
         .ListObjects(ActiveSheet.Name).ListColumns(1).DataBodyRange(ultimafila, 1).Borders(xlEdgeTop).Weight = xlThick 
        Else 
         .Cells(ultimafila, ctrl.TabIndex) = ctrl.Value 
        End If 
       Else 
        .Cells(ultimafila, ctrl.TabIndex) = ctrl.Value 
       End If 
      Else 
       .Cells(ultimafila, ctrl.TabIndex) = ctrl.Value 
      End If 
     End If 
    Next ctrl 
    .Cells(ultimafila, 2) = txtControles.Value 

    .Rows(ultimafila).AutoFit 
    .Rows(ultimafila).RowHeight = .Cells(ultimafila, 1).Height + 12 
    .Protect Password:="pAtRiCiA", DrawingObjects:=True, Contents:=True, Scenarios:=True 
End With 
+0

"funktioniert nicht" ist keine sehr nützliche Beschreibung Ihres Problems. Was passiert, wenn Sie Ihren Code ausführen? –

+0

.Border-Eigenschaften werden nicht angewendet. Die Randfarbe der oberen Kante der Zelle wird nach dem Abspielen des Makros nicht geändert. –

+0

Ihre Rahmenformatierungslinien funktionieren für mich. Bist du sicher, dass sie ausgeführt werden? Wenn Sie eine Pause auf einer dieser Zeilen machen, hört der Code dort auf? –

Antwort

0

Mit diesem Testcode:

Sub Test() 

    With ActiveSheet.ListObjects(1).ListColumns(1).DataBodyRange(6, 1).Borders(xlEdgeTop) 
     .LineStyle = xlContinuous 
     .ColorIndex = 3 
     .Weight = xlThick 
    End With 

End Sub 

ich dieses Ergebnis:

enter image description here

So, Ihr Formatierungscode funktioniert gut für mich.
Haben Sie vielleicht eine Bedingte Formatierung oder eine andere Formatierung auf dieses Blatt angewendet?

+0

Ja, jetzt sehe ich, dass es funktioniert! Das Problem ist, dass meine Tabelle in Zeile 8 beginnt, also ist die korrekte Referenz für den 'DataBodyRange' 'ultima fila - 8'. Vielen Dank! –

Verwandte Themen