Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Wenn Zellen inhalt, dann Rahmen dynamisch

Forumthread: Wenn Zellen inhalt, dann Rahmen dynamisch

Wenn Zellen inhalt, dann Rahmen dynamisch
24.09.2014 13:01:30
Peter
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

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wenn Zellen inhalt, dann Rahmen dynamisch
24.09.2014 14:27:26
fcs
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

Anzeige
AW: Wenn Zellen inhalt, dann Rahmen dynamisch
30.09.2014 10:08:09
Peter
Hallo Franz
Funktioniert sehr gut, Danke
Gruss,
Peter
;
Anzeige
Anzeige

Infobox / Tutorial

Dynamische Rahmen in Excel-Zellen erstellen


Schritt-für-Schritt-Anleitung

Um einen dynamischen Rahmen in Excel zu erstellen, der sich anpasst, wenn Du Werte in den Zellen A3 bis C1000000 eingibst, folge diesen Schritten:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Wähle das passende Tabellenblatt:

    • Im Projektfenster (links) wähle das Tabellenblatt aus, in dem Du die Funktion implementieren möchtest.
  3. Füge den Code ein:

    • Kopiere den folgenden Code und füge ihn in das Codefenster des ausgewählten Tabellenblatts ein:
    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
  4. Speichere die Änderungen:

    • Schließe den VBA-Editor und speichere Deine Excel-Datei als Makro-fähige Arbeitsmappe (*.xlsm).
  5. Teste den Code:

    • Gebe in den Zellen A3 bis C1000000 Werte ein und beobachte, wie sich die Rahmen in den jeweiligen Zeilen automatisch zeichnen.

Häufige Fehler und Lösungen

  • Fehler: Der Rahmen wird nicht angezeigt.

    • Lösung: Überprüfe, ob Du den Code im richtigen Tabellenblatt eingefügt hast. Der Code muss im Codefenster des spezifischen Blattes platziert werden.
  • Fehler: Der Rahmen bleibt bestehen, auch wenn Du den Wert entfernst.

    • Lösung: Stelle sicher, dass die Bedingung für das Entfernen der Rahmen korrekt im Code implementiert ist.

Alternative Methoden

Falls Du keine VBA-Makros verwenden möchtest, kannst Du auch bedingte Formatierungen nutzen, um Rahmen zu erstellen. Gehe dazu folgendermaßen vor:

  1. Markiere den Bereich A3:J1000000.
  2. Klicke auf Bedingte Formatierung in der Registerkarte Start.
  3. Wähle Neue Regel und dann Formel zur Ermittlung der zu formatierenden Zellen verwenden.
  4. Gib die Formel ein: =ZÄHLENWENN($A3:$C3,"<>")>0.
  5. Klicke auf Format und wähle die Rahmenoptionen aus.

Praktische Beispiele

Ein praktisches Beispiel für diese Technik könnte in einem Projektmanagement-Tool verwendet werden, wo Du den Fortschritt von Aufgaben in den Zellen A bis C dokumentierst. Wenn Du einen Wert eingibst, wird der Rahmen für die gesamte Zeile hervorgehoben, was die Übersichtlichkeit erhöht.


Tipps für Profis

  • Überlege, den Code weiter anzupassen, um unterschiedliche Rahmenstile für verschiedene Werte zu nutzen.
  • Nutze die Funktion Worksheet_SelectionChange, um weitere dynamische Anpassungen vorzunehmen, z.B. beim Wechseln zwischen Zellen.

FAQ: Häufige Fragen

1. Frage
Wie kann ich den Code anpassen, um auch Zellen außerhalb des Bereichs A3:C1000000 zu berücksichtigen?
Antwort: Du müsstest die Intersect-Funktion entsprechend erweitern, um weitere Bereiche einzuschließen.

2. Frage
Funktioniert dieser Code in Excel 365?
Antwort: Ja, der Code ist mit Excel 365 sowie anderen Versionen kompatibel, solange die Makros aktiviert sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige