2016-04-27 3 views
0

Was es tut: Erfordert Felder von Benutzern. Blockiert Benutzer vom Speichern, wenn bestimmte Felder fehlen. Schaltet diese Felder rot, bis sie korrekt gespeichert werden.Pflichtfelder rot. Jetzt, wie man speichert?

Was ich brauche: Nun, wie zum Teufel soll ich das ...

retten soll, was ich möchte: Da das Arbeitsblatt leer ist. Ich kann nicht speichern. und Pflichtfelder sind rot. SELBST, wenn ich retten könnte, würde ich WIE die Zellen auf nicht füllen, bis ich es ausrollen.

View Original Post Here

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

Dim xlSht As Worksheet 
Dim cellsNotPopulated As Boolean 
cellsNotPopulated = False 

Set xlSht = ThisWorkbook.Worksheets("1st Call") 

    With xlSht 

     If .Range("F7") = "" Then 
      .Range("F7").Interior.Color = RGB(255, 0, 0) 
      cellsNotPopulated = True 
     Else 
      .Range("F7").Interior.ColorIndex = xlNone 
     End If 
    End With 

    If cellsNotPopulated = True Then 
     MsgBox "Please review the highlighted cells and ensure the fields are populated." 
     Cancel = True 
    End If 
End Sub 
+0

können Sie einen anderen Wert überprüfen, so Wenn .Range ("F7") = "" und .Range ("G7") <> "" –

Antwort

4

Wenn Sie mitten in der Entwicklung sind und wollen „die Regeln brechen“ und Ihre derzeitigen Bemühungen speichern, dann in einem Standardmodul:

Sub MyPrivateSave() 
    Application.EnableEvents = False 
    ThisWorkbook.Save 
    Application.EnableEvents = True 
End Sub 

Natürlich Wenn Sie mit der Entwicklung fertig sind, entfernen Sie dieses kleine "Save Tool", bevor Sie die Arbeitsmappe an die Benutzer senden.

+1

oder fügen Sie als erstes Zeile, wenn environ ("Benutzername") = Ihr Benutzername dann exit sub –

+0

@Nathan_Sav Sie haben eine gute Idee ............. betrachten Sie es als Antwort. –

1

oder fügen Sie als die erste Zeile if environ("Username")=your username then exit sub

+0

Das macht am meisten Sinn, aber ich habe Probleme mit der Implementierung dieses Codes. Soll ich eine separate Frage stellen oder kann ich sie hier posten? – Solomon3y

+0

Welche Probleme haben Sie? –

+0

Es scheint, wenn ich diesen Code hinzufüge, es tatsächlich nicht die Unterstation beendet, sondern in der nächsten Zeile fortgesetzt. – Solomon3y