Project: Makros mit Datumsfeldern in mehrsprachiger Umgebung / Macros with Date Fields in Multilanguage Environment

2019-09-27 | Barbara.Henhapl
  1. Deutsch
  2. English
  3. Code

Deutsch

Im Artikel Project: Formeln mit Datumsfeldern in mehrsprachiger Umgebung / Formulas with Date Fields in Multilanguage Environment habe ich beschrieben, wie man Fehler in Formeln mit potentiell leeren Datumsfeldern in einer mehrsprachigen Umgebung vermeidet. Potentiell leere Datumsfelder wie Geplantes Ende, Datum1, … werden abhängig von der Sprachversion als NV, NA, … dargestellt. Wenn in Formeln auf diesen Textwerte einer Sprache geprüft wird, führt das zu Fehlern bei Verwendung einer anderen Sprachversion von Project. Das gleiche gilt auch, wenn diese Felder mit VBA ausgewertet werden. In Code sehen Sie drei Beispielmakros:

  1. TestBaselineFinish_NA prüft auf den Text NA und wird zum Beispiel mit einer deutschen Projectversion nicht funktionieren
  2. TestBaselineFinish_NV prüft auf den Text NV und wird zum Beispiel mit einer englischen Projectversion nicht funktionieren
  3. TestBaselineFinish_Multilanguage hingegen prüft, ob der Wert ein gültiges Datum ist und ist damit von der Sprachversion unabhängig

In Makros implementieren / Implement Macros wird beschrieben, wie ein Makro in Project übernommen werden kann. Mehr Beispielmakros sind unter VBA zu finden.

English

In post Project: Formeln mit Datumsfeldern in mehrsprachiger Umgebung / Formulas with Date Fields in Multilanguage Environment I described how to avoid errors in potential empty date fields in a Multilanguage environments. Potential empty date fields like Baseline Finish, Date1, … are displayed as NA, NV, … depending on the language version of Project. If formulas are testing on these text values of one language, the formula will fail while using Project in a different language. The same happens, if these fields are evaluated in VBA. In Code you will see three sample macros:

  1. TestBaselineFinish_NA checks the text NA and will not work e.g. in German version of Project
  2. TestBaselineFinish_NV checks the text NV and will not work e.g. in English version of Project
  3. TestBaselineFinish_Multilanguage checks whether the value is a valid date and is therefore independent of the language version

Implementing Macros / Implement Macros describes how to apply a macro to Project. More sample code is available at VBA.

Code

Sub TestBaselineFinish_NA()
'This macro will only work in versions displaying "NA" for empty date fields
Dim P As Project
Dim T As Task

Set P = ActiveProject

For Each T In P.Tasks
    If Not T Is Nothing Then
        If T.BaselineFinish = "NA" Then
            T.Text2 = "No Baseline"
        Else
            T.Text2 = ""
        End If
    End If
Next T

End Sub

Sub TestBaselineFinish_NV()
'This macro will only work in versions displaying "NV" for empty date fields
Dim P As Project
Dim T As Task

Set P = ActiveProject

For Each T In P.Tasks
    If Not T Is Nothing Then
        If T.BaselineFinish = "NV" Then
            T.Text2 = "No Baseline"
        Else
            T.Text2 = ""
        End If
    End If
Next T

End Sub

Sub TestBaselineFinish_Multilanguage()
'This macro will work in all languages
Dim P As Project
Dim T As Task

Set P = ActiveProject

For Each T In P.Tasks
    If Not T Is Nothing Then
        'If BaselineFinish does not contain a valid date, "IsDate" is false
        If Not (IsDate(T.BaselineFinish)) Then
            T.Text2 = "Kein Basisplan"
        Else
            T.Text2 = ""
        End If
    End If
Next T

End Sub

Categories: Project, VBA

Source: https://blog.atwork.at/post/2019/09/27/Project-Makros-mit-Datumsfeldern-in-mehrsprachiger-Umgebung-Macros-with-Date-Fields-in-Multilanguage-Environment