Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1488to1492
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

Case?

Case?
25.04.2016 16:59:06
Franz
Hallo Fachleute,
in zwei verschiedenen Bereichen wird nach Einträgen zu einem bestimmten Datum gesucht. Der Code für die beiden Bereiche ist exakt derselbe. Einziger Unterschied ist, dass die zu durchsuchende Spalte neu ermittelt wird.
Ich habe das so gelöst, dass ich zwei Mal nacheinander (nahezu) dasselbe schreibe:
Sub test
'Textvariable leeren:
textcomm = ""
'Kommentar zusammensetzen: aus ALLEN zum gesuchten Termin vorkommenden Ereignissen aus  _
den Bereichen "Sonstiges" und "Perio" im Blatt "Daten":
With Tabelle1
'## suchen in "Sonstiges":
'Spalte des Bereichs ermitteln:
intY = .Range("SonstigesDatumErster").Column
'Textvariable füllen:
For intX = 3 To 600
If .Cells(intX, intY) = datsuchDatum Then
If textcomm = "" Then
textcomm = vbLf & .Cells(intX, intY + 1)
Else
textcomm = textcomm & vbLf & "----" & vbLf & vbLf & .Cells(intX, intY + 1)
End If
End If
Next intX
'## weitersuchen in "Perio":
'Spalte des Bereichs ermitteln:
intY = .Range("PerioDatumErster").Column
'Textvariable füllen:
For intX = 3 To 600
If .Cells(intX, intY) = datsuchDatum Then
If textcomm = "" Then
textcomm = vbLf & .Cells(intX, intY + 1)
Else
textcomm = textcomm & vbLf & "----" & vbLf & vbLf & .Cells(intX, intY + 1)
End If
End If
Next intX
End With
End Sub

Läßt sich das nicht irgendwie kombinieren? Vielleicht mit "Case"? Ich hab verschiedenes probiert, komm aber auf keine Lösung..........
Danke schonmal und Grüße
Franz

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

Betreff
Datum
Anwender
Anzeige
AW: Autofilter?
25.04.2016 17:15:07
Fennek
Hallo,
wenn ich es richtig verstanden habe, möchtest du in zwei Spalten nach bestimmten Datums-Werten suchen (von-bis?).
Unter vba kann man den Autofilter für Datum-Werte recht flexibel ansteuern, allerdings müssten die Spalten und die Suchwerte bekannt sein.
Mfg

AW: Autofilter?
25.04.2016 17:33:02
Franz
Hallo Fennek,
danke. Das mit Autofilter muss ich mir anschauen, hab damit noch nie was gemacht.
Grüße
Franz

AW: Case?
25.04.2016 17:23:08
Daniel
Hi
vielleicht so:

Sub test()
textcomm = ""
With Tabelle1
For Each Zelle In Intersect( _
Union(.Range("SonstigesDatumErster").EntireColumn, _
.Range("PerioDatumErster").EntireColumn), _
.Rows(3).Resize(598) _
)
If Zelle.Value = datsuchDatum Then
If textcomm = "" Then
textcomm = vbLf & Zelle.Offset(0, 1).Value
Else
textcomm = textcomm & vbLf & "----" & vbLf & vbLf & Zelle.Offset(0, 1).Value
End If
End If
Next Zelle
End With
Gruß Daniel

Anzeige
AW: Case?
25.04.2016 17:38:04
Franz
Hallo Daniel,
vielen Dank. Schaut genauso aus, wie ich es mir in etwas vorgestellt haben. Aber auf diese Lösung wär ich nie gekommen.
Frage: "Zelle" muss ich als "Range" deklarieren, richtig?
Ich hab mir inzwischen eine Lösung mit einer Schleife gebastelt:
Sub test
strBer(1) = "SonstigesDatumErster"
strBer(2) = "PerioDatumErster"
'Textvariable leeren:
textcomm = ""
'Kommentar zusammensetzen: aus ALLEN zum gesuchten Termin vorkommenden Ereignissen aus  _
den Bereichen "Sonstiges" und "Perio" im Blatt "Daten":
With Tabelle1
For nBer = 1 To 2
'Spalte des Bereichs ermitteln:
intY = .Range(strBer(nBer)).Column
'Textvariable füllen:
For intX = 3 To 600
If .Cells(intX, intY) = datsuchDatum Then
If textcomm = "" Then
textcomm = vbLf & .Cells(intX, intY + 1)
Else
textcomm = textcomm & vbLf & "----" & vbLf & vbLf & .Cells(intX, intY +  _
1)
End If
End If
Next intX
Next nBer
End With
End Sub

Danke für Deine Lösung und Grüße
Franz

Anzeige
Zelle ist Range
25.04.2016 17:47:50
Daniel
Gruß Daniel

Vielen Dank! und Grüße owT
26.04.2016 00:24:29
Franz
....

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige