Anzeige
Archiv - Navigation
968to972
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
968to972
968to972
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Prüfen mit mehrern Bedingungen / zum Zweiten

Prüfen mit mehrern Bedingungen / zum Zweiten
14.04.2008 08:10:55
Webran
Hallo zusammen,
ich hatte vor etwa 2 Wochen schon mal gepostet und auch von Renée eine super Antwort bekommen.
Allerdings hat sich jetzt beim Testlauf ein neus Problem ergeben. Ich hatte in den letzten Tagen einiges versucht aber ich habs nicht geschafft.
Problembeschreibung: Monatsspalten, in denen beim Klick auf den 15 und den letzten des Monats geprüft wird, ob sich davor alle, und dahinter keine Einträge befinden.
Beispiel: Klick auf 31.März - Makro startet und soll prüfen, ob zurückliegend bis zum 1. Januar alle Einträge gemacht wurden und ob bis zum 31. Dezember sich keine Einträge befinden (evtl auch löschen?).
Wahrscheinlich muss man jeden Fall extra programmieren, vielleicht könnte mir jemand dazu einen Ansatz nennen. Meine Versuche, mir einer Schleife zu prüfen, waren erfolglos. Aber nur deswegen, weil ich sehr wenig Ahnung von VBA habe.

Hier mal eine Beispielarbeitsmappe:
https://www.herber.de/bbs/user/51515.xls
Vielen Dank für Eure Hilfe!
Webran

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Prüfen mit mehrern Bedingungen / zum Zweiten
14.04.2008 09:15:24
Renee
Hi Webran,
Ich glaube zwar, dass da Ganze irgendwie falsch aufgezäumt ist, troztdem sollte dieser Ansatz auch deiner 'neuen Forderung' ungefähr gerecht werden:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Const tRange = "D8:D38, H8:H38, L8:L38"
Dim iOK As Integer
Dim rC As Range
Dim lTargetAdr As Long, lTestAdr As Long
If Application.Intersect(Target, Range("D22,D37,H22,H38,L22,L37")) Is Nothing Or _
Target.Cells.Count > 1 Then Exit Sub
iOK = 0
lTargetAdr = Target.Column * 100 + Target.Row
For Each rC In ActiveSheet.Range(tRange)
If rC.Offset(0, -2)  "" Then
lTestAdr = rC.Column * 100 + rC.Row
Select Case lTestAdr
Case Is  lTargetAdr
If rC.Value  "" Then iOK = 1
End Select
End If
Next
Select Case iOK
Case 0
MsgBox "Alles o.K.!", vbInformation + vbOKOnly
UserForm2.Show
Case -1
MsgBox "Es wurden nicht alle Felder eingetragen!", vbCritical + vbOKOnly
Case 1
MsgBox "Nach diesem Tag darf nichts mehr eingetragen worden sein!", vbCritical +  _
vbOKOnly
End Select
End Sub


GreetZ Renée

Anzeige
AW: Prüfen mit mehrern Bedingungen / zum Zweiten
14.04.2008 12:05:57
Webran
Hallo Renée,
ich hoffe, es wird hier nicht falsch verstanden, wenn ich versuche, mein Problem durch Fragen zu klären.
Im Vordergrund steht bei mir immer, dass ich VBA lernen möchte und nicht, dass ich jemanden suche, dem ich meine Probleme aufbürden kann und der dann die Arbeit für mich übernimmt. Daher habe ich mein Übungsprojekt begonnen.
Tatsächlich habe ich mich mehrere Tage mit Deinem Code auseinandergesetzt und auch die Hilfe in Anspruch genommen, aber ich konnte eben nicht viel damit anfangen. Mittlerweilen habe ich mir ein Buch gekauft, um etwas mehr mit System vorzugehen.
Mich würde auch interessieren, wie Du das Problem lösen würdest.
Vielen Dank erstmal für Deinen Code, ich werde versuchen, ihn zu verstehen und dann ausführlich testen.
Ich sag Dir Bescheid (im Forum) ob alles geklappt hat.
Vielen Dank für Deinen Beitrag!
Webran

Anzeige
AW: Prüfen mit mehrern Bedingungen / zum Zweiten
14.04.2008 12:29:42
Renee
Hi Webran,
ich hoffe, es wird hier nicht falsch verstanden, wenn ich versuche, mein Problem durch Fragen zu klären.
Keineswegs. Dazu ist ein Forum da. Meine 'leise' Kritik (falsch aufgezäumt) bezieht sich vielmehr auf deine Problembeschreibung und den Ansatz und soll als konstruktive Kritik verstanden werden:
1. Die Problemstellung ist zu unklar u.v.a. zu wenig ausführlich formuliert. Anscheinend geht es um sowas wie einen Diätplan, bei dem bestimmte Regeln einzuhalten sind. Aber das kann ich nur aus den Daten vermuten und liege damit vielleicht ganz falsch. Die Beschreibung der Regeln ist wichtig.
2. In der Regel beginnen die meisten Benutzer zuerst mit der Formatierung ihrere Tabelle, statt mit einem simplen Aufbau. Das ist auch bei dir der Fall. Ich vertrete hier einen ziemlich rigorosen Ansatz (Form follows function): d.h. zuerst die FUNKTION (Konsitente Regeln, Richtige Formeln, Vollständige Resultate) dann die Form (Darstellung, Formatierung, Benutzerfreundlichkeit).
Also würde ich in deinem Fall mit einer einfachen Tabelle (Spalte A Datum, Spalte B Nahrungsmittel) anfangen. Dazu definiere ich die Regeln (z.B. 2x pro Monat [am. 15. und am Monatsletzten] ausfüllen, es dürfen keine Lücken entstehen etc).
Jetzt mach ich mir Überlegungen wie ich das Lösen kann und zwar immmer zuerst ohne VBA, denn Formeln sind 100x schneller.
Hab ich alles, stelle ich vielleicht meine Daten in einem 2ten Tabellenblatt schöner formatiert zusammen, z.B. so wie du es von Anfang gemacht hast. Dazu sind dann meist nur noch einfache Referenzbezüge nötig.
VBA Code ist immer sehr spezifisch auf ein Problem und die Tabellenstruktur bezogen und fällt meist bei Struktur- oder Regeländerungen sehr schnell auseinander.
GreetZ Renée

Anzeige
AW: Prüfen mit mehrern Bedingungen / zum Zweiten
14.04.2008 13:11:00
Webran
Hallo Renée,
ja, Du hast Recht, im Prinzip habe ich den Kern meiner Übungsarbeitsmappe außen vor gelassen.
Aber auch deswegen, weil ich niemanden mit Details langweilen wollte.
Es geht tatsächlich um einen Ernährungsplan, bei dem die Auswirkungen von bestimmten Lebensmitteln auf das Körperfett untersucht werden soll. Anhand der eingetragenen Lebensmittel werden dann Werte ermittelt.
Tatsächlich handelt es sich um einen Selbstversuch von ein paar Leuten, die innerhalb eines Zeitraums die selben Lebensmittel zu sich nehmen um dann die Auswirkungen auf das Körperfett zu untersuchen.
Eigentlich brauchen wir dafür keine Exeltabelle, aber weil ich eben VBA lernen möchte, dachte ich mir, ich könnte so meine bisherigen Erkenntinisse gleich in die Tat umsetzen. So ist mein Übungsprojekt entstanden und es soll auch immer weiter ausgebaut werden. Einfach so zum Testen.
Excel ist ein sehr mächtiges Programm, aber alles kann man damit eben nicht lösen. Deswegen versuche ich mit VBA meine Vorstellungen zu realisieren.
Fakt ist, dass wir uns Mitte und Ende des Monats die durch Eintragungen errechneten Werte per e-mail zusenden um sie miteinander zu vergleichen. Die Berechnungen der einzelnen Werte sind abhängig von der Person. Aus dessen Stammdaten errechnet sich dann der Kalorienwert. Aber ich glaube, das würde hier zu weit führen, es sieht ungefähr so aus: Person A ist männlich, wiegt 95kg, arbeitet köperlich schwer, kann deswegen eine größere Portion Gurken essen als Person B, die nur 75 kg wiegt und halbtags im Büro arbeitet.
Alle diese Berechnungen führe ich durch ein Tabellenblatt mit Stammdaten durch. Um den anderen Teilnehmern an diesem Test die Anwendung so leicht wie möglich machen zu können, bin ich auf die Idee mit dem Tabellenblatt gekommen, in dem nur die Lebensmittel eingetragen werden und die errechneten Werte in einem anderen Tabellenblatt stehen.
Außerdem soll der Teilnehmer beim Eintragen seiner Lebensmittel daran erinnert werden, dass es wieder an der Zeit ist, seine Werte zu senden. Weil nur die Werte gesendet werden und nicht das ganze Tabellenblatt, kann ein anderer Teilnehmer natürlich nicht kontrollieren, ob er auch alles eingetragen hat. Somit könnten die errechneten Werte falsch sein, ohne das es jemand merkt.
Ich hoffe, ich konnte Dir einigermaßen klar machen, wie mein Projekt ablaufen soll.
Vielleicht hast Du eine bessere Idee, ich würde mich freuen, wenn Du sie mir erklären würdest.
Viele Grüße!
Webran

Anzeige
AW: Prüfen mit mehrern Bedingungen / zum Zweiten
15.04.2008 07:32:00
Webran
Hallo Renèe,
Dein Code funktioniert perfekt, vielen Dank dafür!
Den Rest schaffe ich dann hoffentlich!
Danke für Deine Hilfe!
Webran

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige