Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Wenn Zelle nicht leer, dann...


Betrifft: Wenn Zelle nicht leer, dann... von: amintire
Geschrieben am: 26.06.2017 09:30:52

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

  

Betrifft: AW: Wenn Zelle nicht leer, dann... von: Werner
Geschrieben am: 26.06.2017 10:08:19

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


  

Betrifft: AW: Wenn Zelle nicht leer, dann... von: Werner
Geschrieben am: 26.06.2017 10:30:29

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


  

Betrifft: AW: Wenn Zelle nicht leer, dann... von: amintire
Geschrieben am: 26.06.2017 11:46:45

Hallo Werner,

klappt auch super - Danke dir.

Grüße
Amintire


  

Betrifft: Gerne u. Danke für die Rückmeldung. o.w.T. von: Werner
Geschrieben am: 26.06.2017 12:05:17




  

Betrifft: AW: Gerne u. Danke für die Rückmeldung. o.w.T. von: amintire
Geschrieben am: 26.06.2017 12:15:49

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


  

Betrifft: Liegt am Blattschutz.. von: Werner
Geschrieben am: 26.06.2017 17:55:57

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


  

Betrifft: AW: Wenn Zelle nicht leer, dann... von: UweD
Geschrieben am: 26.06.2017 10:08:47

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


  

Betrifft: AW: Wenn Zelle nicht leer, dann... von: amintire
Geschrieben am: 26.06.2017 11:44:12

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


  

Betrifft: AW: Wenn Zelle nicht leer, dann... von: UweD
Geschrieben am: 26.06.2017 11:54:13

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