Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
636to640
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
636to640
636to640
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zeilen mit bestimmten Datum auswählen

Zeilen mit bestimmten Datum auswählen
17.07.2005 14:20:25
Robert
Hallo
Ich arbeite mit einer Tabelle, die in Spalte B ein Datum eingetragen hat. Ich muss diese Daten einmal im Monat automatisch in eine andere Tabelle kopieren. Mein Problem ist also, wie kann man (mit VBA), vielleicht nach Eingabe des Monats über Inputbox, alle Zeilen makrieren, die in Spalte B den definierten Monat haben? Das Datum ist tt.mm.jjjj. Ich brauche also für "mm" eine Variabel, die mir hilft die richten Zeilen zu finden...
Kann mir da jemand helfen?
mfg Robert

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen mit bestimmten Datum auswählen
17.07.2005 15:48:26
Reinhard
Hi Robert,
(ungetestet):

sub tt()
mo=inputbox("welcher Monat") 'oder Monat aus Systemuhr ermitteln
with worksheets("Tabelle1")
for n= 1 to .range("B65536".end(xlup).row
if month(.cells(n,2))= mo then
zei=zei+1
.rows(n).copy destination:=worksheets("Tabelle2").cells(zei,1)
end if
next n
end with
end sub

Gruß
Reinhard
AW: Zeilen mit bestimmten Datum auswählen
17.07.2005 15:55:55
Reinhard
Hi Robert,
den aktuellen Monat erhälst du so:
mo=month(now)
Vormonat
mo=month(now)-1
usw.
Gruß
Reinhard
AW: Zeilen mit bestimmten Datum auswählen
17.07.2005 16:12:44
WernerB.
Hallo Robert,
wie gefällt Dir das?

Sub Robert()
Dim c As Range, ErgBereich As Range, _
Mon As String, _
laR As Long, _
check As Boolean
Mon = InputBox(vbCr & vbCr & vbCr & "Gesuchter Monat:")
If Mon = "" Then check = True
If IsNumeric(Mon) Then
If Mon < 1 Or Mon > 12 Then check = True
Else
check = True
End If
If check = True Then
MsgBox "Keine oder falsche Eingabe !" & vbCr & vbCr & _
"Makro-Abbruch !", vbOKOnly + vbCritical, _
"Dezenter Hinweis für " & Application.UserName & ":"
Exit Sub
End If
Application.ScreenUpdating = False
laR = Cells(Rows.Count, 2).End(xlUp).Row
For Each c In Range("B1:B" & laR)
If IsDate(c.Text) Then
If Month(CDate(c.Text)) = Mon Then
Set ErgBereich = Rows(c.Row)
Exit For
End If
End If
Next c
If ErgBereich Is Nothing Then
MsgBox "Nichts gefunden !", vbOKOnly + vbInformation, _
"Dezenter Hinweis für " & Application.UserName & ":"
Else
For Each c In Range("B1:B" & laR)
If IsDate(c.Text) Then
If Month(CDate(c.Text)) = Mon Then
Set ErgBereich = Application.Union(ErgBereich, Rows(c.Row))
End If
End If
Next c
ErgBereich.Select
Set ErgBereich = Nothing
End If
Application.ScreenUpdating = True
End Sub

Viel Erfolg wünscht
WernerB.
P.S.: Dieses Forum lebt auch von den Rückmeldungen der Fragesteller an die Antworter !
Anzeige
AW: Zeilen mit bestimmten Datum auswählen
17.07.2005 16:23:36
Reinhard
Hallo Werner,
    Mon = InputBox(vbCr & vbCr & vbCr & "Gesuchter Monat:")
If Mon = "" Then check = True
If IsNumeric(Mon) Then
If Mon < 1 Or Mon > 12 Then check = True
Else
check = True
End If
If check = True Then
würde ich verkürzen zu:
Mon = InputBox(vbCr & vbCr & vbCr & "Gesuchter Monat:")
If IsNumeric(Mon) and Mon >= 1 and Mon <= 12 Then check = True
If check = false Then

oder übersehe ich da was?
Gruß
Reinhard
AW: Zeilen mit bestimmten Datum auswählen
17.07.2005 20:24:53
WernerB.
Hallo Reinhard,
ich fürchte, Du hast Deinen Verbesserungs-Vorschlag nicht hinreichend getestet.
Gib doch in die InputBox mal einen nicht-numerischen Wert ein oder drücke die „Abbrechen“-Taste . . .
Ein Erfolgserlebnis gönne ich Dir jedoch neidlos - auf die Zeile
If Mon = "" Then check = True
kann man tatsächlich verzichten.

Gruß
WernerB.
Anzeige
AW: Zeilen mit bestimmten Datum auswählen
18.07.2005 08:16:43
Reinhard
hallo werner,
deine Befürchtung ist korrekt, bin da ein übler Schuft, habe bis jetzt da noch gar nix getestet *g
Ich behaupte mal (zumindest solange bis ich mal teste *gg) dass mein Code richtig ist.
Gib doch in die InputBox mal einen nicht-numerischen Wert ein oder drücke die „Abbrechen“-Taste . . .
Verstehe ich jetzt nicht. check ist von hause aus false, da nicht auf true gesetzt.
If IsNumeric(Mon) and Mon >= 1 and Mon <= 12 Then check = True
Denn wenn "Mon" nichtnumerisch ist oder leer (=Abbrechen, dann ist check wie gewünscht false.
Gruß
Reinhard
AW: Zeilen mit bestimmten Datum auswählen
18.07.2005 15:23:03
WernerB.
Hallo Reinhardt,
die Prüfung, ob sich der Wert der Variablen “Mon” im Zahlenbereich 1 bis 12 befindet, führt leider zu einem Fehler, wenn “Mon“ einen nichtnumerischen Inhalt hat.
Wäre dem nicht so, könnte man auf die IsNumeric-Prüfung auch verzichten.
Kannst Du dies so nachvollziehen?
Im Gegensatz zu Deiner Variante wird bei mir die Zahlenbereichsprüfung nur dann durchlaufen, wenn “Mon“ einen numerischen Inhalt hat.
Ich hoffe, dass Du mich nicht für beratungsresistent hältst, wenn ich angesichts dieses Sachverhalts doch lieber bei meiner (etwas längeren) Variante bleibe.
Solltest Du oder ei anderer Forumsteilnehmer hier eine zumindest genau so sichere kürzere Variante präsentieren, würde diese selbstverständlich meine Zustimmung finden.

Gruß
WernerB.
Anzeige
AW: Zeilen mit bestimmten Datum auswählen
19.07.2005 16:23:25
Reinhard
Hallo Werner,
ich las deinen Namen hier schon oft, deshalb grüble ich gerade wo mein fehler liegt oder ob wir aneinander vorbeireden oder so.
Jedenfalls kommt bei meinem nachstehenden, diesmal getesteten :_) Code immer dann eine fehlermeldung wenn die Eingabe leer ist, nichtnumerisch ist oder die zahlen nicht im Bereich von 1 bis 12 liegen (Dezmalzahlen habe ich jetzt mal weggelassen)
Und dies weicht ja sehr geringfügig *g von deiner Aussage:
"die Prüfung, ob sich der Wert der Variablen “Mon” im Zahlenbereich 1 bis 12 befindet, führt leider zu einem Fehler, wenn “Mon“ einen nichtnumerischen Inhalt hat."
ab.
Gruß
Reinhard

Sub tt()
Mon = InputBox(vbCr & vbCr & vbCr & "Gesuchter Monat:")
If IsNumeric(Mon) And Mon >= 1 And Mon <= 12 Then check = True
If check = False Then MsgBox "Monat ist nicht 1-12"
End Sub

Anzeige
AW: Zeilen mit bestimmten Datum auswählen
20.07.2005 14:10:02
WernerB.
Hallo Reinhard,
ob wir aneinander vorbeireden, weiß ich nicht. Deshalb noch mal zur Klarstellung:
1. Du hast einen Vorschlag zu Verkürzung meines Codes gemacht.
2. Prinzipiell greife ich derartige Vorschläge gerne und dankbar auf.
3. In diesem Fall ist Dein Vorschlag zwar etwas kürzer, jedoch im Bezug auf nichtnumerische Eingabe/Abbruch leider auch fehlerbehaftet.
4. Aus diesem Grund bleibe ich bei meiner etwas längeren Version, die auch auf nichtnumerische Eingabe/Abbruch richtig reagiert; hier geht bei mir Sicherheit vor Code-Verkürzung.
5. Du grübelst immer noch, wo Dein Fehler liegt. In meinem vorigen Beitrag habe ich – offenbar vergeblich – versucht, Dir diesen aufzuzeigen.
Deshalb noch mal: Knackpunkt ist m.E. einfach, dass bei Deinem Vorschlag eine nichtnumerische Eingabe oder ein Abbruch immer in die Zahlenbereichsprüfung (1 bis 12) hineinläuft und dabei zwangsläufig einen Programmfehler auslöst.
In meiner – deshalb auch etwas längeren – Version wird hingegen eine nichtnumerische Eingabe oder ein Abbruch immer vor der Zahlenbereichsprüfung (1 bis 12) abgefangen und nur numerische Werte durchgelassen.
6. Zur Erinnerung hier noch mal die beiden entscheidenden Code-Sequenzen:
Kurzversion Reinhard:
If IsNumeric(Mon) And Mon >= 1 And Mon <= 12 Then check = True
Langversion Werner:
If IsNumeric(Mon) Then
If Mon < 1 Or Mon > 12 Then check = True
Else
check = True
End If

Gruß
WernerB.
Anzeige
AW: Zeilen mit bestimmten Datum auswählen
20.07.2005 15:13:30
Reinhard
Hallo Werner,
lassen wir mal das Abbrechen der Inputbox einstweilen weg.
Du sagst, mein Code würde bei nichtnumerischen werten falsch reagieren. Ich sehe das nicht so. Deshalb die Beispieldatei wo eindeutig ein nichtnumerischer Wert wie xyz als nicht gültig erkannt wird.
Eine leere Zelle wird auch als nicht gültig erkannt. Ob dies dem Inhalt der variablen einer Inputbox entspricht wenn dort Abbrechen betätigt wird, muss ich noch überprüfen.
Die Datei: https://www.herber.de/bbs/user/24843.xls
Gruß
Reinhard
Anzeige
AW: Zeilen mit bestimmten Datum auswählen
21.07.2005 11:17:20
WernerB.
Hallo Reinhard,
Deine Datei lässt sich leider nicht downloaden.
Ungeachtet dessen: Nachstehend noch mal beide Alternativen.
Bei mir (Excal XP) führt im Makro "Reinhard" eine nichtnumerische Eingabe ("xyz") oder ein Abbruch immer zu einem Makro-Fehler.
Ist das bei Dir nicht so?

Sub Werner()
Dim Mon As String, _
check As Boolean
Mon = InputBox(vbCr & vbCr & vbCr & "Gesuchter Monat:")
If IsNumeric(Mon) Then
If Mon < 1 Or Mon > 12 Then check = True
Else
check = True
End If
If check = True Then
MsgBox "Keine oder falsche Eingabe !" & vbCr & vbCr & _
"Makro-Abbruch !", vbOKOnly + vbCritical, _
"Dezenter Hinweis für " & Application.UserName & ":"
Exit Sub
Else
MsgBox "die Monatsnummer ist i.O. !"
End If
End Sub


Sub Reinhard()
Dim Mon As String, _
check As Boolean
Mon = InputBox(vbCr & vbCr & vbCr & "Gesuchter Monat:")
If IsNumeric(Mon) And Mon >= 1 And Mon <= 12 Then check = True
If check = False Then
MsgBox "Keine oder falsche Eingabe !" & vbCr & vbCr & _
"Makro-Abbruch !", vbOKOnly + vbCritical, _
"Dezenter Hinweis für " & Application.UserName & ":"
Exit Sub
Else
MsgBox "die Monatsnummer ist i.O. !"
End If
End Sub

Gruß
Werner
Anzeige
AW: Zeilen mit bestimmten Datum auswählen
21.07.2005 22:12:40
Reinhard
Hallo Werner,
habe dein Posting gerade gelesen, warum der Server von Hans rumzict ist egal, stand eh nur die Sub tt() drinnen in der Datei, ich habe eben die Sub "Reinhard" ausprobiert, ja du hast völlig Recht, Abbrechen oder xyz Eingabe führt zu einem Fehler.
Aber meine Sub tt() läuft fehlerfrei. Wie gesagt, grad eben getestet, noch keine Ahnung warum das so ist. Und ich bin wie du daran interessiert warum was geht oder halt eben nicht.
Nachstehend nochmal beide Codes.
Gruß
Reinhard

Sub tt()
Mon = InputBox(vbCr & vbCr & vbCr & "Gesuchter Monat:")
If IsNumeric(Mon) And Mon >= 1 And Mon <= 12 Then check = True
If check = False Then MsgBox "Monat ist nicht 1-12"
End Sub
Sub Reinhard()
Dim Mon As String, _
check As Boolean
Mon = InputBox(vbCr & vbCr & vbCr & "Gesuchter Monat:")
If IsNumeric(Mon) And Mon >= 1 And Mon <= 12 Then check = True
If check = False Then
MsgBox "Keine oder falsche Eingabe !" & vbCr & vbCr & _
"Makro-Abbruch !", vbOKOnly + vbCritical, _
"Dezenter Hinweis für " & Application.UserName & ":"
Exit Sub
Else
MsgBox "die Monatsnummer ist i.O. !"
End If
End Sub

Anzeige
AW: Zeilen mit bestimmten Datum auswählen
17.07.2005 17:49:53
Robert
Wow. Super
Hat prima funktioniert. Ihr seid die besten
Vielen Dank...

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige