29. Acc2000: MsgBox ignoruje znaki @ formatujące tekst.

W Accessie 97 jest przyjemna możliwość formatowania stringów w oknie MsgBox. Przykładowo jeśli napiszemy
MsgBox "Bardzo ważny komunikat!@Ta operacja nie jest dozwolona.@Zajrzyj do instrukcji."
- otrzymamu ładnie sformatowany, poniższy tekst:

        Bardzo ważny komunikat
 
        Ta operacja nie jest dozwolona.
 
        Zajrzyj do instrukcji.

Niestety Access 2000 ignoruje formatujące znaczenie znaków @ występujących w funkcji MsgBox i ten sam tekst wyświetli tak:
 
Bardzo ważny komunikat!@Ta operacja nie jest dozwolona.@Zajrzyj do instrukcji.
 
Czy jest jakiś sposób, żeby sobie z tym poradzić?

Rozwiązanie podał Krzysztof Naworyta. Trzeba zamiast
MsgBox ("Tekst 1@Tekst 2@Tekst 3",36,"Tytuł")
napisać
Eval ("MsgBox ('Tekst 1@Tekst 2@Tekst 3',36,'Tytuł')")

Bardziej kompleksowy przykład znalazłem w MSDM Library. Proponują tam napisanie własnej funkcji, której bedziemy używać w Accessie 2000, zamiast standardowego MsgBox. Oto ta funkcja:

Function FMsgBox(Prompt As String, _
                    Optional Buttons As VbMsgBoxStyle = vbOKOnly, _
                    Optional Title As String = "Microsoft Access", _
                    Optional HelpFile As Variant, _
                    Optional Context As Variant) As VbMsgBoxResult
    Dim strMsg As String
    If IsMissing(HelpFile) Or IsMissing(Context) Then
       strMsg = "MsgBox('" & Prompt & "', " & Buttons & ", '" & Title & "')"
    Else
       strMsg = "MsgBox('" & Prompt & "', " & Buttons & ", '" & Title & _
       "', '" & HelpFile & "', " & Context & ")"
    End If
    FMsgBox = Eval(strMsg)
End Function

'Wywołanie funkcji
FMsgBox ("Tekst 1@Tekst 2@Tekst 3",36,"Tytuł")