2017-06-07 5 views
-2

Ich habe ein Formular erstellt mit Excel in Spalte A11 Ich habe eine Dropdown-Box mit drei Optionen. Wenn eine dieser Optionen ausgewählt ist, ist die gesamte Zeile erforderlich. Ich habe überall gesucht und finde den richtigen Code nicht. Ich bin neu in VBAVBA Coed Pflichtfelder basierend auf spezifischen Daten

enter image description here

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

    Dim rsave As Range 
    Dim cell As Range 

    Set rsave = Sheet1.Range("B11)]") 

    For Each cell In rsave 

      If cell.Value <> "" And cell.Offset(0, 1).Value = "" Then 

      Dim missdata 
      missdata = MsgBox("Missing Data - Enter the Date for WorkBook to Save", vbOKOnly, "Missing Data") 
      Cancel = True 
      cell.Offset(0, 1).Select 

     Exit For 

     End If 

     Next cell 

End Sub 
+0

Wenn der Wert in Spalte A nicht leer ist oder „SELECT ONE“, bevor die Arbeitsmappe geschlossen wird, sollte es ein Pop-up, wenn einer der Spalte B erzeugen: Ich nicht ausgefüllt ist, richtig? –

+0

korrigieren Rik, mit Ausnahme von Select One, ich habe eine ADD, Löschen und andere in der Dropdown-Box –

Antwort

0

Dies sollte es tun. Setzen Sie "SheetToCheck" auf das Blatt, das Sie überprüfen möchten. Die Schleife wird beendet, sobald ein fehlender Wert gefunden wurde. Die MsgBox gibt den ersten Bereich an, in dem ein fehlender Wert gefunden wurde.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 
    Dim ws As Worksheet 
    Dim lastrow As Integer 
    Dim CellToCheck As Range 
    Dim exitLoops As Boolean 
    Set ws = Worksheets("SheetToCheck") 

    lastrow = ws.UsedRange.Rows.Count 
    exitLoops = False 

    With ws 
     'Loop over rows: 
     For i = 2 To lastrow 
      If exitLoops = True Then Exit For 

      If .Range("A" & i).value <> "" And .Range("A" & i).value <> "SELECT ONE" Then 

       'Loop over cells in row: 
       For Each CellToCheck In .Range("B" & i & ":K" & i) 
        If exitLoops = True Then Exit For 
        If CellToCheck.value = "" Then 
         Cancel = True 
         MsgBox "Missing Data in cell " & CellToCheck.Address 
         exitLoops = True 
        End If 
       Next CellToCheck 
      End If 
     Next i 
    End With 
End Sub 
+0

danke für die Informationen, fügte ich den Code. Ich bin ein Neuling in VBA, das ich tat, war mit der rechten Maustaste auf das Blatt, Code anzeigen, fügen Sie den Code, änderte ich "SheetToCheck" zu "Sheet1", habe ich die richtigen Verfahren folgen. Nichts passiert, wenn ich versuche zu sparen ???? –

+0

Sie sollten den Visual Basic Editor öffnen (ALT + F11), doppelklicken Sie auf "ThisWorkbook" und fügen Sie den Code dort ein. –

+0

Rik, ich habe ALT + F11, das Fenster geöffnet, aber ich sehe nichts mit "ThisWorkbook", um darauf zu klicken? Ich sehe ein Dropdown für dieses Arbeitsblatt. –

Verwandte Themen