Zellen auf Inhalt prüfen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Zellen auf Inhalt prüfen
von: Isolde
Geschrieben am: 12.07.2015 20:14:04

Hallo VBA-Experten!
Ich bin auf der Suche nach einem Makro, das folgendes kann:
Das Makro soll zunächst in Spalte C die letzte Zeile erkennen. Danach sollen Spalte I8-S8 bis jeweils zu dieser letzten Zeile ausgelesen werden. Das Makro soll erkennen, ob der Zellbereich leere Zellen enthält.
Wenn mindestens eine Zelle leer ist, so soll die Meldung „Wichtige Zellen sind nicht gefüllt“ erscheinen.
Wenn keine Zelle leer ist, so soll das Makro eine gesperrte Schaltfläche (gesperrt durch Blattschutz) entsperren.
Ich hoffe mir kann jemand helfen, ich komme überhaupt nicht weiter 
Vielen Dank im Voraus!

Bild

Betrifft: AW: Zellen auf Inhalt prüfen
von: Matthias L
Geschrieben am: 12.07.2015 20:36:50
Hallo

Dim Loletzte
Loletzte = Cells(Rows.Count, 3).End(xlUp).Row
MsgBox Application.WorksheetFunction.CountBlank(Range("I8:S" & Loletzte)) & " Wichtige Zellen  _
sind nicht gefüllt"
Das ergibt einen Rückgabewert von: 5
 CDEFGHIJKLMNOPQRS
1XXX                
2XXX                
3XXX                
4XXX                
5XXX     IIIIIIIIIII
6XXX     IIIIIIIIIII
7XXX     IIIIIIIIIII
8x     II IIIIIIII
9x     IIIIIIIIIII
10x     IIIIIIIIIII
11x     IIIIIIIIII 
12x     IIIIIIIIIII
13x     IIII IIIIII
14x     IIIIIIIIIII
15x     IIIIIIIIIII
16x     IIIIIII III
17x     IIIIIIIIIII
18x     II IIIIIIII
19x     IIIIIIIIIII
20x     IIIIIIIIIII


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Einfach mit einer If-Abfrage Dein Button entsperren, wenn es keine leeren Zellen gibt.
Also der Rückgabewert:= 0 ist
Gruß Matthias

Bild

Betrifft: AW: Zellen auf Inhalt prüfen
von: Isolde
Geschrieben am: 13.07.2015 19:02:41
Danke für deine Antwort, leider weiß ich nicht genau wie ich das Makro starten soll und wie genau die If-Abfrage aufgebaut sein soll? Es soll sich entweder die Messagebox öffnen oder die Schaltfläche entsperrt werden. Wie sieht der Befehl dafür aus, dass das Makro die Zellen prüft?

Bild

Betrifft: AW: Zellen auf Inhalt prüfen
von: Sepp
Geschrieben am: 12.07.2015 20:42:57
Hallo Isolde,
wie soll das Makro gestartet werden? Um welche Art von Schaltfläche handelt es sich?

Gruß Sepp


Bild

Betrifft: AW: Zellen auf Inhalt prüfen
von: Isolde
Geschrieben am: 13.07.2015 19:03:46
Das Makro soll starten sobald man das Tabellenblatt (Es ist 1 von 4 Blättern) öffnet. Und die Schaltfläche ist ein einfaches Formularelement.

Bild

Betrifft: AW: Zellen auf Inhalt prüfen
von: Sepp
Geschrieben am: 13.07.2015 19:39:12
Hallo Isolde,
Die prüfung ist kein Problem. (in das Modul der Tabelle)

' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Worksheet_Activate()
  Dim rng As Range
  
  With Me
    Set rng = .Range("I8:S" & Application.Max(8, .Cells(.Rows.Count, 3).End(xlUp).Row))
  End With
  
  If Application.CountA(rng) < rng.Count Then
    MsgBox "Wichtige Zellen sind nicht gefüllt", vbExclamation
  End If
  
End Sub


Aber! Wie sperrst du die Schaltfläche?
Gruß Sepp


Bild

Betrifft: AW: Zellen auf Inhalt prüfen
von: Isolde
Geschrieben am: 14.07.2015 06:58:33
Hallo Sepp,
die Schaltfläche würde ich über "Makro aufnehmen" sperren, indem ich einen Blattschutz setze und mit dem aufgezeichneten Makro den Blattschutz entsperre und den Schutz für die Schaltfläche aufhebe bevor ich den Blattschutz wiederherstelle.
Über diese Schaltfläche werden Daten von einem Tabellenblatt in ein anderes Tabellenblatt kopiert. Abhängig davon, ob ihnen ein bestimmter Wert zugeordnet ist, werden sie in verschiedene Zellen kopiert.Es sind mehrere If-Abfragen, die ich gerne mit meiner oben genannten Problemstellung verbinden würde, aber das klappt nicht. Deshalb habe ich den Umweg über die gesperrte Schaltfläche gewählt.
Gruß Isolde

Bild

Betrifft: AW: Zellen auf Inhalt prüfen
von: Isolde
Geschrieben am: 14.07.2015 07:00:17
Hallo Sepp,
die Schaltfläche würde ich über "Makro aufnehmen" sperren, indem ich einen Blattschutz setze und mit dem aufgezeichneten Makro den Blattschutz entsperre und den Schutz für die Schaltfläche aufhebe bevor ich den Blattschutz wiederherstelle.
Über diese Schaltfläche werden Daten von einem Tabellenblatt in ein anderes Tabellenblatt kopiert. Abhängig davon, ob ihnen ein bestimmter Wert zugeordnet ist, werden sie in verschiedene Zellen kopiert.Es sind mehrere If-Abfragen, die ich gerne mit meiner oben genannten Problemstellung verbinden würde, aber das klappt nicht. Deshalb habe ich den Umweg über die gesperrte Schaltfläche gewählt.
Gruß Isolde

Bild

Betrifft: AW: Zellen auf Inhalt prüfen
von: Isolde
Geschrieben am: 15.07.2015 18:05:16
Hallo Sepp,
ich habe das Makro ausprobiert. Es funktioniert super, vielen Dank! Jetzt stehe ich vor der nächsten Herausforderung:
Nun sollen einige Spalten ausgeblendet werden (Das machen die Nutzer ganz individuell). Das Makro soll dann nur die Zellen berücksichtigen, die eingeblendet sind.
Wie mache ich das?
Ich hoffe du kannst mir nochmal helfen. Danke schon mal!

Bild

Betrifft: AW: Zellen auf Inhalt prüfen
von: Sepp
Geschrieben am: 15.07.2015 18:50:57
Hallo Isolde,

' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Worksheet_Activate()
  Dim rng As Range
  
  On Error Resume Next
  With Me
    Set rng = .Range("I8:S" & Application.Max(8, .Cells(.Rows.Count, 3).End(xlUp).Row)).SpecialCells(xlCellTypeVisible)
  End With
  Err.Clear
  On Error GoTo 0
  
  If Not rng Is Nothing Then
    If Application.CountA(rng) < rng.Count Then
      MsgBox "Wichtige Zellen sind nicht gefüllt", vbExclamation
    End If
  End If
  
  Set rng = Nothing
End Sub


und was kommt als Nächstes?
Gruß Sepp


Bild

Betrifft: AW: Zellen auf Inhalt prüfen
von: Isolde
Geschrieben am: 16.07.2015 09:04:04
Hallo Sepp,
mein Makro sieht nun wie folgt aus:
 
Option Explicit
 

Private Sub Worksheet_Activate()
  Call Blattschutz_aufheben
  Dim rng As Range
 
  On Error Resume Next
  With Sheets("Analyse")
    Set rng = .Range("J8:S" & Application.Max(8, .Cells(.Rows.Count, 3).End(xlUp).Row)). _
SpecialCells(xlCellTypeVisible)
 
  End With
  Err.Clear
  On Error GoTo 0
 
If Not rng Is Nothing Then
  If Application.CountA(rng) < rng.Count Then
    MsgBox "Einige Kunden wurden nicht in allen Kategorien bewertet!" & vbCrLf & "" & vbCrLf & " _
              Das Portfolio wird erst aktualisiert" & vbCrLf & "         wenn die Bewertung abgeschlossen ist.", vbExclamation
 
   Else: Call Portfolio_füllen
End If
End If
Set rng = Nothing
Call Blatt_schützen
End Sub
 
Aber es funktioniert nicht L Nichts passiert und auch beim Debuggen bekomme ich keine Fehlermeldung…
 
Gruß Isolde

Bild

Betrifft: AW: Zellen auf Inhalt prüfen
von: Sepp
Geschrieben am: 16.07.2015 10:03:56
Hallo isolde,
hast du den code auch im richtigen Modul? Er gehört in das Modul der Tabelle!
Gruß
Sepp

Bild

Betrifft: AW: Zellen auf Inhalt prüfen
von: Isolde
Geschrieben am: 16.07.2015 11:02:26
Hallo Sepp,
 
wenn ich das Makro in das Modul der anderen Tabelle1 verschiebe funktioniert es zwar, aber startet nicht automatisch :/
In dem Modul ist aber auch bereits ein anderes Makro enthalten…
 
Das Makro soll dann starten, wenn man Tabelle2 öffnet. Ist das noch der Fall, wenn ich es in das andere Modul verschiebe?
 
Nochmals Danke für die Hilfe!
Gruß Isolde

Bild

Betrifft: AW: Zellen auf Inhalt prüfen
von: Sepp
Geschrieben am: 16.07.2015 18:16:57
Hallo Isolde,
der Code gehört in das Modul der Tabelle in der auch geprüft wird!

With Sheets("Analyse")...
ist überflüssig, es sollte, wenn schon,

With Me
lauten.
Ich kann ja nicht wissen, was du wo hineinkopiert hast und welcher Code sonst noch läuft.
Gruß Sepp


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Zellen auf Inhalt prüfen"