[VBA] MS-Project 2010 Auf doppelte Vorgänge prüfen

Fragen zu allen anderen Office Anwendungen

Moderator: ModerationP

Re: [VBA] MS-Project 2010 Auf doppelte Vorgänge prüfen

Beitragvon Jesse Blue » 18. Jan 2017, 13:56

Hallo,

leider bleibt der Fehler bestehen und außerdem werden willkürlich(?) Vorgänge markiert. Ich erkenne hinter den Markierungen keinerlei Logik. Es scheint allerdings so, dass Markierungen vor dem ersten Unterprojekt gesetzt werden und erst dann der Laufzeitfehler entsteht. Könnte es damit zu tun haben?

Viele Grüße
Benutzeravatar
Jesse Blue
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 51
Registriert: 27. Nov 2016, 19:57

Re: [VBA] MS-Project 2010 Auf doppelte Vorgänge prüfen

Beitragvon Xlsibb » 18. Jan 2017, 14:03

Tut mir leid, ich kenne deine Datei nicht. In meinem Testprojekt funktioniert alles einwandfrei.
Setze doch mal am Anfang einen Haltepunkt und gehe den Code mit F8 Schritt für Schritt durch. Dann solltest du hinter die Logik kommen.

Grundsätzlich habe ich es so gemacht:
Nehme den ersten Vorgang und notiere seine Bezeichnung.
Gehe nun alle Vorgänge darunter durch und prüfe, ob die Bezeichnung wieder vorkommt.
Gehe dann in alle Unterprojekte und mach dasselbe.
Benutzeravatar
Xlsibb
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1208
Registriert: 26. Feb 2009, 17:07

Re: [VBA] MS-Project 2010 Auf doppelte Vorgänge prüfen

Beitragvon Jesse Blue » 18. Jan 2017, 14:12

Da habe ich mich wohl missverständlich ausgedrückt. Ich meinte natürlich die Logik hinter den Vorgängen, die in diesem Fall markiert worden sind. Die eigentliche Logik hinter deinem Code habe ich durchaus verstanden. :wink:
Ich werde mich wohl nochmal hinsetzen müssen und eine wesentlich bessere Beispieldatei anfertigen müssen. Da komme ich allerdings heute nicht mehr zu. Ich werde sie dir ASAP zukommen lassen.
Benutzeravatar
Jesse Blue
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 51
Registriert: 27. Nov 2016, 19:57

Re: [VBA] MS-Project 2010 Auf doppelte Vorgänge prüfen

Beitragvon Xlsibb » 18. Jan 2017, 14:20

hier mal meine Beispieldateien
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Benutzeravatar
Xlsibb
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1208
Registriert: 26. Feb 2009, 17:07

Re: [VBA] MS-Project 2010 Auf doppelte Vorgänge prüfen

Beitragvon Jesse Blue » 19. Jan 2017, 07:58

Hallo Xlsibb

Ich habe mir dein Testprojekt mal angesehen. Da funktioniert alles. Ich habe mich mal ein wenig an den Code drangesetzt und darüber gegrübelt.
Erstmal ist mir aufgefallen, dass, wenn ich alle ActiveProjects durch ThisProjects ersetze, offensichtlich gar nichts passiert. War das etwas zuviel des Guten meinerseits? Kann ich mir eigentlich nicht vorstellen, da ansonsten die Bezüge ja nicht richtig sein dürften.
Zum anderen ist mir aufgefallen, dass ich dich an keiner Stelle darüber aufgeklärt habe, dass mein Master mehr als ein Unterprojekt hat. Ist das von Relevanz? Dürfte eigentlich auch nicht sein, denn wenn ich mir deinen Code so ansehe, dann müsste dieser doch auch mehrere Unterprojekte abdecken, oder?
Zudem verwende ich einen Ressourcenpool für alle Projekte. Daran kann es eigentlich auch nicht liegen.

Ich setze nachher eben meine Beispieldatei rein.

Grüße
Jan

EDIT: So, da ist die Beispieldatei. Es kann sein, dass die Verbindung zum Ressourcenpool so natürlich flöten gegangen ist. Ggf. einfach löschen. Ansonsten ist dies eine adäquatere Beispieldatei, als die, die ich zuerst geschickt habe. Dafür möchte ich mich entschuldigen.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Benutzeravatar
Jesse Blue
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 51
Registriert: 27. Nov 2016, 19:57

Re: [VBA] MS-Project 2010 Auf doppelte Vorgänge prüfen

Beitragvon Jesse Blue » 16. Feb 2017, 12:44

Ein letztes Mal pushe ich noch.
Benutzeravatar
Jesse Blue
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 51
Registriert: 27. Nov 2016, 19:57

Re: [VBA] MS-Project 2010 Auf doppelte Vorgänge prüfen

Beitragvon Xlsibb » 07. Mär 2017, 15:28

Hallo!

Tut mir leid, ich kann hier nicht immer online sein und in letzter Zeit war zuviel los (=> es gibt ein Leben außerhalb dieses Forums)

Ich habe mir das nochmal angeguckt. Mein Code geht alle Tasks durch und danach alle Subprojekte, aber unabhängig von den Tasks des Hauptprojekts.
Man müsste also die Schleifen ineinander verschachteln. Dadurch ist es sehr wahrscheinlich, dass der Programmablauf sehr, sehr lange dauert. Trotzdem hier ein (UNGETESTETER!!) Versuch:

Das muss dann aber genug der Hilfe sein (ich habe es sogar kommentiert!) Schließlich dient das Forum als Hilfe zur Selbsthilfe!!

Code: Alles auswählen
Sub doppelte_Eintraege()
   
    Dim sprj, sprj2 As Subproject
    Dim tsk, tskSP As Task
    Dim strSprj, strSprj2, strTask, strTask2 As String
    Dim i As Integer

    'Alle Vorgänge des Hauptprojekts durchgehen
    For Each tsk In ActiveProject.Tasks
        'aktiver Task
        strTask = tsk.Name
        'jeden Task unterhalb des aktiven Tasks durchgehen und vergleich
        For i = tsk.Index + 1 To ActiveProject.Tasks.Count
            'gelb markieren, wenn gleich
            If ActiveProject.Tasks(i).Name = strTask Then
                Application.SelectRow row:=tsk.ID, rowrelative:=False
                Font32Ex CellColor:=65535
                Application.SelectRow row:=ActiveProject.Tasks(i).ID, rowrelative:=False
                Font32Ex CellColor:=65535
            End If
        Next i
        'nun in alle Unterprojekte gehen und alle Tasks der Unterprojekte mit dem aktiven Task vergleichen
        For Each sprj In ThisProject.Subprojects
            'Name des Unterprojekts ohne Dateipfad
            strSprj = Left(sprj.SourceProject.Name, Len(sprj.SourceProject.Name) - 4)
            'Jeden Task des Unterprojekts durchgehen
            For Each tskSP In sprj.SourceProject.Tasks
                    'gelb markieren, wenn gleich
                    If tskSP.Name = strTask Then
                        Application.SelectRow row:=tsk.ID, rowrelative:=False
                        Font32Ex CellColor:=65535
                        Application.SelectRow row:=ActiveProject.Tasks(strSprj).ID + tskSP.ID, rowrelative:=False
                        Font32Ex CellColor:=65535
                    End If
                Next i
            Next tsk
        Next sprj
    Next tsk
   
    'Separat alle Unterprojekte durchgehen und die Tasks innerhalb EINES Unterprojekts vergleichen
    For Each sprj In ThisProject.Subprojects
        strSprj = Left(sprj.SourceProject.Name, Len(sprj.SourceProject.Name) - 4)
        For Each tsk In sprj.SourceProject.Tasks
            strTask = tsk.Name
            For i = tsk.Index + 1 To sprj.SourceProject.Tasks.Count
                If sprj.SourceProject.Tasks(i).Name = strTask Then
                    Application.SelectRow row:=ActiveProject.Tasks(strSprj).ID + tsk.ID, rowrelative:=False
                    Font32Ex CellColor:=65535
                    Application.SelectRow row:=ActiveProject.Tasks(strSprj).ID + sprj.SourceProject.Tasks(i).ID, rowrelative:=False
                    Font32Ex CellColor:=65535
                End If
            Next i
        Next tsk
       
        'und zum Schluss noch alle anderen Unterprojekte durchgehen
        'und die Tasks der Unterprojekte mit den Tasks aller anderen Unterprojekte vergleichen
        For Each sprj2 In ThisProject.Subprojects
            'Prozedur nur ausführen, wenn das andere Unterprojekt unter dem aktuell durchsuchten liegt
            If sprj2.Index > sprj.Index Then
                strSprj2 = Left(sprj2.SourceProject.Name, Len(sprj2.SourceProject.Name) - 4)
                For Each tskSP In sprj2.SourceProject.Tasks
                    strTask2 = tskSP.Name
                    For i = tskSP.Index + 1 To sprj2.SourceProject.Tasks.Count
                        'gelb markieren, wenn gleich. Hier musst du wahrscheinlich schauen, wie sich die IDs addieren.
                        If sprj2.SourceProject.Tasks(i).Name = strTask2 Then
                            Application.SelectRow row:=ActiveProject.Tasks(strSprj2).ID + tskSP.ID, rowrelative:=False
                            Font32Ex CellColor:=65535
                            Application.SelectRow row:=ActiveProject.Tasks(strSprj).ID + sprj.SourceProject.Tasks(i).ID, rowrelative:=False
                            Font32Ex CellColor:=65535
                        End If
                    Next i
                Next tsk2
            End If
        Next sprj2
    Next sprj

End Sub
Benutzeravatar
Xlsibb
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1208
Registriert: 26. Feb 2009, 17:07

Vorherige

Zurück zu Andere Office Fragen (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast