Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
724to728
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
724to728
724to728
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

"Objektvariable nicht festgelegt"

"Objektvariable nicht festgelegt"
31.01.2006 18:44:42
Franz
Hallo Forum,
ich fang mal klein an und poste nur einen Code-Schnippsel, vielleicht geht's damit:
gesucht wird ein Datum mit folgender Zeile:
.Cells.Find(What:=datSuchDatum, After:=.Range("ErsterTag"), LookIn:=xlValues, _
LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
MatchCase:=False).Activate
dabei gibt's aber leider obenstehende Fehlermeldung: "Objektvariable oder With-Blockvariable nicht festgelegt." (an der With.... liegt's nicht, hab ich überprüft).
- "datSuchDatum" ist als "Date" deklariert und hat ein Datum inne
- ".Range("ErsterTag")" hat auch einen Wert.
Lasse ich die Zeile mit einer String-Variablen anstelle der Datums-Variablen laufen, dann klappt der Code.
Kann man vielleicht mit diesen Angaben schon sagen, woran das liegen könnte?
Vielen Dank schon mal im Voraus und Grüße
Franz

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: "Objektvariable nicht festgelegt"
31.01.2006 18:56:05
Franz
hab noch was rausgefunden:
besetzt man die Zeile mit einer String-Variablen ...
.Cells.Find(What:=strSuchText, After:=Range("ErsterTag"), LookIn:=xlValues, _
LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
MatchCase:=False).Activate
... dann kommt ebenselbe Fehlermeldung, wenn der gesuchte Wert nicht vorhanden ist, also nicht gefunden werden kann.
Das Datum, das gesucht wird in ....
.Cells.Find(What:=datSuchDatum, After:=.Range("ErsterTag"), LookIn:=xlValues, _
LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
MatchCase:=False).Activate
.... ist auf jeden Fall vorhanden, allerdings durch eine Formel. Wenn ich die Code-Zeile nun aber ändere in ....
.Cells.Find(What:=datSuchDatum, After:=.Range("ErsterTag"), LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
MatchCase:=False).Activate
.... kommt leider immer noch dieselbe Fehlermeldung?!?
Ratlose Grüße
Franz
Anzeige
AW: "Objektvariable nicht festgelegt"
01.02.2006 08:02:01
Heiko
Moin Franz,
diese Meldung kommt wenn du per .Find und .Activate was suchst was nicht vorhanden ist, weil dann der .Activate Befehl nicht ausgeführt werden kann.
Das mußt du so machen:
Erstmal "nur" suchen und dann Suchergebnis auswerten, wenn Not Nothing, also was gefunden dann Zelle aktivieren, wenn Nothing dann halt nichts gefunden.
Und mit LookIn:=xlValues habe ich auch Datum aus Formeln finden können.
Dein LookAfter habe ich für meinen Test rausgelassen, mußt du dir halt noch wieder reinbauen.

Sub DatumAusFormelSuchen()
Dim DatSuchDatum As Date
Dim rngGefundeneZelle As Range
DatSuchDatum = CDate(InputBox("Geben Sie ein Datum ein !", "Datum", "01.01.1900"))
Set rngGefundeneZelle = ActiveSheet.Cells.Find(What:=DatSuchDatum, LookIn:=xlValues, _
LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
MatchCase:=False)
If Not rngGefundeneZelle Is Nothing Then
rngGefundeneZelle.Activate
Else
MsgBox "SuchDatum nicht gefunden !", vbCritical
End If
Set rngGefundeneZelle = Nothing
End Sub

Gruß Heiko
PS: Rückmeldung wäre nett !
Anzeige
AW: "Objektvariable nicht festgelegt"
01.02.2006 08:27:24
Franz
Hallo Heiko,
vielen Dank für Deine Antwort. Zunächst nur ganz kurz, muss nämlich zu einer Besprechung: das gesuchte Datum ist gaaaanz sicher vorhanden, es handelt sich nämlich um einen Jahreskalender. Aber vielleicht liegt's am Format, Dein "CDate" hat mich da jetzt auf ne Idee gebracht.
Muss jetzt aber leider weg, kann mich grad nicht damit beschäftigen. Melde mich aber in jedem Fall wieder.
Danke erstmal und Grüße
Franz
Jetzt endlich, aber...
01.02.2006 18:00:47
Franz
Hallo Heiko,
jetzt hab ich endlich Zeit, sorry, dass ich mich so lange nicht mehr gemeldet habe. Aber leider krieg ich's immer noch nicht hin, ich bekomme in die Range-Variable nichts rein! Ich erlaube mir mal meinen Code zu posten:

Sub Sonstiges_suchen()
Dim strSuchText As String
Dim datSuchDatum As Date
Dim rngSuchDatum As Range
Dim Mldg, Titel, Voreinstellung
Mldg = "was suchst du?"    ' Aufforderung festlegen.
Titel = "Such dir was..."  ' Titel festlegen.
Voreinstellung = Range("Suchtext")
Beep
strSuchText = InputBox(Mldg, Titel, Voreinstellung)
If strSuchText = "" Then Exit Sub
ActiveSheet.Unprotect
Range("Suchtext") = strSuchText
On Error GoTo errorhandler
datSuchDatum = CDate(Worksheets("Daten").Range("G:G").Find(What:=strSuchText, After:=Range("SonstigesErster").Offset(-1, 0), LookIn:=xlValues, _
LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
MatchCase:=False).Offset(0, -1))
On Error GoTo 0
Set rngSuchDatum = Cells.Find(What:=datSuchDatum, After:=Range("ErsterTag"), LookIn:=xlValues, _
LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
MatchCase:=False)
MsgBox datSuchDatum
MsgBox rngSuchDatum.Address
errorhandler:
Worksheets("Kalender").Protect
MsgBox "Sorry, aber ich hab im gaaanzen Kalender nicht gefunden, was du suchst!     ", 16
On Error GoTo 0
End Sub

Kann es am Format liegen?
- Die Datümer im Blatt "Daten" sind formatiert als "TT.MM.JJJJ", und sie stehen als Datum in der Zelle.
- Die Datümer im Blatt "Kalender" sind formatiert als "T" und ergeben sich durch Formel.
An anderer Stelle hab ich sowas schon mal mit einer For...Next-Schleife gemacht, das ging. Aber hier mit Find krieg ich's nicht. Vielleicht hast du ja noch ne Idee, wenn du nochmal magst.
Danke schon mal und Grüße
Franz
Anzeige
AW: Jetzt endlich, aber...
01.02.2006 18:24:05
Heiko
Hallo Franz,
ganz ehrlich, dein Code is mir ein bisschen wirr.
Ich kann nicht wirklich erkennen was du vorhast (Datum suchen na klar), aber wozu der ganze Code dienen soll sehe ich nicht.
Schau dir mal in der VBA Hilfe den Befehl find an, und teste das mit find erstmal auf einem neutralen Blatt wo nur ein paar Datum´s (Über Formel und direkt eingegeben) drin sind um zu sehen wie du find händeln mußt.
Gruß Heiko
Ja versteh ich...
01.02.2006 18:37:24
Franz
Hallo Heiko,
danke für deine Antwort. Dass der Code wirr erscheint ist okay, aber zu erklären: die Daten stehen im Blatt "Daten", es können an einem Tag auch mal 2 oder mehr Ereignisse sein. Im Blatt "Kalender" wird zu jedem Tag in einer einzigen Zelle per SVerweis das zugehörige Ereignis aus dem Blatt "Daten" geholt. Gibt es mehr als eins, wird natürlich nur das erste geholt.
Beim Suchen allerdings soll auch was gefunden werden, was ins Blatt "Kalender" nicht übernommen wurde, weil es als zweites oder drittes oder ... in der Liste steht. Darum wird nicht in "Kalender" gesucht, sondern in "Daten", weil da alles drin steht. Das zugehörige Datum soll nun im Blatt "Kalender" markiert werden.
Ob das alles aber wichtig ist für das Problem weiß ich nicht. Die Sache ist einfach die, dass die Variable "datSuchDatum" fein säuberlich ein Datum enthält (also nicht leer!), dass aber mit der darauffolgenden von dir empfohlenen Anweisung ...
Set rngSuchDatum = Cells.Find(What:=datSuchDatum, After:=Range("ErsterTag"), LookIn:=xlValues, _
LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
MatchCase:=False)
... die Variable "rngSuchDatum" leider keinen Wert erhält.
Oder mach ich da noch was fürchterlich falsch?
Grüße
Franz
Anzeige
AW: Ja versteh ich...
01.02.2006 18:43:20
Heiko
Hallo Franz,
Ein Tipp hätte ich noch.
versuche mal vor cells.find... noch das Sheet mitanzugeben, also Worksheets("DeinBlatt").cells.find ...
Wenn das nicht hilft, mach ne kleine Beispielmappe mit eine bisschen Erklärung, dann schau ich mir das morgen früh in der Firma mal an.
Gruß Heiko
PS: Rückmeldung wäre nett
AW: Ja versteh ich...
01.02.2006 20:03:39
Franz
Hallo Heiko,
vielen Dank erstmal. Bin grad dran, auch hier das mit der Schleife zu probieren, melde mich dann noch mal. Eine Datei nachzustellen scheu ich noch, aber vielleicht mach ich's noch, interessieren tät's mich nämlich schon, was ich da mit "Find" falsch mache.
Grüße
Franz
Anzeige
AW: Ja versteh ich...
02.02.2006 08:49:24
Heiko
Hallo Franz,
habe nochmal ein bisschen rumgespielt, siehe Beispielmappe:
https://www.herber.de/bbs/user/30580.xls
Gruß Heiko
PS: Rückmeldung wäre nett !
AW: Ja versteh ich...
02.02.2006 09:55:13
Franz
Hallo Heiko,
ja, hängt wohl am Format. Hab's jetzt mal so versucht:
Dim datSuchDatum As Date
Dim datSuchDatummm As Date
Dim rngSuchDatum As Range
datSuchDatummm = Format(CDate(datSuchDatum), "d")
MsgBox datSuchDatum & vbLf & vbLf & datSuchDatummm
Set rngSuchDatum = Cells.Find(What:=datSuchDatummm, After:=Range("ErsterTag").Offset(-1, 0), LookIn:=xlValues, _
LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
MatchCase:=False)
ABER: aus z.B. "datSuchDatum = 08.02.2006" wird mit obiger Zeile dann "datSuchDatummm = 07.01.1900". Es wird also ein völlig anderes Datum draus. Und dann kann natürlich auch die "Set rngSuchDatum = " - Zeile nicht ergeben.
Komisch aber auch (und zumindest für mich unverständlich:
auch aus der Zeile: datSuchDatummm = Format("08.02.2006", "d") bekommt "datSuchDatummm" den Wert "07.01.1900". Aus "datSuchDatummm = Format(CDate("08.02.2006"), "d")" ebenso?
Verwirrte Grüße
Franz
Anzeige
AW: Ja versteh ich...
02.02.2006 10:33:25
Heiko
Hallo Franz,
wieso läuft doch, wenn du richtig formatierst (also dd.mm.yyyy anstatt nur d )

Sub test()
Dim datSuchDatum As Date
Dim datSuchDatummm As Date
datSuchDatum = CDate("08.02.2006")
datSuchDatummm = Format(CDate(datSuchDatum), "dd.mm.yyyy")
MsgBox datSuchDatum & vbLf & vbLf & datSuchDatummm
End Sub

Gruß Heiko
PS: Rückmeldung wäre nett !
AW: Ja versteh ich...
02.02.2006 14:34:48
Franz
Hallo Heiko,
muss ich noch mal probieren, das geht grad leider nicht. Ich dachte ich müsste es als "d" formatieren, weil die Zellen im Blatt "Kalender" als "T" formatiert sind....
Melde mich noch mal, wenn ich Zeit habe es testen.
Grüße
Franz
Anzeige

64 Forumthreads zu ähnlichen Themen


Hallo Forum,
ich erhalte bei folgendem Code in Zeile 3 immer die Nachricht "objektvariable oder with-blockvariable nicht festgelegt"
Private Sub Worksheet_Deactivate() Dim Timer1 As APITimer Timer1.Enabled = False Timer1.destroy End Sub Was ist zu tun?
Grüße, Bernd
Anzeige

Hallo VBA-Experte
Ich habe versucht, die Daten in der Auswahlliste zu sortieren und danach zu zählen. Es zeigt immer die Fehlermeldung "Objektvariable oder With-Blockvariable nicht festgelegt" bei Austesten des Programms oder wenn es funktioniert, der Wert von k ist immer bei 0 und hat sich...

objektvariable oder with-blockvariable nicht festgelegt
Hallo,
ich bin langsam am verzweifeln.
ich habe ein Makro in meiner Tabelle welches ein Datenbereich (der jeweils in einer Zeile liegt) aus einem anderen Tabellenblatt, nach dem Abgleich des Datums kopiert.
Danach springt e...
Anzeige

Hallo
nach mehreren Versuche habe ich es hinbebkomen eine PDF erstellen zu lassen aus Excel, und diese per Email zu versenden.
Funktioniert alles.
Jedoch habe ich eine Schleife drin.
Es werden nur Email verschickt an die Datensätze aus Tabelle 1 die in Spalte D ein "P" haben.

Hallo zusammen,
ich benötige bitte kurz Hilfe zu einem Code.
Ich möchte aus Excel heraus eine Worddatei öffnen, welche sich beim öffnen im Kundenordner als pdf abspeichern soll. Pfad und Dateiname steht in Zelle K2 im Worksheet "Daten"
Er gibt mir als Fehlermeldung:
"Objektvar...

dim wert as variantOn Error GoTo ANRfehler
Columns(A_ANRSpalte).Select
Selection.Find(What:=wert, After:=ActiveCell, LookIn:=xlValues, LookAt _
:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase _
:=False).Activate
GoTo...

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige