Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1128to1132
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

Überprüfung von Zellinhalten

Überprüfung von Zellinhalten
Zellinhalten
Hallo zusammen,
sitz hier grad vor einem kleinem Problem, bei dem ich euch gerne um Hilfen bitten würde.
Ich habe eine Liste in der Reklamationen festgehalten werden sollen. Die Eingabe soll durch verschiedene Personen erfolgen, weshalb gewährleistet sein muss dass alle verlangten Eintragungen auch hinterlegt werden.
Eintragungen sollen in den Spalten A:H erfolgen.
Folgendes habe ich mit einem gewissen Erfolg bereits ausprobiert:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim Pflichtbereich As Range, Anzahl
Set Pflichtbereich = Worksheets("Tabelle1").Range("A2:H15")
Anzahl = Pflichtbereich.Cells.Count
If Application.WorksheetFunction.CountA(Pflichtbereich)  Anzahl Then
MsgBox "Bitte füllen Sie zuerst alle Pflichtfelder aus !", vbOKOnly + vbInformation, _
"Datei wurde NICHT gespeichert !"
Cancel = True
End If
End Sub

Funktioniert soweit auch, nur müsste dann ja immer der gesamt Bereich bis Zeile 15 gefüllt sein.
Ich bräuchte also einen Code, der z.B. erst anspringt wenn ein Eintrag in Spalte A vorhanden ist (dabei würde es sich un den Kunden handeln, der eigentlich immer verfügbar sein sollte).
Sobald also ein Eintrag in A vorhanden ist, soll abgeprüft werden, wie es in den Spalten B:H aussieht.
Schön fände ich es wenn neben der MsgBox auch die fehlenden Zellen eingefärbt werden (ohne Glitzer :-))
Hat jemand spontan eine Idee?
Besten Dank im Voraus!
Gruß
Jay

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Überprüfung von Zellinhalten
18.01.2010 11:10:16
Zellinhalten
Hallo,
ohne Einfärbung:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim Pflichtbereich As Range, Anzahl
With Worksheets("Tabelle1")
Set Pflichtbereich = _
.Range(.Cells(2, 1), .Cells(Rows.Count, 1).End(xlUp)).Resize(, 8)
End With
Anzahl = Pflichtbereich.Cells.Count
If Application.WorksheetFunction.CountA(Pflichtbereich)  Anzahl Then
MsgBox "Bitte füllen Sie zuerst alle Pflichtfelder aus !", vbOKOnly + vbInformation, _
"Datei wurde NICHT gespeichert !"
Cancel = True
End If
End Sub

Gruß
Rudi
AW: Überprüfung von Zellinhalten
18.01.2010 11:26:33
Zellinhalten
Hallo Rudi,
vielen Dank für Deine rasche Antwort. Funktioniert einwandfrei!
Kannst Du mir die Zeile vielleicht kurz erklären, was genau passiert da jetzt? Wäre schön es auch richtig zu verstehen...
Set Pflichtbereich = _
.Range(.Cells(2, 1), .Cells(Rows.Count, 1).End(xlUp)).Resize(, 8)

Dankeschön schonmal!
Für das Einfärben hast Du keine Idee? Wäre noch so ein Sahnehäubchen. Alternativ vielleicht eine Angabe in der MsgBox wo der/die Eintrag/Einträge fehlen.
Vielen Dank.
Gruß
Jay
Anzeige
AW: Überprüfung von Zellinhalten
18.01.2010 11:57:42
Zellinhalten
Hallo Jay,
.Range(.Cells(2, 1), .Cells(Rows.Count, 1).End(xlUp)) ergibt in der Tabelle1 den Zellbereich von A2:A?,
wobei das Fragezeichen die Zeilennummer der letzen belegten Zelle in der Spalte A entspricht:
z.B: A2:A201
.Resize(, 8) verbreitert nun diesen Zellbereich auf 8 Spalten, so das jetzt der Plichtbereich folgenden Zellbereich umfaßt:
A2:H201
Gruß von Luschi
aus klein-Paris
AW: Überprüfung von Zellinhalten
18.01.2010 15:42:16
Zellinhalten
Hallo Luschi,
super, dankeschön. Das Verständnis hilft hoffentlich bei der nächsten Aufgabe :-)
Gruß
Jay
AW: Überprüfung von Zellinhalten
18.01.2010 11:42:35
Zellinhalten
Hallo,
geht es hiermit.
Für die Farbliche darstellung verwende ich die Bedingte Formatierung.
Private Function CheckInhalt(rngBereich As Range) As Range
If Application.WorksheetFunction.CountIf(rngBereich, "") = 0 Then Exit Function
For Each rngBereich In rngBereich
 If rngBereich = "" Then
    If CheckInhalt Is Nothing Then
        Set CheckInhalt = rngBereich
    Else
        Set CheckInhalt = Union(CheckInhalt, rngBereich)
    End If
 End If
Next rngBereich
End Function

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim Bereich As Range, rngZelle As Range, rngLeer As Range
Dim strInfo As String

'Tabewlle anpassen 
With Sheets("Tabelle1")
    .Range("A:H").FormatConditions.Delete
    
    Set rngZelle = .Range("A2", .Cells(.Rows.Count, 1).End(xlUp))
    If Not Intersect(rngZelle, .Rows(1)) Is Nothing Then Exit Sub
    
    For Each rngZelle In rngZelle
     If rngZelle <> "" Then
        
        Set rngLeer = CheckInhalt(.Range(.Cells(rngZelle.Row, 1), .Cells(rngZelle.Row, 8)))
       
        If Not rngLeer Is Nothing Then
         strInfo = strInfo & rngLeer.Address(0, 0) & vbCr
         rngLeer.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="="""""
         rngLeer.FormatConditions(1).Interior.ColorIndex = 3
         Set rngLeer = Nothing
        End If
     
     End If
    Next rngZelle
End With


If strInfo <> "" Then
    strInfo = Left$(strInfo, Len(strInfo) - 1)
    MsgBox "Bitte füllen Sie zuerst alle Pflichtfelder aus !" & vbCr & vbCr & strInfo, vbCritical, _
            "Datei wurde nicht gespeichert!"
    Cancel = True
End If

End Sub
Gruß Tino
Anzeige
AW: Überprüfung von Zellinhalten
18.01.2010 11:55:43
Zellinhalten
Hallo Tino,
Perfekt! Vielen Dank!
Gruß
Jay

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige