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

Fragen zu allen anderen Office Anwendungen

Moderator: ModerationP

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

Beitragvon Jesse Blue » 05. Dez 2016, 09:21

Hallo liebe Forumianer,

ich möchte wohl ein Makro programmieren, dass durch mein Projekt "geht", auf doppelte Vorgänge prüft und diese ggf. kenntlich macht (z.B. einfärben).
Das Ganze kann man ja über eine do-while-schleife mit integrierter if-then-abfrage lösen. Aber wie baut man sowas in VBA?
Kann mir da jemand helfen oder mir wenigstens eine Möglichkeit nennen, wie ich selber auf die Lösung komme? Ich habe, wie schon mal erwähnt, leider überhaupt keine Kenntnis von VBA und weiß auch nicht wo ich mich bezüglich MS Project weiterbilden kann.

Vielen Dank schon mal im Voraus!

Liebe Grüße
Jan
Zuletzt geändert von Jesse Blue am 06. Dez 2016, 12:04, insgesamt 1-mal geändert.
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 » 06. Dez 2016, 11:01

Hallo Jan,

du kannst dir ein Modul erzeugen und folgenden Code einfügen:

Code: Alles auswählen
Sub doppelte_Eintraege()
   
    Dim tsk As Task
    Dim strTask As String
    Dim i As Integer

    For Each tsk In ThisProject.Tasks
        strTask = tsk.Name
        For i = tsk.Index + 1 To ThisProject.Tasks.Count
            If ThisProject.Tasks(i).Name = strTask Then
                Application.SelectRow row:=tsk.ID, rowrelative:=False
                Font32Ex CellColor:=65535
                Application.SelectRow row:=Tasks(i).ID, rowrelative:=False
                Font32Ex CellColor:=65535
            End If
        Next i
    Next tsk

End Sub


Das Makro prüft alle Vorgänge und schaut, ob unterhalb dieses Vorgangs der Text des Vorgangs nochmal vorkommt. Diese werden dann gelb markiert. Somit ist auch eine "Nach-oben-Prüfung" verhindert.
Benutzeravatar
Xlsibb
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 625
Registriert: 26. Feb 2009, 17:07

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

Beitragvon Jesse Blue » 06. Dez 2016, 11:13

Hallo Xlsibb,

danke schon mal für die schnelle Antwort. Mir wird allerdings ein Fehler angezeigt, wenn ich den Code in ein neues Modul einsetze und ausführen möchte. Der Fehler ist in folgender Codezeile:

Code: Alles auswählen
Application.SelectRow row:=Tasks(i).ID, rowrelative:=False


Er sagt mir, dass die Sub oder Function nicht definiert ist. Betroffen ist das Tasks(i). Habe ich einen Fehler gemacht?

Liebe Grüße
Jan
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 » 06. Dez 2016, 11:23

Hallo Jan,

okay, musste ich nochmal gucken. (Hatte 2 Dinge vermischt)
Wenn du Code in ein allgemeines Modul schreibst, speichert das Project offensichtlich in sein Template. Das Makro ist dann immer aufrufbar.
Dann musst du den Code wie folgt abändern:

Code: Alles auswählen
Sub doppelte_Eintraege()
   
    Dim tsk As Task
    Dim strTask As String
    Dim i As Integer

    For Each tsk In ActiveProject.Tasks
        strTask = tsk.Name
        For i = tsk.Index + 1 To ActiveProject.Tasks.Count
            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
    Next tsk

End Sub


Setzt du den Code in dein aktuelle Projekt (siehe Bild), dann kannst du mit meinem ersten Code arbeiten.
Project1.JPG
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Benutzeravatar
Xlsibb
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 625
Registriert: 26. Feb 2009, 17:07

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

Beitragvon Jesse Blue » 06. Dez 2016, 11:31

Hallo Xlsibb,

ja, jetzt läuft das Makro! Allerdings scheint er mehr wahllos einige Vorgänge zu markieren, die nicht den gleichen Namen haben. Tut mir echt leid, dass ich da jetzt so nerve, aber kannst du mir vielleicht nochmal helfen? :?
Bzw. soll ich dir eine Test-Projekt geben, bei dem der gleiche Fehler auftritt?

Liebe Grüße
Jan
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 » 06. Dez 2016, 11:33

ja, schieb mal deine Beispieldatei rüber.
Benutzeravatar
Xlsibb
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 625
Registriert: 26. Feb 2009, 17:07

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

Beitragvon Jesse Blue » 06. Dez 2016, 11:42

Hier das Beispiel-Projekt als Zip-Datei.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von Jesse Blue am 06. Dez 2016, 11:56, insgesamt 1-mal geändert.
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 » 06. Dez 2016, 11:43

Ich hab den Fehler (vermutlich) gefunden.

Ich schrieb:
For i = tsk.Index + 1 To ThisProject.Tasks.Count

es muss aber lauten:
For i = tsk.ID + 1 To ThisProject.Tasks.Count

Edit:
Ja, deine Beispieldatei funktioniert so bei mir.
Viel Erfolg also!
Benutzeravatar
Xlsibb
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 625
Registriert: 26. Feb 2009, 17:07

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

Beitragvon Jesse Blue » 06. Dez 2016, 11:51

Das funktioniert bei dir?
Bei mir markiert er jetzt gar nichts. Das wäre zwar an sich ganz gut, aber selbst den vorsätzlich eingefügten Vorgang mit gleichem Namen markiert er nicht. Hab ich noch was übersehen? :?
Zuletzt geändert von Jesse Blue am 06. Dez 2016, 12:05, insgesamt 1-mal geändert.
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 » 06. Dez 2016, 11:53

Ich habs!
Hab beim Kopieren einen Fehler gemacht!
Vielen Dank! :D
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 » 21. Dez 2016, 10:43

Hallo und sorry für den dritten Post in Folge :oops:

Also, der Code funktioniert ja und ich kann fleißig Vorgänge markieren.
Jetzt stellte sich allerdings heraus, dass das Makro leider keine Subprojekte in einem Master mit einschließt. Gibt es da vielleicht noch eine fesche Möglichkeit wie man das mit abdecken kann?

Liebe Grüße
Jan
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 » 05. Jan 2017, 11:50

*Push*
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 » 11. Jan 2017, 11:31

Hallo Jan,

sorry, war ne Weile off.
Dann kannst du deinen Code wie folgt erweitern:

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

    For Each tsk In ActiveProject.Tasks
        strTask = tsk.Name
        For i = tsk.Index + 1 To ActiveProject.Tasks.Count
            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
    Next tsk
   
    For Each sprj In ActiveProject.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:=sprj.SourceProject.Tasks(i).ID, rowrelative:=False
                    Font32Ex CellColor:=65535
                End If
            Next i
        Next tsk
    Next sprj

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

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

Beitragvon Jesse Blue » 16. Jan 2017, 11:57

Hallo Xlsibb,
jetzt war ich meinerseits ein paar Tage nicht online. Das gleicht sich also aus :wink:
Nun zu deinem Code:
Das sieht ja echt fancy aus! Ja, funktioniert und ich bin happy.
Vielen Dank!

Liebe Grüße
Jan

EDIT: Meh, zu früh gefreut! Ich bekomme einen Fehler in dieser Spalte:

Code: Alles auswählen
Application.SelectRow row:=ActiveProject.Tasks(strSprj).ID + tsk.ID, rowrelative:=False

mit der Fehlermeldung Laufzeitfehler 1101:
Ungültiger Argumentenwert.
"Was tun?", sprach Zeus.
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, 13:18

Hi,

also ich glaube, ich hatte noch an einer Stelle einen Fehler, aber nicht an dem von dir markierten.
Der Code "ActiveProject" kann evtl. zu einem Fehler führen, wenn du noch andere Dateien offen hast (so dass die "Aktivität" verloren geht). Versuche evtl. anstattdessen "ThisProject"

Code: Alles auswählen
Option Explicit

Sub doppelte_Eintraege()
   
    Dim sprj As Subproject
    Dim tsk As Task
    Dim strSprj, strTask As String
    Dim i As Integer

    For Each tsk In ActiveProject.Tasks
        strTask = tsk.Name
        For i = tsk.Index + 1 To ActiveProject.Tasks.Count
            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
    Next tsk
   
    For Each sprj In ActiveProject.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
    Next sprj

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

Nächste

Zurück zu Andere Office Fragen (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast