Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1236to1240
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
Inhaltsverzeichnis

Pflichtfelder

Pflichtfelder
Markus
Hallo zusammen
Kann mir bitte jemand helfen.
Folgender VBA-Code funktioniert nur auf der 3 Zeile. Ich möchte aber gerne, dass der Code auf der gesammten Tabelle funktioniert:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim hinweis
' cells(Zeile, Spalte)
If Cells(3, 1)  "" And Cells(3, 13) = "" Then
hinweis = MsgBox("Bitte Pflichtfelder ausfüllen!", vbCritical)
Cells(3, 13).Select
Exit Sub
ElseIf Cells(3, 9)  "" And Cells(3, 10) = "" Then
hinweis = MsgBox("Bitte Pflichtfelder ausfüllen!", vbCritical)
Cells(3, 10).Select
Exit Sub
End If
End Sub
Wenn ich den Code wie folgt ändere, funktioniert auch die 4. Zeile
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim hinweis
' cells(Zeile, Spalte)
If Cells(3+1, 1)  "" And Cells(3+1, 13) = "" Then
hinweis = MsgBox("Bitte Pflichtfelder ausfüllen!", vbCritical)
Cells(3+1, 13).Select
Exit Sub
ElseIf Cells(3+1, 9)  "" And Cells(3+1, 10) = "" Then
hinweis = MsgBox("Bitte Pflichtfelder ausfüllen!", vbCritical)
Cells(3+1, 10).Select
Exit Sub
End If
End Sub
Was muss ich eingeben, dass dieser Code Zeile für Zeile funktioniert?
Gruss Markus

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Pflichtfelder
06.11.2011 20:18:54
Matthias
Hallo
Wieso eigentlich
Cells(3+1, 1)
statt gleich
Cells(4, 1) ;o)
Vielleicht meinst Du ja die garade aktive Zeile?
Cells(ActiveCell.Row, 1) ... usw.
Gruß Matthias
AW: Pflichtfelder
06.11.2011 20:35:27
Markus
Hallo Matthias
Dein Vorschlag mit der "aktiven Zeile", hört sich sehr gut an.
Wie müsste der Code geändert werden ?
Gruss Markus
na überall die Zeile bei Cells() ändern
06.11.2011 20:48:50
Matthias
Hallo
Na ich würde denken, das wenn Du wirklich die aktive Zeile meinst so:
    Dim hinweis
' cells(Zeile, Spalte)
If Cells(ActiveCell.Row, 1)  "" And Cells(ActiveCell.Row, 13) = "" Then
hinweis = MsgBox("Bitte Pflichtfelder ausfüllen!", vbCritical)
Cells(ActiveCell.Row, 13).Select
Exit Sub
ElseIf Cells(ActiveCell.Row, 9)  "" And Cells(ActiveCell.Row, 10) = "" Then
hinweis = MsgBox("Bitte Pflichtfelder ausfüllen!", vbCritical)
Cells(ActiveCell.Row, 10).Select
Exit Sub
End If
Gruß Matthias
Anzeige
AW: Pflichtfelder
06.11.2011 20:59:52
{Boris}
Hi Markus,
Dein Vorschlag mit der "aktiven Zeile", hört sich sehr gut an.
Welche Zeile beim Speichern der Mappe aktiv ist, bestimmt der User doch in der Regel selbst. Und das muss noch längst nicht die zu prüfende Zeile sein...
Für ne saubere Logikprüfung bedarfs imho noch ein paar mehr Angaben zu Deiner Mappe.
Grüße Boris
AW: Pflichtfelder
06.11.2011 21:17:01
Markus
Hallo Matthias + Boris
Ich habe anbei die Datei hochgeladen:
https://www.herber.de/bbs/user/77388.xlsm
Der Vorschlag von Matthias ist gut und recht, sobald aber der User die Zeile vor dem Speichern wechselt nützt alles nix.
Erläuterung zum Vorhaben:
Sobald ein User in der Spalte A ewtas reinschreibt, muss auch in der Spalte M was stehen. (1.1 + 1.2)
Ebenso bei einem Eintrag in Spalte I dann ist eben in der Spalte J die Pflicheingabe. (2.1 + 2.2)
Die Vorgabe sollte eben auf die gesammte Tabelle funktionieren.
Gruss Markus
Anzeige
AW: Pflichtfelder
06.11.2011 21:30:00
Markus
oder
Könnte man beim Vorschlag von Matthias nicht einen Zeilenwechsel unterbinden, solange die Pflichtfelder nicht ausgefüllt sind ?
Gruss Markus
AW: Pflichtfelder
06.11.2011 23:32:20
hary
Hallo Markus
versuch mal.
https://www.herber.de/bbs/user/77390.xlsm
gruss hary

Private Sub Worksheet_Change(ByVal Target As Range)
Dim hinweis
If Target.Count > 1 Then Exit Sub
If Target.Column = 1 Or Target.Column = 9 Then
Select Case Target.Column
Case 1:
If Target  "" Then
hinweis = MsgBox("Bitte Pflichtfelder ausfüllen!", vbInformation)
Cells(Target.Row, 13).Select
a = 13
b = Target.Row
Exit Sub
End If
Case 9:
If Target  "" Then
hinweis = MsgBox("Bitte Pflichtfelder ausfüllen!", vbInformation)
Cells(Target.Row, 10).Select
a = 10
b = Target.Row
Exit Sub
End If
End Select
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If a = 0 And b = 0 Then Exit Sub
If Cells(b, a) = "" Then
Cells(b, a).Select
End If
End Sub

Anzeige
AW: Pflichtfelder
07.11.2011 02:28:29
Markus
Hallo Hary
Es Klappt, Super !
Kann man noch einbauen, dass die zu beschreibene Zelle rot eingefärbt wird.
Wenn es aber zu umständlich ist, kann ich sehr gut mit dieser Lösung leben. Man kann ja machen was man will, der Cursor bewegt sich ja nicht vom Fleck.
Gruss Markus
AW: Pflichtfelder rot
07.11.2011 04:29:34
hary
Hallo Markus
Dann so. Code noch gekuerzt.
https://www.herber.de/bbs/user/77391.xlsm
gruss hary

Private Sub Worksheet_Change(ByVal Target As Range)
Dim hinweis
If Target.Count > 1 Then Exit Sub
If Target.Column = 1 Or Target.Column = 9 Then
If Target  "" Then
Select Case Target.Column
Case 1:
a = 13
b = Target.Row
Case 9:
a = 10
b = Target.Row
End Select
hinweis = MsgBox("Bitte Pflichtfelder ausfüllen!", vbInformation)
Cells(b, a).Select
Cells(b, a).Interior.Color = vbRed
End If
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If a = 0 And b = 0 Then Exit Sub
If Cells(b, a) = "" Then
Cells(b, a).Select
Else
Cells(b, a).Interior.Color = xlNone
End If
End Sub

Anzeige
Problem gelöst, Danke
07.11.2011 06:12:52
Markus
Vielen Dank

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige