Office: Wenn bestimmtes Feld leer, dann nicht speichern

Helfe beim Thema Wenn bestimmtes Feld leer, dann nicht speichern in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo liebe Helfer, ich habe ein Problem, welches am Besten in der angehängten Testdatei klar wird. Es geht um Folgendes: Wenn in einer Zeile ein... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von maxseidel, 14. August 2008.

  1. maxseidel Erfahrener User

    Wenn bestimmtes Feld leer, dann nicht speichern


    Hallo liebe Helfer,

    ich habe ein Problem, welches am Besten in der angehängten Testdatei klar wird.
    Es geht um Folgendes:
    Wenn in einer Zeile ein Eintrag in Spalte E oder F oder G ist, dann darf das Feld in Spalte A nicht leer sein. In der Originaldatei laufen beim Öffnen einige Makros, die Formeln in Spalten ausfüllen und nur so weit ausfüllen, wie in der Spalte A etwas steht. Wenn dort nicht steht, hält das automatische Ausfüllen der Formeln an und zerschießt mir meine Tabelle... Manchmal haben dann auch die Sortierungen Probleme.
    Was kann ich dagegen tun? Vor dem Speichern der Datei müsste dann eine Warnmeldung kommen und das Speichern auf jeden Fall verhindern oder einfach die Felder mit einem Dummy z.B. "Dummy" belegen und dann speichern, damit bei dem nächsten Öffnen gewährleistet ist, dass da alles funktioniert. Beim erneuten Öffnen müsste dann ein Infofenster kommen mit dem Inhalt: "In der/den Zeile(n) ... Spalte A wurde(n) Dummy(s) erstellt."

    Kann mir jemand helfen? Oder kann man das Problem auch anders lösen?
    Vielen Dank für die Hilfe
    LG
    max
     
    maxseidel, 14. August 2008
    #1
  2. schatzi Super-Moderator
    Hallo!

    Es gibt das Workbook_BeforeSave-Ereignis, welches ins Modul "DieseArbeitsmappe" gehört.
    Damit kannst du ungewolltes Speichern verhindern.
    Code:
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If Sheets("Tabelle1").Range("A2") = "" Then
    MsgBox "In A2 fehlt ein Eintrag! Der Speichervorgang wird abgebrochen."
    Cancel = True
    End If
    End Sub
    
    Die If-Abfrage ist hier natürlich nur beispielhaft.
    In deinem Fall gehört da eher eine Schleife rein, die die Zeilen des benutzten Bereichs abklappert und auf Inhalte prüft.
     
    schatzi, 14. August 2008
    #2
  3. maxseidel Erfahrener User
    Erst einmal ganz vielen Dank.
    Ich habe versucht, diesen Code anzupassen.
    Folgendes habe ich gemacht:

    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    With Sheets("Tabelle1")
    For i = 2 To 15
    If .Cells(i, 1) = "" & (.Cells(i, 5) > 0 Or .Cells(i, 6) > 0 Or .Cells(i, 7) > 0) Then
    MsgBox "In Spalte A Zeile " & i & " fehlt ein Eintrag! Der Speichervorgang wird abgebrochen."
    End If
    Next i
    End With
    Cancel = True
    End Sub

    Es funktioniert nicht. Bitte HILFE. Danke
    LG
     
    maxseidel, 14. August 2008
    #3
  4. schatzi Super-Moderator

    Wenn bestimmtes Feld leer, dann nicht speichern

    Hallo!

    Zum einen hast Zeilen und Spalten vertauscht, zum anderen ist "&" nun wirklich kein logischer Operator...

    If .Cells(i, 1) = "" And (.Cells(i, 5) > 0 Or .Cells(i, 6) > 0 Or .Cells(i, 7) > 0) Then
     
    schatzi, 14. August 2008
    #4
  5. maxseidel Erfahrener User
    Oh man ich danke dir...., es war wohl wirklich schon etwas spät gestern...

    Jetzt nur noch eine kleine Frage:
    Da es sich bei meiner Originaltabelle in den Spalten, die hier E, F, G darstellen, nicht nur Zahlen um Zahlen sondern auch um Text handelt, wäre es besser, wenn ich die IF-Bedingung nicht mit ">0" mache, sondern mit "ist nicht leer".
    Kannst du mir sagen, wie dafür die Syntax in VBA lautet?

    Nochmals ganz vielen Dank und LG
     
    maxseidel, 15. August 2008
    #5
  6. miriki Erfahrener User
    Das einfachste dürfte sein, alles, auch die Zahlen, als String zu behandeln und auf "nicht leerer String" zu testen. Die kürzeste Syntax müßte sein:
    Code:
    cells(y,x) <> ""
    Falls das mal in Fehlermeldungen oder merkwürdige Funktionalität ausartet, würde ich empfehlen:
    Code:
    trim$(cells(y,x).value & " ") <> ""
    Das erzwingt ein Cast auf String, weil ein Leerzeichen angehängt wird. Und es verhindert Fehlermeldungen bei Null-Werten, weil der String mindestens aus dem Leerzeichen besteht. Das trim() entfernt es eh gleich wieder. Außerdem ist hier explizit die "value"-Eigenschaft der Zelle angesprochen. Nur, falls Microsoft mal einmfallen sollte, die Fontfarbe als Default-Eigenschaft festzulegen... ;-)

    Gruß, Michael
     
Thema:

Wenn bestimmtes Feld leer, dann nicht speichern

Die Seite wird geladen...
  1. Wenn bestimmtes Feld leer, dann nicht speichern - Similar Threads - bestimmtes Feld speichern

  2. Mehrere Abfragen mit gleichen Kriterien in bestimmten Felder

    in Microsoft Access Hilfe
    Mehrere Abfragen mit gleichen Kriterien in bestimmten Felder: Ich habe so ca. 30 Abfragen mit jeweils den Feldern "Vertriebsstellen" und "Austritt". In den 30 Abfragen sind jeweils zwei Kriterien. Nun muss ich in den Abfragen immer in dem Feld...
  3. Berechnung verschiedener Felder unter bestimmten Bedingungen

    in Microsoft Excel Hilfe
    Berechnung verschiedener Felder unter bestimmten Bedingungen: Hallo, Ich habe wieder ein Problem mit meiner Tabelle über Lieferantenpreise. Und zwar gibt es eine Spalte für Preis frei Bau (also wenn der Lieferant selber liefert), dann den Preis ab Werk....
  4. Bestimmte Felder direkt aktualisieren

    in Microsoft Access Hilfe
    Bestimmte Felder direkt aktualisieren: Guten Morgen und ein frohes neues Jahr, ich habe folgendes Problem: Es gibt eine TeilnehmerInnen-Datenbank für Ferienmaßnahmen. Im Hauptformular habe ich alle Daten zu den einzelnen...
  5. Nach Aktualisierung in bestimmtes Feld springen und einfügen

    in Microsoft Access Hilfe
    Nach Aktualisierung in bestimmtes Feld springen und einfügen: Hallo, brauche Hilfe, Zur Beschreibung: Ich scanne mittels Handscanner ein Label mit 8 Barcodes.Da der Scanner aber nicht immer den richtigen Barcode erwischt, habe ich mir ein Feld angelegt in...
  6. Abfrage Feld von links bis zu einer bestimmten Markierung auslesen

    in Microsoft Access Hilfe
    Abfrage Feld von links bis zu einer bestimmten Markierung auslesen: Guten Tag zusammen ich bin an einer Abfrage am basteln. Ich möchte widerholende Werte gruppieren die aber in der gesamten Länge sich doch unterscheiden. BSP: Titel Akte X S03E23 - Ferngesteuert...
  7. Daten in bestimmtes Feld in Access Formular

    in Microsoft Access Hilfe
    Daten in bestimmtes Feld in Access Formular: Hallo, ich möchte eingescannte Daten über eine Software via Javascript in ein bestimmtes Feld in Access schreiben. Das Schreiben in eine bestimmte Tabelle ist mir klar und über ein normales...
  8. bestimmte Felder nach Eingabe einer Zahl, in einer bestimmten Zelle, ausfüllen

    in Microsoft Excel Hilfe
    bestimmte Felder nach Eingabe einer Zahl, in einer bestimmten Zelle, ausfüllen: Hallo, ich habe eine Tabelle zur Prüfung von Meldern einer Brandmeldeanlage. Da jede Brandmeldeanlage unterschiedliche Konfigurationen und dadurch andere Anzahl an Meldern in einer Gruppe hat,...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden