Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1116to1120
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

Eintrag erzwingen mit Intersec

Eintrag erzwingen mit Intersec
Franz
Hallo Freunde,
Habe die Intersec-Methode noch nicht verstanden. Wo ist hier der Denkfehler? Möchte in einem Bereich doch stehen bleiben wo nur leere Felder sind. Dies sollte sich solange wiederholen bis die alle Pflichfelder gefüllt sind. Momentan bleibt der Cursor überall stehen.
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
'"$A$1:$C$14" muss logischerweise vorher mit Dummies gefüllt sein
Dim iSect As Range, C As Range
Set iSect = Intersect(Target, Range("$A$1:$C$14"))
On Error GoTo Errorhandler
If Not iSect Is Nothing Then
For Each C In Range("$A$1:$C$14")
If IsEmpty(C) Then
Application.EnableEvents = False
Target.Activate
MsgBox (Target.Address)
Exit For
End If
Next C
End If
Errorhandler:
Application.EnableEvents = True
End Sub
Kann ich auf eure Hilfe zählen?
Gruß
Franz D.

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: C.Activate
15.11.2009 16:37:11
Daniel
nicht Target.Activate
Gruß, Daniel
AW: Merci Daniel - o.T.
15.11.2009 17:00:51
Franz
.
AW: C.Activate Nachtrag
15.11.2009 18:22:12
Franz
Hallo Daniel!
Würde gerne noch in einer Zeile die Felder "aufsteigend" absichern. Habe "unser" Code etwas geändert wie folgt:
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
'"A1:E1" muss logisch vorher mit einige Dummies gefüllt sein
Dim iSect As Range, C As Range
Set iSect = Intersect(Target, Range("A1:E1"))
On Error GoTo Errorhandler
If Not iSect Is Nothing Then
For Each C In Range("A1:E1")
Application.EnableEvents = False
If IsEmpty(C) Then
C.Activate
Application.StatusBar = Target.Address & " muss zuerst ergänzt werden!"
'MsgBox (Target.Address & " muss zuerst ergänzt werden!")
End If
Application.EnableEvents = True
Next C
End If
Errorhandler:
Application.EnableEvents = True
End Sub

Anstelle das 1.leere Feld anzuspringen reagiert die SUb "rückwärts"? Ich krieg's nicht hin dass er nacheinander sauber prüft. Kannst du mir (oder wer auch immer) noch helfen?
Franz D.
Anzeige
AW: C.Activate Nachtrag
15.11.2009 20:20:11
Daniel
HI
so ganz verstehe ich noch nicht, was du willst.
gruß, Daniel
AW: C.Activate Nachtrag
15.11.2009 21:19:37
Franz
Hallo Daniel.
Die Überwachung soll sukzessiv sämtliche Einträge von links nach rechts nacheinander auf "isempty" überprüfen. In der jetzigen SUB fängt es (bei mir) bei E1 an anstelle von A1 an.
Beispiel in Range("A1:E1")): A1("28.02.09", "B1(""), C1("etwas"), D1(800,00), E1("").
Der Cursor soll bei einem Inhalt "" den user zwingen eine Angabe zu machen bevor er weiter nach rechts springen darf. Hast du eine idee?. Danach bin ich wahrscheinlicher schlauer sein mit was die Change und selection_change Gutes tun können.
Tschüss!
Franz D.
Anzeige
AW: C.Activate Nachtrag
15.11.2009 22:58:48
Daniel
Hi
probiers mal so:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Static rng As Range
Dim check As Boolean
If Not rng Is Nothing Then
If rng.Cells.Count = 1 Then
If rng.Value = "" Then
check = True
Application.EnableEvents = False
rng.Select
Application.EnableEvents = True
MsgBox "Bitte Wert eingeben in Zelle " & rng.Address(0, 0)
End If
End If
End If
If Not check Then Set rng = Target
End Sub

Gruß, Daniel
AW: C.Activate Nachtrag
16.11.2009 19:12:26
Franz
Hallo Daniel,
Nicht schlecht! Die Prozedur zwingt mich sauber von links nach rechts . Wie bekomme ich aber die Navigation nur innerhalb eines Range("A1:E1") oder auch "C8:G8" als Beispiel? Habe es mit einem Set rng=range("C8:G8") probiert, irgendwie geht es nicht. Kannst du dies noch ermöglichen (gerne auch ein anwesender Profi) ?
MfG
Franz D.
Anzeige
AW: C.Activate Nachtrag
16.11.2009 21:42:48
Daniel
HI
das würde ich mal so versuchen:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Static rng As Range
Dim check As Boolean
if target.Cells.count = 1 and Not Intersect(Target, Range("C8:G8")) Is Nothing Then
If Not rng Is Nothing Then
If rng.Cells.Count = 1 Then
If rng.Value = "" Then
check = True
Application.EnableEvents = False
rng.Select
Application.EnableEvents = True
MsgBox "Bitte Wert eingeben in Zelle " & rng.Address(0, 0)
End If
End If
End If
end if
If Not check Then Set rng = Target
End Sub
Gruß, Daniel
ps nicht getestet
Anzeige
AW: C.Activate Nachtrag
17.11.2009 19:20:38
Franz
Hallo Daniel,
Danke schön für die vielen Bemühungen. Muss an der Prozedur noch etwas arbeiten. Ich hoffe ich packe es.
Tschüss!
Franz D.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige