Anzeige
Archiv - Navigation
1296to1300
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

Excel Formular: Zelle nicht verlassbar wenn....

Excel Formular: Zelle nicht verlassbar wenn....
28.01.2013 11:12:00
Pascal
Guten Tag!
Ich habe eine Excel-Arbeitsmappe als Formular erstellt. D.h. die ganze Arbeitsmappe ist - bis auf einige wenige Felder, die vom User ausgefüllt werden müssen - geschützt.
Nun möchte ich folgendes ergänzen / programmieren / einrichten:
Ich möchte, dass wenn der User in den Zellen A19 bis A200 etwas reinschreibt, er die aktive Zeile solange nicht verlassen kann, bis auch die Zellen C; D; E; gefüllt sind (in den Zellen C; D; E; kann der User die Werte aus Dropdownliste auswählen).
Beispiel:
User schreibt in Zelle A19 "Hallo" rein.
Er kann kann nun die Zeile 19 solange nicht verlassen, bis er in den Spalten C; D; E; auch eine Auswahl aus der Dropdownliste gewählt hat.
Auf diese Weise soll sichergestellt sein, dass der User vor dem Erfassen des nächsten Datensatzes zuerst den aktuellen Datensatz korrekt, vollständig erfasst.
Die Dateneingabe erfolgt (zumindst bisher) direkt in Excel und nicht über eine UserForm.
Geht das irgendwie ? Besten Dank für die Tips !

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel Formular: Zelle nicht verlassbar wenn....
30.01.2013 14:36:18
fcs
Hallo Pascal,
hier ein entsprechendes Makro, dass die Prüfung durchführt und ggf. die 1. nicht ausgefüllte Zelle selektiert, wenn die Zeile gewechselt wird.
Gruß
Franz
'Erstellt unter Excel 2010
'Code im Modul der Tabelle in der die Eingaben überwacht werden sollen
Private lngLastRow As Long 'Merker für zuletzt selektierte Zeile
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim bolNeueZeile As Boolean
If lngLastRow = 0 Then
lngLastRow = Target.Row
Else
'Prüfen ob in letzter Zeile alle Muss-Spalten ausgefüllt oder leer
If (Cells(lngLastRow, 1).Text & Cells(lngLastRow, 3).Text & _
Cells(lngLastRow, 4).Text & Cells(lngLastRow, 5).Text = "") _
Or _
(Cells(lngLastRow, 1).Value  "" And Cells(lngLastRow, 3).Value  "" And _
Cells(lngLastRow, 4).Value  "" And Cells(lngLastRow, 5).Value  "") _
Then
bolNeueZeile = True
Else
bolNeueZeile = False
End If
Select Case lngLastRow
Case 19 To 200
If bolNeueZeile = True Then
lngLastRow = Target.Row
Else
If Target.Row  lngLastRow Then
Call prcSelectEmpty(Zeile:=lngLastRow, varSpalten:=Array(1, 3, 4, 5), bolMsg:=True)
End If
End If
Case Else
If bolNeueZeile = False Then
Call prcSelectEmpty(Zeile:=lngLastRow, varSpalten:=Array(1, 3, 4, 5), bolMsg:=True)
Else
lngLastRow = Target.Row
End If
End Select 'lngLastRow
End If
End Sub
Public Sub prcSelectEmpty(ByVal Zeile As Long, varSpalten, Optional bolMsg As Boolean)
'Leere Zelle in Zeile selektieren
'varSpalten = Array mit den Nummer(n) der auszufüllenden Spalten
Dim intI As Integer, strMsg As String, strText As String
If bolMsg = True Then
'Spalten für Meldtext zusammenstellen
For intI = 0 To UBound(varSpalten)
strText = ActiveSheet.Cells(Zeile, varSpalten(intI)).Address(ReferenceStyle:=xlA1)
strText = Mid(strText, 2, InStr(2, strText, "$") - 2)
strMsg = strMsg & IIf(strMsg = "", "", ", ") & strText
Next
strMsg = "Bitte erst die Zellen in den Spalten " & vbLf _
& strMsg & vbLf _
& "in Zeile " & lngLastRow & " vollständig ausfüllen!"
MsgBox strMsg, vbInformation + vbOKOnly, "Prüfung Eingaben"
End If
Application.EnableEvents = False
For intI = 0 To UBound(varSpalten)
With ActiveSheet.Cells(Zeile, varSpalten(intI))
If .Value = "" Then
.Select
Exit For
End If
End With
Next
Application.EnableEvents = True
End Sub

Anzeige
AW: Excel Formular: Zelle nicht verlassbar wenn....
30.01.2013 14:47:29
Pascal
hallo Franz
besten Dank für den tollen code
ich werde mir diesen gleich mal testen und näher anschauen.
Pascal

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige