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

Set-Anweisung; Fehler im Code.

Set-Anweisung; Fehler im Code.
14.04.2008 15:31:57
Juan
Guten Tag allerseits,
Ich versuche einige Werte aus MS Project in MS Excel gezielt zu importieren.
Ich habe es mit der Funktion Find() probiert, aber irgendwie komme ich mit den Set-Anweisungen nicht klar.
Eine Fehlermeldung kommt: Laufzietfehler 91: Objektvariable oder With-Blockvariable nicht festgelegt.
Nachfolgend der Code. Die Linien die offensichtlich falsch sind, habe ich fett markiert.
Ich hoffe dass jemand mir weiter helfen kann. Ich bedanke mich im Voraus.
Beste Grüße, Juan.

Private Sub CmdImportAP_Click()
Dim Datei
Dim mpApp As MSProject.Application
Dim Proj As Project
Dim T As Task
Dim xlCell As Range
Dim Zelle As Range
Dim Spalte As Long
Dim Gesucht As Variant
Dim objSheet As Worksheet
Datei = Application.GetOpenFilename("Microsoft Project Datei (*.mpp), *.mpp")
If Datei = False Then
MsgBox "Keine Datei wurde ausgewählt."
Exit Sub
End If
Sheets(4).Visible = True
Sheets(4).Select
Application.ScreenUpdating = False
For Each Zelle In Worksheets(4).Range("A60:A560").Rows
If Zelle.Hidden = True Then
Zelle.Hidden = False
End If
Next
Set mpApp = New MSProject.Application
mpApp.Visible = False
mpApp.FileOpen Datei
Set objSheet = Worksheets(4)
With objSheet
Gesucht = Range("RangeDatum").Value
Set xlCell = .Range("RangeLaufzeit2").Find(what:=Gesucht, _
LookAt:=xlWhole, LookIn:=xlValues, MatchCase:=False)
Spalte = xlCell.Column
End With
Set xlCell = xlCell.Offset(1, 0)
For Each T In mpApp.ActiveProject.Tasks
If Not T Is Nothing Then
If Not T.Summary Then
xlCell.Value = T.PercentComplete
xlCell.NumberFormat = "General\%"
Set xlCell = xlCell.Offset(1, 0)
End If
End If
Next T
Set objSheet = Nothing
Set xlCell = Nothing
mpApp.FileClose pjDoNotSave
mpApp.Quit
Set mpApp = Nothing
AppActivate "Microsoft Excel"
Cells(61, Spalte).Select
End Sub


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

Betreff
Datum
Anwender
Anzeige
AW: Set-Anweisung; Fehler im Code.
14.04.2008 16:10:00
Uwe
Hi,
mal ein schneller Tip von mir ohne den gesamten Code studiert zu haben: Es wurde nichts gefunden und deshalb ist xlCell= Nothing. Versuch das mal abzufangen:
If Not xlCell Is Nothing Then spalte = xlCell.Column
War's das?
Gruß
Uwe
(:o)

AW: Set-Anweisung; Fehler im Code.
14.04.2008 16:41:11
Juan
Hi Uwe,
zunächst einmal danke für den Typ. Sieht so aus als hättest du recht...
Ich habe einige Linien Code hinzugefügt:
...
With objSheet
Gesucht = Sheets(3).Range("RangeDatum").Value
Set xlCell = .Range("RangeLaufzeit2").Find(what:=Gesucht, _
LookAt:=xlWhole, LookIn:=xlValues, MatchCase:=False)
If Not xlCell Is Nothing Then
Spalte = xlCell.Column
Else
MsgBox "nix gefunden", vbInformation
Exit Sub
End If

End With
...
Und die Meldung "nix gefunden" taucht.
Leider kriege ich das nicht hin, den Fehler zu finden....
Ich lasse die Frage offen.
Beste Grüße, Juan.

Anzeige
AW: Set-Anweisung; Fehler im Code.
14.04.2008 20:21:15
Herbert
Hi,
welchen Datentyp enthält
Sheets(3).Range("RangeDatum").Value
?
mfg Herbert

AW: Set-Anweisung; Fehler im Code.
15.04.2008 08:53:12
Juan
Moin Herbert,
Sheets(3).Range("RangeDatum").Value enthält ein Datum (dd.mm.yy).
RangeDatum enthält eigentlich eine Gültigkeitsliste, die die Werte aus RangeLaufzeit (B7:B....) nimmt, wo die wirklichen Datumswerte liegen.
Und zuletzt RangeLaufzeit2. Die erste Zelle in RangeLaufzeit2 enthält die Formel =WENN(B$7"";B$7;"") usw., also wieder die Datumswerte aus RangeLaufzeit.
Ich hoffe daß Du damit etwas erreichen kannst.
Bedanke mich für die Bemühungen.
Mit freundlichen Grüßen,
Juan.

Anzeige
AW: Set-Anweisung; Fehler im Code.
15.04.2008 21:23:39
Gerd
Hallo Juan,
ich habe keine Ahnung von MSProject.
Aber analog zu anderen MS-Programmen wirst Du wohl den Verweis
auf die Application durchgängig setzen müssen.
"Gesucht" muss ein einzelner Wert sein, z.B. CDate("12.12.2007").
Ansonsten musst die verschiedenen Argumente der Find-Methode 'lookat' und 'lookin' halt durchprobieren.
Gruß Gerd

Geklappt. Danke!... noch eine Frage
16.04.2008 13:15:27
Juan
Guten Morgen!
Es hat endlich geklappt!!
Danke für Eure Hilfe!
Der Fehler lag an der Formatierung der Zellen in RangeLaufzeit.
Und dazu wollte ich Euch noch eine Frage stellen:
Ich erkläre es nochmal kurz.
In RangeLaufzeit (dyn. Bereich) habe ich eine horizontale Reihe von Datumswerten die per VBA durch DateSerial() erzeugt worden ist.
Diese Reihe futtert die Gültigkeitsliste in RangeDatum.
Der Code den ich gepost habe, funktioniert nur wenn die Formatierung in RangeLaufzeit "Datum *TT.MM.JJJJ" oder in VBA "NumberFormat = "m/d/yyyy"" ist.
Die Formatierung in RangeDatum spielt anscheinend keine Rolle.
Ist die Funktion Find() in diesem Sinne begrenzt, oder gibt es die Möglichkeit, dass sie auch mit einer beliebigen Formatierung (z. B.: "mmm-yy" in VB oder "Benutzerdefiniert MMM JJ") funktioniert?
Letzendlich ist der Wert immer derselbe.
Bedanke mich nochmal!
Beste Grüße,
Juan.
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige