Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
1564to1568
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Wenn Zelle nicht leer, dann...

Wenn Zelle nicht leer, dann...
26.06.2017 09:30:52
amintire
Hallo zusammen,
ich benötige Eure Hilfe, und zwar würde ich es gerne über einen VBA Code machen.
z.B.
Wenn Zelle J5 nicht leer ist, dann
1) soll die komplette Zeile 5 geschützt werden
2) die komplette Zeile 5 soll die Grüne Schriftfarbe haben.
Wenn Zelle J6 nicht leer ist, dann
1) soll die komplette Zeile 6 geschützt werden
2) die komplette Zeile 6 soll die Grüne Schriftfarbe haben.
Das ganze soll bis zur Zeile 500 gehen.
Der Blattschutz Passwort soll wenn möglich im VBA hinterlegt werden.
Vielen Dank für Eure Unterstützung.
Grüße
Amintire

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wenn Zelle nicht leer, dann...
26.06.2017 10:08:19
Werner
Hallo,
versuch mal folgenden Code. Den Namen des Tabellenblattes mußt du an deine Bedürfnisse anpassen.
Sub Makro1()
Dim raBereich As Range
Dim raZelle as Range
Set raBereich = Worksheets("Tabelle1").Range("J5:J500")
For Each raZelle In raBereich
If raZelle  "" Or raZelle.Offset(0, 1)  "" Then
With raZelle.EntireRow
.Font.Color = 5287936
.Locked = True
End With
End If
Next raZelle
Worksheets("Tabelle1").Protect Password:="Hallo"
End Sub
Gruß Werner
AW: Wenn Zelle nicht leer, dann...
26.06.2017 10:30:29
Werner
Hallo,
sehe gerade, dass ich einen Fehler drin habe. Ich habe mich da wohl verlesen. Mein Code schaut auch nach, ob in Spalte K Daten vorhanden sind.
Diese Codezeile
If raZelle  "" Or raZelle.Offset(0, 1)  "" Then

durch diese ersetzen
If raZelle  "" Then
Gruß Werner
Anzeige
AW: Wenn Zelle nicht leer, dann...
26.06.2017 11:46:45
amintire
Hallo Werner,
klappt auch super - Danke dir.
Grüße
Amintire
Gerne u. Danke für die Rückmeldung. o.w.T.
26.06.2017 12:05:17
Werner
AW: Gerne u. Danke für die Rückmeldung. o.w.T.
26.06.2017 12:15:49
amintire
Hi Uwe,
hab noch eine Sache festgestellt.
Beim ersten Klicken auf Button funktioniert der Code.
Wenn ich aber danach weitere Zeilen bearbeite und nochmal auf den Button klicke, dann kommt eine Fehlermeldung.
Bei der Fehlermeldung wird .Font.Color = 5287936 gelb markiert.
Weißt du ggf. woran das liegt?
Grüße
Amintire
Liegt am Blattschutz..
26.06.2017 17:55:57
Werner
Hallo,
da muss am Anfang vom Code erst der Blattschutz raus.
Sub Makro1()
Dim raBereich As Range
Dim raZelle As Range
Worksheets("Tabelle1").Unprotect Password:="Hallo"
Set raBereich = Worksheets("Tabelle1").Range("J5:J500")
For Each raZelle In raBereich
If raZelle  "" Then
With raZelle.EntireRow
.Font.Color = 5287936
.Locked = True
End With
End If
Next raZelle
Worksheets("Tabelle1").Protect Password:="Hallo"
End Sub
Gruß Werner
Anzeige
AW: Wenn Zelle nicht leer, dann...
26.06.2017 10:08:47
UweD
hallo
so?
Sub Gruen()
    Dim RNG
    With ActiveSheet
        
        Set RNG = .Range("J6:J500")
        
        If WorksheetFunction.CountA(RNG) > 0 Then
        
            .Unprotect Password:="abc"
            
            'Reset 
            With RNG.EntireRow
                .Locked = False
                .Font.ColorIndex = xlAutomatic
            End With
            
            With RNG.SpecialCells(xlCellTypeConstants, 3).EntireRow
                .Locked = True
                .Font.Color = -11489280
            End With
        .Protect Password:="abc"
    
        Else
            MsgBox "Keine Daten vorhanden"
            Exit Sub
        End If
    
    End With
End Sub

LG UweD
Anzeige
AW: Wenn Zelle nicht leer, dann...
26.06.2017 11:44:12
amintire
Hallo Uwe,
danke für die Hilfe - klappt soweit ganz gut.
Ich möchte allerdings anstatt die Farbe Schwarz (standart) die Farbe Rot haben.
Meine Makro Aufzeichnen sagt mir die Nummer an
-16776961
Bekomme da aber eine Fehlermeldung.
Grüße
AW: Wenn Zelle nicht leer, dann...
26.06.2017 11:54:13
UweD
dann so (ohne Index)
Sub Gruen()
Dim RNG
With ActiveSheet
Set RNG = .Range("J6:J500")
If WorksheetFunction.CountA(RNG) > 0 Then
.Unprotect Password:="abc"
'Reset
With RNG.EntireRow
.Locked = False
.Font.Color = -16776961
End With
With RNG.SpecialCells(xlCellTypeConstants, 3).EntireRow
.Locked = True
.Font.Color = -11489280
End With
.Protect Password:="abc"
Else
MsgBox "Keine Daten vorhanden"
Exit Sub
End If
End With
End Sub

Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Infobox zum Thema

EXCEL - VBA: Zeilen verarbeiten

Inhaltsverzeichnis

  1. Was ist VBA?
  2. Einsatzzweck
  3. VBA-Prozedur
  4. Anwendungsbeispiele aus der Praxis
  5. Tipps
  6. Verwandte Funktionen
  7. Zusammenfassung

Was ist VBA?

VBA (Visual Basic für Applikationen) ist die Programmiersprache von Excel und anderen Office-Anwendungen. Mit VBA kannst du Makros schreiben, um automatisierte Aufgaben in Excel zu erledigen.


Einsatzzweck

In dieser Aufgabe möchtest du:

  • Zeilen basierend auf dem Inhalt einer bestimmten Zelle schützen.
  • Die Schriftfarbe von Zeilen ändern, basierend auf dem Inhalt der gleichen Zelle.

VBA-Prozedur

Hier ist ein VBA-Makro, das genau das tut:

Sub ZeilenSchuetzenUndFaerben()

    Dim ws As Worksheet
    Dim rng As Range
    Dim cell As Range
    Dim passwort As String

    ' Das Arbeitsblatt setzen
    Set ws = ThisWorkbook.Sheets("DeinBlattname") 'Ändere "DeinBlattname" in den Namen deines Arbeitsblattes

    ' Den Bereich von J5 bis J500 festlegen
    Set rng = ws.Range("J5:J500")

    ' Das Passwort festlegen
    passwort = "DeinPasswort" 'Ändere "DeinPasswort" in das gewünschte Passwort

    ' Den Blattschutz aufheben
    ws.Unprotect passwort

    ' Durch den Bereich gehen
    For Each cell In rng
        If Not IsEmpty(cell) Then
            cell.EntireRow.Locked = True
            cell.EntireRow.Font.Color = vbGreen
        Else
            cell.EntireRow.Locked = False
            cell.EntireRow.Font.Color = vbBlack
        End If
    Next cell

    ' Blattschutz aktivieren
    ws.Protect passwort

End Sub

Um dieses Makro auszuführen:

  1. Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Einfügen -> Modul.
  3. Kopiere den obigen Code in das Modulfenster.
  4. Führe das Makro aus, indem du F5 drückst, während das Makro im Editor ausgewählt ist.

Anwendungsbeispiele aus der Praxis


VBA wird in Excel häufig verwendet, um:

  • Daten automatisch zu sortieren und zu filtern.
  • Berichte basierend auf festgelegten Kriterien automatisch zu generieren.
  • Benutzerdefinierte Formulare und Benutzeroberflächen zu erstellen.

Tipps

  • Es ist immer eine gute Idee, vor dem Ausführen eines VBA-Makros eine Sicherungskopie deiner Excel-Datei zu erstellen.
  • Verwende immer ein Passwort, das du dir leicht merken kannst, um den Blattschutz zu aktivieren.

Verwandte Funktionen

  • Range: Ein Objekt in VBA, das einen Zell-, Zeilen- oder Spaltenbereich in Excel darstellt.
  • Worksheet.Protect & Worksheet.Unprotect: VBA-Methoden zum Schützen bzw. Aufheben des Schutzes eines Arbeitsblattes.

Zusammenfassung

Mit VBA kannst du mächtige und automatisierte Aufgaben in Excel durchführen. In dieser speziellen Aufgabe haben wir ein Makro verwendet, um Zeilen basierend auf dem Inhalt einer Zelle zu schützen und ihre Schriftfarbe zu ändern. Es ist wichtig, vor dem Ausführen von Makros immer vorsichtig zu sein und sicherzustellen, dass du eine Backup-Kopie deiner Daten hast.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige