Also ich habe nochmal auf eigene Faust versucht mein Problem zu lösen. Denke mal das ich mit diesem Ansatz soweit auch richtig liege. Jedoch habe ich immernoch das Problem das wenn die Variable nicht gesetzt wurde, das Dokument einfach abgespeichert und die variable gesetzt wird ohne das die Message Box erscheint, also der Case Select aufgerufen wird der dem Benutzer vermittelt das die Daten aus dem Protokoll noch nicht übertragen wurden und welche Möglichkeiten offen stehen.
Hier nochmal der bisherige Code. Wahrscheinlich übersehe ich etwas ganz simples...
Sub FileSave()
Dim oDoc As Document
Dim oVar As Variable
Dim bVar As Boolean
Dim lngID As Long
Dim lngAsk As Long
Dim weiter2 As Boolean
Dim vbCancel As Boolean, vbNo As Boolean, vbYes As Boolean, weiter As Boolean
Set oDoc = ActiveDocument
If Checkfields = True Then
If oDoc.Path = "" Then
FileSaveAs
End If
For Each oVar In oDoc.Variables
If oVar.Name = "varID" Then
lngAsk = MsgBox("Die Daten dieses Protokolls wurden bereits in die Geräteliste übertragen!" & vbCr & _
"Wurden Daten im Protokoll geändert, kann der Eintrag in der Geräteliste aktualisiert werden." & vbCr & _
vbCr & _
"• Wähle 'Ja' um den vorhandenen Eintrag zu aktualisieren!" & vbCr & _
"• Wähle 'Nein' um das Dokument ohne Datenübertragung zu speichern!" & vbCr & _
"• Wähle 'Abbrechen' um den Vorgang zu beenden!", vbYesNoCancel)
weiter = True
weiter2 = False
Else
If oVar.Name = "" Then
lngAsk = MsgBox("Die Daten dieses Protokolls wurden noch nicht in die Geräteliste übertragen!" & vbCr & _
"Es besteht die Möglichkeit dies zu tun oder das Dokument ohne Datenübertragung zu speichern." & vbCr & _
vbCr & _
"• Wähle 'Ja' um die Daten in die Geräteliste zu übertragen und das Protokoll zu speichern!" & vbCr & _
"• Wähle 'Nein' um das Dokument ohne Datenübertragung zu speichern!" & vbCr & _
"• Wähle 'Abbrechen' um den Vorgang zu beenden!", vbYesNoCancel)
weiter = True
weiter2 = True
Else
weiter = False
weiter2 = False
End If
End If
If weiter = True And weiter2 = False Then
Select Case lngAsk
Case 6 'vbYes
MsgBox ("Die Daten werden jetzt überschrieben und das Dokument gespeichert!")
lngID = oVar.Value
bVar = True
Exit For
Case 7 'vbNo
MsgBox ("Das Protokoll wird ohne Datenübertragung gespeichert!")
bVar = False
Exit For
Case 2 'vbCancel
MsgBox ("Speichervorgang wird abgebrochen!")
GoTo lbl_Exit
Case Else
MsgBox "Es ist etwas schief gelaufen!"
GoTo lbl_Exit
End Select
ElseIf weiter = True And weiter2 = True Then
Select Case lngAsk
Case 6 'vbYes
MsgBox ("Die Daten werden jetzt in die Geräteliste übertragen und das Protokoll gespeichert!")
lngID = oVar.Value
bVar = True
Exit For
Case 7 'vbNo
MsgBox ("Das Protokoll wird ohne Datenübertragung gespeichert!")
bVar = False
Exit For
Case 2 'vbCancel
MsgBox ("Speichervorgang wird abgebrochen!")
GoTo lbl_Exit
Case Else
MsgBox "Es ist etwas schief gelaufen!"
GoTo lbl_Exit
End Select
End If
Next oVar
If Not bVar Then
oDoc.Variables("varID").Value = "0"
oDoc.Save
Else
DataTransfer CStr(lngID)
End If
If Not oDoc.Saved Then oDoc.Save
End If
lbl_Exit:
Exit Sub
End Sub
Es wäre schön wenn jemand nochmal drüber schauen könnte und eventuell den Fehler findet. Das Projekt ist beinahe fertig =/
Gruß
Manuel
|