Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
916to920
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
916to920
916to920
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

nur speichern wenn zellen/Bereiche nicht leer

nur speichern wenn zellen/Bereiche nicht leer
25.10.2007 16:30:00
maruseru
Hallo werte Profis
In einer Tabelle habe ich verschieden Zellen/Bereiche die nicht geschützt sind und in diese sollen Zahlen eingelesen werden. Nun darf das Arbeitsblatt nicht gespeichert werden, wenn nicht alle zellen ausgefüllt sind.
Auszufüllen sind:
D5:D6
D10:11
D15:16
G4
Wenn nicht ausgefüllt MsgBox "Bitte alle Felder ausfüllen!"
Gruss
Maruseru

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Speichern nur wenn Pflichtfelder ausgefüllt
25.10.2007 16:47:00
NoNet
Hallo Maruseru,
das könntest Du mit diesem Makro lösen :


Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Dim rngPflicht As Range, rngBereich As Range
    Dim intLeere As Integer
    Set rngPflicht = [D5:D6,D10:D11,D15:D16,G4]
    For Each rngBereich In rngPflicht.Areas
        intLeere = intLeere + Application.WorksheetFunction.CountBlank(rngBereich)
    Next
    If intLeere > 0 Then
        Cancel = True
        MsgBox "Bitte zuerst alle Pflicht-Felder ausfüllen !"
    End If
End Sub


Das Makro muss in das Klassenmodul "DieseArbeitsmappe" im VBA-Editor kopiert werden !
Gruß, NoNet

Anzeige
AW: Speichern nur wenn Pflichtfelder ausgefüllt
25.10.2007 17:58:00
maruseru
Hallo NoNet
Funktioniert einwandfrei, super. Frage: Kann ich diesen Code auch auf einen CommandButton legen?
Gruss
Marcello

Lege "ActiveWorkbook.Save" auf den Button _oT
25.10.2007 18:02:49
NoNet
_oT

AW: Lege "ActiveWorkbook.Save" auf den Button _oT
26.10.2007 08:17:00
maruseru
Hallo NoNet
Wenn ich den Code so eingebe kommt immer die Messagebox, auch wenn alle Bereiche ausgefüllt sind.
Gruss
Maruseru

Private Sub CommandButton3_Click()
Dim rngPflicht As Range, rngBereich As Range
Dim intLeere As Integer
Set rngPflicht = [D5:D6,D10:D11,D15:D16,D20:21,D25:26,D30:D31,D35:D36,G4]
For Each rngBereich In rngPflicht.Areas
intLeere = intLeere + Application.WorksheetFunction.CountBlank(rngBereich)
Next
If intLeere > 0 Then
Cancel = True
MsgBox "Please fill all necessary data!"
End If
ActiveWorkbook.Save
End Sub


Anzeige
Speichern auf einen Button legen
26.10.2007 10:22:00
NoNet
Hallo Maruseru,
zunächst einmal musst Du die Bereiche korrekt angeben :
Nicht D20:21 sondern D20:D21 - also bitte überall die Spaltenbezeichnungen mit angeben, ansonsten stoppt das Makro schon hier mit einer Fehlermeldung !
Hier der Code, der zu "CommandButton1" zugeordnet ist :
Private Sub CommandButton1_Click()
    Dim rngPflicht As Range, rngBereich As Range
    Dim intLeere As Integer
    Set rngPflicht = [D5:D6,D10:D11,D15:D16,D20:D21,D25:D26,D30:D31,D35:D36,G4]
    For Each rngBereich In rngPflicht.Areas
        intLeere = intLeere + Application.WorksheetFunction.CountBlank(rngBereich)
    Next
    If intLeere > 0 Then
        MsgBox "Please fill all necessary data!"
    Else
        On Error Resume Next 'Falls Speichern abgebrochen wurde
        If ActiveWorkbook.Saved Then
            ActiveWorkbook.Save
        Else
            Application.Dialogs(xlDialogSaveAs).Show
        End If
    End If
End Sub

Gruß, NoNet

Anzeige
AW: Speichern auf einen Button legen
26.10.2007 10:33:00
maruseru
Halo NoNet
Danke für den Code, funktioniert. Das mit den Bereichen hätte ich sehen müssen ;-))
Schönes Wochenende
Maruseru
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige