Excel VBA Pflichtangaben sonst nicht Speichern
#1
Question 
Hallo zusammen,

Ich habe folgendes Problem:
In meiner Datei wird immer wieder vergessen einige Zellen auszufüllen.
Darum wäre es genial wenn Excel einen bevor man Speichert mit einer Meldung aufmerksam macht das die Pflichtangaben noch nicht ausgefüllt sind.
Der absolute Wahnsinn wäre noch wenn vielleicht diese Zellen noch farbig hervor gehoben werden.
Es würde sich um folgende Zellen Handeln: H8, Q8, H11, Q11. Es muss eine von diesen Zellen mit einem Text gefüllt werden.

Ist die so umsetzbar?

Dankeschön im voraus!
Antworten Top
#2
Hallo Pascala,

ja, das geht. - Eine mögliche Variante der einfacheren Art wäre dies:

Code:
Private Sub Text_füllenNorbert()

Tabelle1.Range("H8").Interior.ColorIndex = None
Tabelle1.Range("Q8").Interior.ColorIndex = None
Tabelle1.Range("H11").Interior.ColorIndex = None
Tabelle1.Range("Q11").Interior.ColorIndex = None

    If Tabelle1.Range("H8") = "" And _
    Tabelle1.Range("Q8") = "" And _
    Tabelle1.Range("H11") = "" And _
    Tabelle1.Range("Q11") = "" Then
    MsgBox "Es muss noch eine Zelle mit Text gefüllt werden"
    Else
    Tabelle1.Range("H8").Interior.ColorIndex = 5
    Tabelle1.Range("Q8").Interior.ColorIndex = 5
    Tabelle1.Range("H11").Interior.ColorIndex = 5
    Tabelle1.Range("Q11").Interior.ColorIndex = 5

End If
End Sub
Name der Tabelle und gewünschte Farbe noch anpassen.

Grüße
Norbert
[-] Folgende(r) 1 Nutzer sagt Danke an NobX für diesen Beitrag:
  • Pascala
Antworten Top
#3
Vielen lieben Dank für deine Antwort!

Nur leider speichert er dennoch die Datei ab wenn keiner dieser Zellen befüllt ist.

Hast du vielleicht hierzu noch eine Lösung?

Vielen Dank.

Ich habe es jetzt so angepasst und es funktioniert. :) 

Trotzdem vielen Dank für das Helfen!

Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

Tabelle1.Range("H8").Interior.ColorIndex = 3
Tabelle1.Range("Q8").Interior.ColorIndex = 3
Tabelle1.Range("H11").Interior.ColorIndex = 3
Tabelle1.Range("Q11").Interior.ColorIndex = 3

    If Tabelle1.Range("H8") = "" And _
    Tabelle1.Range("Q8") = "" And _
    Tabelle1.Range("H11") = "" And _
    Tabelle1.Range("Q11") = "" Then
    MsgBox "Es muss noch eine Zelle mit Text gefüllt werden"
    Cancel = True
    Else
    Tabelle1.Range("H8").Interior.ColorIndex = None
    Tabelle1.Range("Q8").Interior.ColorIndex = None
    Tabelle1.Range("H11").Interior.ColorIndex = None
    Tabelle1.Range("Q11").Interior.ColorIndex = None

End If
End Sub
Antworten Top
#4
Hallo Pascala,

das sollte funktionieren:

Code:
Option Explicit

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

Tabelle1.Range("H8").Interior.ColorIndex = 3
Tabelle1.Range("Q8").Interior.ColorIndex = 3
Tabelle1.Range("H11").Interior.ColorIndex = 3
Tabelle1.Range("Q11").Interior.ColorIndex = 3

    If Tabelle1.Range("H8") = "" And _
    Tabelle1.Range("Q8") = "" And _
    Tabelle1.Range("H11") = "" And _
    Tabelle1.Range("Q11") = "" Then
    MsgBox "Es muss noch eine Zelle mit Text gefüllt werden"
    Cancel = True
    Else
    Tabelle1.Range("H8").Interior.ColorIndex = xlNone
    Tabelle1.Range("Q8").Interior.ColorIndex = xlNone
    Tabelle1.Range("H11").Interior.ColorIndex = xlNone
    Tabelle1.Range("Q11").Interior.ColorIndex = xlNone
     MsgBox "Tabelle wurde gespeichert"
    End If
End Sub
Grüße
Norbert
[-] Folgende(r) 1 Nutzer sagt Danke an NobX für diesen Beitrag:
  • Pascala
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste