Microsoft Excel

Herbers Excel/VBA-Archiv

Wenn Zellen inhalt, dann Rahmen dynamisch

Betrifft: Wenn Zellen inhalt, dann Rahmen dynamisch von: Peter
Geschrieben am: 24.09.2014 13:01:30

Hallo Zusammen

Ich suche einen Code, der wenn im Bereich A3-C1000000 ein Wert eingegeben wird (Zahl/Text), dann automatisch in dem Bereich der jeweiligen Zeile (A3-J1000000) in dem ein Wert eingegeben wurde, der Rahmen gezeichnet wird. Das Ganze dynamisch, d.h. wenn der Zellenwert geändert wird, den Rahmen zeichnen, z.B.:

In Zelle A305 (oder B305, oder C305) wird ein Wert eingegeben, dann werden die Rahmen der Zellen des Bereichs A305-J305 gezeichnet.

Ich glaube, die Prozedur muss im entsprechenden Tabellenblatt hinterlegt werden und irgend was mit "(ByVal Target As Range)" sein. Es muss erkannt werden, wenn eine Zelle den Wert ändert oder irgend so was.

Ich habe folgenden Code aus dem Internet kopiert, der funktioniert jedoch nicht dynamisch.

Option Explicit
Option Private Module

Sub Rahmen()
   Dim rngBereich As Range, rngText As Range, rngZelle As Range
   
   Set rngBereich = Intersect(ActiveSheet.UsedRange, Range("A:J"))
   rngBereich.Borders.LineStyle = xlNone

   Set rngText = Nothing
   On Error Resume Next
   Set rngText = rngBereich.SpecialCells(xlCellTypeConstants, xlTextValues)
   On Error GoTo 0
   If rngText Is Nothing Then Exit Sub
   
   For Each rngZelle In rngText
      With rngZelle.Borders
         .LineStyle = xlContinuous
         .ColorIndex = 15
         .Weight = xlThin
      End With
   Next
End Sub
Merci

Mit freundlichem Gruss
Peter

  

Betrifft: AW: Wenn Zellen inhalt, dann Rahmen dynamisch von: fcs
Geschrieben am: 24.09.2014 14:27:26

Hallo Peter,

probier dein Glück mal mit dem folgenden Ereignis-makro.
Gruß
Franz

'Ereignis-Makro unter dem Tabellenblatt mit den Eingaben
Private Sub Worksheet_Change(ByVal Target As Range)
   Dim rngBereich As Range, rngZeile As Range
   On Error Resume Next
   
   Set rngBereich = Intersect(Target, Range("A:C"))
   If Not rngBereich Is Nothing Then
     
     'Spalten A bis J in geänderten Zeilen formatieren
     For Each rngZeile In rngBereich.Rows
        With Range(Cells(rngZeile.Row, 1), Cells(rngZeile.Row, 10))
          If Application.WorksheetFunction.CountA(rngZeile) > 0 Then
              'eine der Zellen A, B oder C in der geänderten Zeile enthält einen Wert
              With .Borders
                .LineStyle = xlContinuous
                .ColorIndex = 15
                .Weight = xlThin
              End With
          Else
            'keine der Zellen A, B und C in der geänderten Zeile enthält einen Wert
            .Borders.LineStyle = xlNone
            .ColorIndex = xlColorIndexNone
          End If
        End With
     Next
   End If
End Sub



  

Betrifft: AW: Wenn Zellen inhalt, dann Rahmen dynamisch von: Peter
Geschrieben am: 30.09.2014 10:08:09

Hallo Franz

Funktioniert sehr gut, Danke

Gruss,
Peter


 

Beiträge aus den Excel-Beispielen zum Thema "Wenn Zellen inhalt, dann Rahmen dynamisch"