5.2k Aufrufe
Gefragt in Tabellenkalkulation von steffen2 Experte (5.3k Punkte)
Hallo,

ich sitze nach langer Zeit mal wieder vor Excel und versuche einen Kalender zu erstellen. Dabei sollen Termine von einem Blatt "Termine" in das Blatt "Woche" eingefügt werden. Im ersten Schritt jetzt die Geburtstage.

Mein Makro-Code sieht bisher so aus:


Sub Makro9_test()
Dim zelle As Date

Sheets("Woche").Select
ActiveSheet.Cells(4, 2).Select
' das ist der erste Tag mit einem als Datum formatierten Wert
zelle = Selection.Value

Sheets("Termine").Select
Range("U7:U27").Select
' da stehen die Datum der Geburtstage

Selection.Find(zelle, LookIn:=xlValues, MatchCase:=False).Activate
' hier geht es schief

'Selection.Find(What:="30.12.2013", LookIn:=xlValues, MatchCase:=False).Activate
' mit einem explizit angegebenen Datum geht es

ActiveCell.Offset(0, -5).Range("A1").Select
Selection.Copy

Sheets("Woche").Select
ActiveCell.Offset(0, 1).Range("A1:A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub


die Schleife um das ganze fehlt noch. Die mache ich erst später wenn der Teil geht.

Zu dem FIND suche ich schon eine ganze Zeit. Finde aber nicht warum es da bei mir abbricht mit
Objektvariable oder With-Blockvariable nicht festgelegt (Fehler 91)


hat mir da jemand eine gute Idee woran das liegt?

Gruß Steffen

4 Antworten

0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Hallo Stefen,

meine Erfahrung sagt Datum sollte nicht mit Find gesucht werden.
Datum suchen

Sub Datum()
Dim SuchDatum As Date ' Variiable als Datum
Dim VaMatch As Variant ' da Fehler oder Zahl
SuchDatum = Date ' Suchdatum zuweisen
If Not IsError(Application.Match(CLng(SuchDatum), Rows(2), 0)) Then
MsgBox "Datum vorhanden in Spalte " & Application.Match(CLng(SuchDatum), Rows(2), 0)
Else
MsgBox "Datum nicht vorhanden"
End If
End Sub

Select, Activate usw. ist in VBA zu 99,9% nicht notwendig.
Der Cursor ist kein Hund der überall rumgeführt werden muss.
<a href="http://hajo-excel.de/select.htm" title="Hinweise zu select usw." >Hinweise zu select usw. Hajo-Excel.de</a>
<a href="http://www.online-excel.de/excel/singsel_vba.php?f=61." >Hinweise zu select usw. Online-Excel.de</a>

Gruß Hajo
0 Punkte
Beantwortet von steffen2 Experte (5.3k Punkte)
Hallo Hajo,

danke!!
Mit Match hat es jetzt funktioniert.

Ein kleineres Problem habe ich momentan noch. Ich füge die Termine mit

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

ein. Es kann jetzt aber vorkommen, dass 2 Termine am selben Tag sind. Dann überschreibt der zweite den ersten. Das PasteSpecial benutze ich weil die Schriftart/Größe/... nicht mit kopiert werden sollen.
Beim normalen einfügen kam man das ganze verketten. Hast du mir da auch noch einen Tipp?


Die Select und Activate habe ich jetzt so gelassen. Da war ich zu faul um es umzuschreiben. Aber für das nächste mal wenn ich etwas mit VBA mache versuche ich es dann wie vorgeschlagen.

Gruß Steffen
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
den Teil
, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
kannst Du löschen. Zum Rest kann ich nichts schreiben, da mir nicht klar.

Gruß Hajo
0 Punkte
Beantwortet von steffen2 Experte (5.3k Punkte)
o.k.

jetzt habe ich
ActiveCell.FormulaR1C1 = ActiveCell.FormulaR1C1 + " " + Feiertagstext

anstatt copy-paste benutzt. Das erfüllt seinen Zweck.


Nochmal vielen Dank. Dein Tipp hat mir das Wochenende gerettet!!

Gruß Steffen
...