Thema Datum  Von Nutzer Rating
Antwort
07.11.2016 11:45:34 Manuel
NotSolved
07.11.2016 22:07:21 Gast2519
NotSolved
08.11.2016 15:39:02 Manuel
NotSolved
08.11.2016 16:16:38 Gast35768
NotSolved
08.11.2016 17:00:36 Gast5412
NotSolved
08.11.2016 19:05:53 Manuel
NotSolved
08.11.2016 19:15:43 Gast14598
NotSolved
08.11.2016 20:04:01 Manuel
NotSolved
09.11.2016 21:47:31 Gast6339
NotSolved
09.11.2016 21:47:31 Gast22040
NotSolved
10.11.2016 07:05:32 Manuel
NotSolved
Blau VBA Word: Problem mit select case Abfrage
10.11.2016 09:12:30 Manuel
NotSolved
10.11.2016 11:00:19 Gast3246
NotSolved
10.11.2016 11:42:57 Gast52597
NotSolved
11.11.2016 17:18:51 Manuel
NotSolved
17.11.2016 17:50:16 Gast88128
NotSolved
18.11.2016 09:04:07 Gast25980
NotSolved

Ansicht des Beitrags:
Von:
Manuel
Datum:
10.11.2016 09:12:30
Views:
603
Rating: Antwort:
  Ja
Thema:
VBA Word: Problem mit select case Abfrage

Ich habe eine Lösung für mein Problem mit der Variable gefunden.

Option Explicit
 
Sub clearVariable()
    Dim oVar As Variable
    Dim bVar As Boolean
    For Each oVar In ActiveDocument.Variables
        If oVar.Name = "varID" Then
            bVar = True
            oVar.Delete
            MsgBox "Variable Deleted"
            Exit For
        End If
    Next oVar
    If Not bVar Then MsgBox "Variable not found"
lbl_Exit:
    Set oVar = Nothing
    Exit Sub
End Sub

Wahrscheinlich is das mit dem zweiten If statement völlig der falsche Ansatz. Wäre schön wenn du dir das mal anschauen könntest. 


Gruß

Manuel

Den Code habe ich in ein Modul geschrieben. Jetzt kann ich dieses Makro immer ausführen wenn ich die Variable entfernen möchte.

Allerdings bin ich was den case select angeht noch auf ein weiteres Problem gestoßen bei dem du mir eventuell behilflich sein könntest.

Das Dokument erstellt die Variable ja immer und speichert ohne zu Fragen wenn die variable nicht vorhanden ist. Da es jedoch sein kann, das Daten die sich für jedes zu erstellende Protokoll ständig wiederholen, einmal vorgeschrieben werden und das Protokoll dann gespeichert wird. Müsste ansich eine zweite Abfrage her die erkennt das die variable nicht vorhanden ist und dann den Benutzer frägt ob das Dokument die Daten übertragen oder ob ohne Datenübertragung gespeichert werden soll.

Ich habe etwas an dem vorhanden Code rumgedoktert (im Prinzip nur ein weiteres If Statement hinzugefügt), bin aber nicht weitergekommen.

Sub FileSave()
    Dim oDoc As Document
    Dim oVar As Variable
    Dim bVar As Boolean
    Dim lngID As Long
    Dim lngAsk As Long
    Dim vbCancel As Boolean, vbNo As Boolean, vbYes 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)
                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 Dokument 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
            If oVar.Name = "" Then ' Ich habe hier lediglich ein zweites If Statement eingebaut aber das funktioniert leider nicht.
                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!" & vbCr & _
                "• Wähle 'Nein' um das Dokument ohne Datenübertragung zu speichern!" & vbCr & _
                "• Wähle 'Abbrechen' um den Vorgang zu beenden!", vbYesNoCancel)
                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 Dokument 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
          'nur speichern
            DataTransfer CStr(lngID)
       End If
        If Not oDoc.Saved Then oDoc.Save
    End If
lbl_Exit:
    Exit Sub
End Sub

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
07.11.2016 11:45:34 Manuel
NotSolved
07.11.2016 22:07:21 Gast2519
NotSolved
08.11.2016 15:39:02 Manuel
NotSolved
08.11.2016 16:16:38 Gast35768
NotSolved
08.11.2016 17:00:36 Gast5412
NotSolved
08.11.2016 19:05:53 Manuel
NotSolved
08.11.2016 19:15:43 Gast14598
NotSolved
08.11.2016 20:04:01 Manuel
NotSolved
09.11.2016 21:47:31 Gast6339
NotSolved
09.11.2016 21:47:31 Gast22040
NotSolved
10.11.2016 07:05:32 Manuel
NotSolved
Blau VBA Word: Problem mit select case Abfrage
10.11.2016 09:12:30 Manuel
NotSolved
10.11.2016 11:00:19 Gast3246
NotSolved
10.11.2016 11:42:57 Gast52597
NotSolved
11.11.2016 17:18:51 Manuel
NotSolved
17.11.2016 17:50:16 Gast88128
NotSolved
18.11.2016 09:04:07 Gast25980
NotSolved