Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1416to1420
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
Schleife für Eintragsprüfung
08.04.2015 09:12:33
Pat132
Guten Morgen,
es geht diesmal um den Arbeitsblattbereich N3:AR3. Ich möchte den User dazu bringen, dass er - sofern sich eine Zelle in dem Bereich unter bestimmten Umständen automatisiert einfärbt - in dieselbe einen Eintrag macht.
Ich hatte mir gedacht, es könnte vor dem Speichern oder dem Registerblattwechsel (über Schaltfläche) eine Fehlermeldung erscheinen, sollte eine farbige Zelle leer sein. Das wollte ich über eine Schleife lösen, die jede Zelle beguckt....ist das der richtige Weg?
Mein "Interior" ist .ThemeColor = xlThemeColorAccent2 und .TintAndShade = 0.399975585192419

Vielen lieben Dank im Voraus! Patrik

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schleife für Eintragsprüfung
08.04.2015 17:20:48
Klexy
Für den Registerblattwechsel geht das so:
Dim Ding As String, Dang As String, Dong As String
Sub workbook_SheetDeactivate(ByVal Sh As Object)
'MsgBox kann zum Testen des Ding/Dang/Dong-Status genommen werden
'MsgBox "Ding = " & Ding & Chr(10) & "Dang = " & Dang & Chr(10) & "Dong = " & Dong & Chr(10)
If Dong = "x" Then ' Startblatt war sauber
Ding = ""
Dang = "x"
Dong = ""
Exit Sub
End If
If Ding = "" Then 'Anfangs im neuen Blatt
GoTo BlattWurdeVerlassen
Else 'wieder im Startblatt
GoTo BlattDurchsuchen
End If
BlattWurdeVerlassen:
Ding = "x"
Sh.Select 'Startblatt auswählen
BlattDurchsuchen:
'ist im Startblatt
Dim r As Range, a As Range
Set r = Range(Cells(1, 1), Cells(Sh.UsedRange.Rows.Count, Sh.UsedRange.Columns.Count))
Set a = ActiveCell
For Each c In r
If Dang = "x" Then
Ding = ""
Dang = ""
Dong = ""
Exit Sub
End If
c.Select
If c.Interior.Color = RGB(255, 255, 0) Then
MsgBox "Da fehlt noch was"
c.Select
Dang = "x"
Exit Sub 'bei diesem Exit Sub wird trotzdem noch einmal zu "Set r" gewechselt ?
End If
Next c
'Startblatt ist sauber
a.Select
Dong = "x"
Sh.Select
End Sub

Als Farbe hab ich einfach gelb genommen, das ist einfacher und du kannst ja auf dein Themecolor umstellen.
Vor dem Speichern dürfte es identisch sein, nur mit dem Titel:
Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel as Boolean)
Beide Makros müssen ins VBA-Feld von "DieseArbeitsmappe"

Anzeige
AW: Schleife für Eintragsprüfung
09.04.2015 10:41:06
Pat132
Hallo Klexy,
Danke für den Entwurf - insbesondere für den Begriff Ding/Dang/Dong-Status :D
Im Ansatz funktioniert der Code schon ganz gut. Folgende Dinge sind mir leider noch nicht so ganz klar: Warum hast Du mit "Ding", "Dang" und "Dong" 3 Variablen definiert? Wo ist die Variable c (für den Startpunkt "Blatt durchsuchen" definiert?
Viele Grüße, Patrik

AW: Schleife für Eintragsprüfung
09.04.2015 17:07:13
Klexy
Ding Dang und Dong muss sein, weil Sh (aus der Titelzeile) immer wieder ein anderes ist. Beim Start des Makros ist es das verlassene Blatt, dann fängt das Makro wieder von vorn an auf dem neuen Blatt (dann ist Sh das neue Blatt). Am Ende fängt es beim Wechsel ins verlassene Blatt wieder von vorne an, wenn im verlassenen Blatt ein Fehler ist (dann ist Sh wieder das erste Blatt).
Das Makro läuft nämlich erst nachdem du das Startblatt verlassen hast und das neue Blatt schon aktiv ist. Also praktisch wenn es schon zu spät ist. Und immer wenn ein Blatt verlassen wird, also auch wenn das Makro vom neuen Blatt wieder ins Startblatt wechselt, um zu prüfen, ob alles ok ist, startet das Makro von vorne, weil ja ein SheetDeactivate-Ereignis stattgefunden hat. Damit das Makro aber nicht immer alle Teile des Makros durchläuft, werden zu verschiedenen Zeitpunkten die Variablen Ding Dang und Dong aktiviert und das Makro ggf. per Exit Sub verlassen. Daher sind die Variablen ja auch außerhalb des Makros definiert, damit sie den Makrodurchlauf "überleben".
Wenn du dir Haltepunkte setzt und das Makro Schritt für Schritt durchgehst, kannst du das sehen.
Die Messagebox kannst du an jeden beliebigen Punkt des Makros platzieren, dann zeigt sie dir an, wie grad Ding Dang und Dong sind. Also in welchem der 3 Makro-Durchgänge du bist.
Nimm dir eine Stunde Zeit, es zu verstehen. Ich hab 3 Stunden gebraucht, es zu programmieren. Aber sonst wollte sich ja keiner erbarmen und ich hab Spaß an kniffligen Aufgaben.
Warum das Makro nach dem Exit Sub allerdings noch einmal zu Set r springt, ist mir schleierhaft.
Die Variable c muss nicht definiert werden, weil r schon als Range definiert wird und c dadurch automatisch ein Range-Element ist (Each c In r)

Anzeige
AW: Schleife für Eintragsprüfung
14.04.2015 11:32:09
Pat132
Hallo Klexy,
nochmals vielen Dank für Deine Erläuterungen und Anregungen! Ich habe es - etwas abgespeckt - erfolgreich eingebaut.
Beste Grüße, Patrik

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige