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

Weitere Bedingung Case Szenario

Weitere Bedingung Case Szenario
03.08.2020 11:34:33
Dominik
Hallo zusammen,
meine Frage ist, wie ich weitere Bedingungen in ein Case Szenario bekomme.
Ausgangssituation: In Spalte A steht nichts; 1; 2 oder 3 und in Spalte D steht ein Datum.
Bisher arbeite ich mit dem Code:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("A:A")) Is Nothing Then
Select Case Target
Case 1, 2
Call Makro1(Target.Row)
Case 3
Call Makro2(Target.Row)
Case Else
End Select
End If
End Sub

Sobald ich also händisch 1 oder 2 in Spalte A eintrage startet Makro1 und bei 3 startet Makro2.
Ich würde nun gerne noch die Spalte D als zusätzliche Bedingung da rein bringen (sodass bei Makrostrart jede Zeile auf die beiden Bedingungen A und D geprüft wird)
Ein Beispiel wäre z.B:
Wenn Spalte A= 1 und Spalte D Jemand einen Hinweis für mich, wie ich immer zwei Bedingungen abfragen kann um mehrere Szenarien zu basteln?
Die Beispieldatei will es mir leider in keinem Fall hochladen, hoffe es reicht euch auch so.
Gruß
Domi

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Weitere Bedingung Case Szenario
03.08.2020 13:04:07
Werner
Hallo,
Select Case Target
Case 1, 2
If Target.Offset(, 3) 
Gruß Werner
AW: Weitere Bedingung Case Szenario
03.08.2020 13:27:44
Dominik
Hallo Werner, habe nun folgendes versucht:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("A:A")) Is Nothing Then
Select Case Target
Case 1, 2
If Target.Offset(, 3) 
Hat leider "Fehler beim Kompilieren: Case ohne Case Select" ausgespuckt.
Aber ohne die Zeile "If Target.Offset(, 3) Eine Idee?
Gruß
Domi
AW: Weitere Bedingung Case Szenario
03.08.2020 13:37:12
Werner
Hallo,
da fehlt das End If nach Call Makro1
Gruß Werner
Anzeige
Funktioniert
03.08.2020 13:51:31
Dominik
Ups, das hab ich total übersehen.
Klasse Werner, das funktioniert vielen Dank dir schon mal hierfür :)
Eine Frage hätte ich aber noch. Das Makro läuft ja sozusagen "nebenher", zündet nämlich wenn ich sich in der betroffenen Zeile die Bedienungen ergeben. Das ist, so wie ich das verstanden habe dem Private Sub Worksheet_Change(ByVal Target As Range) zu verdanken. (Bitte korrigiert mich wenn ich falsch liege, möchte hier ja etwas lernen..)
Gibt es noch die Möglichkeit das Makro manuell zu starten, sodass es in allen Zeilen überprüft, ob die Bedingungen erfüllt worden sind und für die Fälle die Makros gestartet werden? (sprich im Beispiel oben wenn das nun Datum 28 Tage+ zurück liegt).
Nochmals vielen Dank und Grüße
Domi
Anzeige
AW: Funktioniert
03.08.2020 16:00:31
Werner
Hallo,
was machen denn deine Makros Makro1 und Makro2 - zeig mal den Code.
Von wievielen Daten (Zeilen) sprechen wir denn hier?
Das ließe sich über eine Schleife schon realisieren. Du solltest dir aber über folgendes im Klaren sein:
1. Schleifen sind nicht besonders schnell, wenn es sich um viele Daten handelt die geprüft werden müssen
2. Annahme: Du hast 200 Zeilen/Zellen in denen die Bedingung zutrifft, dann wird das entsprechende Makro Makro1 z.B. auch 200 mal ausgeführt.
Gruß Werner
AW: Funktioniert
04.08.2020 07:31:20
Dominik
Guten Morgen Werner,
auf jeden Fall berechtigt, dass du frägst. In meiner Liste sind fehlende Unterlagen aufgelistet. Ich versende über die beiden Makros Mahnungen.
Makro 1 zum Beispiel (Makro2 identisch bis auf Body):
Sub Makro1(mZ As Long)
Dim objOutlook As Object
Dim objMail As Object
Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)
With objMail
.to = Range("O" & mZ)
.Subject = "Text"
.htmlBody = "Text"
.send
End With
End Sub
Es ist also durchaus möglich, dass es mal zu Versand von 200 E-Mails kommt. Bisher mache ich das "manuell" indem ich den "Mahnungsstatus" ändere. Ich muss trotzdem Zeile für Zeile durchgehen und prüfen. Ich hatte im Kopf dass ich mit dem angefragten Makro eine Abfrage starte, die anhand des Status und des Datums automatisch versendet. Dafür würde ich auch in Kauf nehmen, dass das Programm etwas länger beschäftigt ist, da es nur schneller sein kann, als alles manuell zu prüfen ;)
Gruß
Domi
Anzeige
AW: Funktioniert
04.08.2020 11:39:55
Werner
Hallo,
den Lösungsvorschalg von Gerd (per Schleife) hast du dir wohl nicht angeschaut.
Gruß Werner
AW: Funktioniert
04.08.2020 16:01:02
Dominik
Doch den habe nur etwas gebraucht ums zu raffen.
Danke euch beiden!
Gerne u. Danke für die Rückmeldung. o.w.T.
04.08.2020 16:10:33
Werner
AW: Weitere Bedingung Case Szenario
03.08.2020 16:42:22
Gerd
Moin Dominik!
Sub Unit()
Dim Zelle As Range
Application.EnableEvents = False
For Each Zelle In Range(Cells(2, 1), Cells(Rows.Count, 1).End(xlUp))
Select Case Zelle.Value
Case 1, 2
If Zelle.Offset(, 3) 

Gruß Gerd
AW: Weitere Bedingung Case Szenario
04.08.2020 16:00:00
Dominik
Hallo Gerd,
habs mit deiner Hilfe hinbekommen.
Besten Dank!
Gruß
Domi

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige