VBA von leer Zelle zur nächsten leeren Zelle

Hallo
Ich brauche Eure Hilfe.
Ich arbeite mit Excel 2010, Windows 7
In einem geschützten Tabelleblatt, kann der Anwender nicht gesperrte Zellen füllen, danach werden diese gesperrt.Das geschieht durch VBA. Nun aber der Knackpunkt, wenn der Anwender auf eine gesperrte Zelle klickt springt der Cursor in die Zelle D1(Zeile 1 Autofilter aktiviert), das soll er aber nicht, er sollte in die nächste un-gesperrte Zelle springen.Gibt es da eine Möglichkeit, das in den Code einzubauen?

Für Eure Hilfe möchte ich mich im Voraus schon bedanken.
Viele Grüße Susanne

gesperrte Zellen füllen, danach werden diese gesperrt.Das
geschieht durch VBA.

Hallo Susanne,

zeige bitte den/die Code(s) oder am besten eine Beispielmappe.

Gruß
Reinhard

Hallo Reinhard
Hier der Code

Option Explicit

'DieseArbeitsmappe
Private Sub Workbook_Open()
Dim wks As Worksheet
For Each wks In Worksheets
Select Case wks.Name
Case „Tabelle1“
Range(„A65536“).End(xlUp).Offset(1, 0).Select

wks.Protect Password:=„ABC“, Userinterfaceonly:=True, AllowFiltering:=True
Case Else
End Select
Next wks
End Sub

Sub AutoFilterEinschalten()
Sheets(„Tabelle1“).Activate
If ActiveSheet.AutoFilterMode Then Exit Sub
Range(„A1“).AutoFilter
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Select Case Sh.Name
Case „Tabelle1“
If Not IsEmpty(Target) Then
Application.EnableEvents = False
Sh.Cells(xlCellTypeBlanks).Cells(1).Select
Application.EnableEvents = True

End If
Case Else
End Select
End Sub

'Allgemeines Modul
Sub Schutz()
Select Case ActiveSheet.Name
Case „Tabelle1“
With ActiveSheet
.Protect Password:=„ABC“, Userinterfaceonly:=True
.Cells.Locked = False
.Cells.SpecialCells(xlCellTypeConstants, 23).Locked = True
End With
Case Else
End Select

End Sub

Ich hoffe Du findest meinen Fehler.
Erstmal vielen Dank fürs antworten!!!

Hier der Code

Hallo Susanne,

eine aussagekräftige Beispielmappe kannste nicht hochladen?
Dazu dann die Anleitung was ich tun muß um das was du bemängest auch
zu erreichen.
Z.B. so, gib mal in Zelle xyz die Zahl oder den Text xyz ein,
dann starte „Schutz“. Dann wird Zelle abc angehüpft, ich will aber
daß Zelle gzsz anesprungen wird.

Gruß
Reinhard

Hallo Reinhard
die Tabelle funktioniert schon wie sie soll.Nur wenn der Anwender eine gesperrte Zelle anklickt, dann springt der Cursor nach D1, also nach oben. Warum der ausgerechnet nach D1 springt weiß ich nicht. Es wäre ideal, wenn der Cursor zur nächsten leeren Zeile springen würde. Oder eben in die eine leer Zelle. Mit dem Hochladen weiß ich nicht man das macht.
Vielen Dank
Susanne

Mit dem Hochladen weiß ich nicht man das macht.

Hallo Susanne,

das weißt du noch nicht :smile:
Klicke auf den Link zu file-upload… in FAQ:2606
Lade dann dort hoch.

Gruß
Reinhard

Hallo Reinhard,
brauchte bis jetzt noch nichts hochladen, aber irgendwann ist immer das erste mal. Ich glaube mein Excel spinnt manchmal,als ich die Tabelle nochmal ausprobiert habe, kam nach einem doppel Klick die Box Zelle ist gesperrt blabla. Das Problem mit einem klick auf die gesperrte Zelle bleibt aber der Cursor wandert in die Zelle D1, er soll wenn möglich in die nächste freie Zelle springen und/oder gesperrte Zellen überspringen.
Also unten der Link zur meiner Testtabelle.
Viele Grüße
Susanne

http://www.file-upload.net/download-7138863/Testtabe…

Hallo Susanne,

als ich die Tabelle nochmal ausprobiert habe, kam nach einem
doppel Klick die Box Zelle ist gesperrt blabla.

kann ich nicht nachstellen.

Das Problem
mit einem klick auf die gesperrte Zelle bleibt aber der Cursor
wandert in die Zelle D1, er soll wenn möglich in die nächste
freie Zelle springen und/oder gesperrte Zellen überspringen.
http://www.file-upload.net/download-7138863/Testtabe…

In der Prozedur Workbook_SheetSelectionChange hast du die Zeile:
Sh.Cells(xlCellTypeBlanks).Cells(1).Select
daher kommt das mit D1.

Sh ist Tabelle1
.Cells(xlCellTypeBlanks) ist in Sh die vierte Zelle also D1.
Diese Zeile ist gleichwertig:
.Cells(4)

Aus diesem „Zellbereich“ D1:smiley:1 nimmst du jetzt die erste Zelle mit
.cells(1)
ergo D1.

Besser wäre diese Zeile:
Sh.Cells.SpecialCells(xlCellTypeBlanks).Cells(1).Select

Sh.Cells.SpecialCells(xlCellTypeBlanks)
Das stellt in Sh.Cells alle leeren Zellen dar. Mit .Cells(1)
beziehst du dich auf die erste Zelle in der Liste der leeren Zellen.
Das ist schon eher das was du willst.

Ich habe das nun verbessert, man/frau arbeitet ja in Excel von links
nach rechts und oben nach unten. Im nachfolgenden Code wird nicht mehr
nach D1 gehüpft sondern in die erste leere Zelle deren Adresse größer
ist als die mit der Maus angeklickte.

Specialcells hat eine eigenwillige Reihenfolge in solchen „Listen“.
Mach das Hochkomma vor
MsgBox Sh.Cells.SpecialCells(xlCellTypeBlanks).Address
weg, dann siehst du wenn du genau in de Msgbox schaust nach welcher
Logik/Reihenfolge Excel prüft welche Zelladresse in der Msgbox
größer als die angeklickte Zelle ist.

Sag Beschedid wenn du eine andere Reihenfolge willst.
Beispiel, du hast C4 angeklickt. C4 ist nicht leer.
Dann kann man das so machen daß erst in Zeile 5 bis R5
geprüft wird ob da eine leere Zelle ist.

Wenn nicht wird A6:R6 geprüft, dann A7:R7 usw.

Übrigens, du hattest mal bis rechts zu Spalte S was stehen.
Ich habe Spalten S:IV gelöscht.
Sonst wäre S1 die Zelle die wie D1 immer angehüpft wird.
Also markiere auch S:IV, Rechtsklick, Zellen löschen.

Gruß
Reinhard

Private Sub Workbook\_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim Zelle As Range, Zei As Long, Spa As Long
Select Case Sh.Name
 Case "Tabelle1"
 If Not IsEmpty(Target) Then
 Application.EnableEvents = False
 For Each Zelle In Sh.Cells.SpecialCells(xlCellTypeBlanks)
 If Zelle.Address(0, 0) \> Target.Address(0, 0) Then
 Application.EnableEvents = False
 'MsgBox Sh.Cells.SpecialCells(xlCellTypeBlanks).Address
 Zelle.Select
 Application.EnableEvents = True
 Exit Sub
 End If
 Next Zelle
 Application.EnableEvents = True
 End If
 Case Else
End Select
End Sub

Hallo Reinhard,

Entschuldige, das ich mich erst jetzt melde.
Ich habe das Makro mit Deiner Änderung ausprobiert. Ist sehr nah dran an dem wie ich es brauche. Könntest Du mir helfen das erst in der Zeile, in der ich eine gesperrte Zelle anklicken nach der erste leer Zelle gesucht wird? Und kannst Du mir vielleicht noch zeigen,wie ich eine Spalte ganz frei geben kann,trotz Makro.Leider habe ich festgestellt das in der einen Spalte sagen wir Spalte „L“ zweimal geändert werden muss.
Aber erstmal herzlichen Dank für die schon gegebene Antwort.
Viele Grüße
Susanne

Hallo Susanne,

Könntest Du mir helfen das
erst in der Zeile, in der ich eine gesperrte Zelle anklicken
nach der erste leer Zelle gesucht wird?

Nachfrage, deine Tabelle hat den Zellbereich A1:R1000.
Jmd. klickt in Zelle D5 die Zellinhalt hat.
Dann soll erst E5:R5 auf die nächste leere Zeile überprüft werden,
wird keine gefunden dann A6:R6, dann A7:R7 usw.
Ist das richtig so?

Und kannst Du mir
vielleicht noch zeigen,wie ich eine Spalte ganz frei geben
kann,trotz Makro.
Leider habe ich festgestellt das in der einen
Spalte sagen wir Spalte „L“ zweimal geändert werden muss.

? Das mußte mir nochmal verklickern. Gesperrte Zellen entsperren in
einer Zeile?

Gruß
Reinhard

Hallo Reinhard

Könntest Du mir helfen das
erst in der Zeile, in der ich eine gesperrte Zelle anklicken
nach der erste leer Zelle gesucht wird?

Nachfrage, deine Tabelle hat den Zellbereich A1:R1000.
Jmd. klickt in Zelle D5 die Zellinhalt hat.
Dann soll erst E5:R5 auf die nächste leere Zeile überprüft
werden,
wird keine gefunden dann A6:R6, dann A7:R7 usw.
Ist das richtig so?

ja genauso wäre schön.

Und kannst Du mir
vielleicht noch zeigen,wie ich eine Spalte ganz frei geben
kann,trotz Makro.
Leider habe ich festgestellt das in der einen
Spalte sagen wir Spalte „L“ zweimal geändert werden muss.

? Das mußte mir nochmal verklickern. Gesperrte Zellen
entsperren in
einer Zeile?

Nein es müsste die Spalte ganz freigegeben sein, weil ich trage einen Wert ein und der nächste muss, den Wert ändern, wenn dieser nicht erreicht wurde.Also eine Spalte muss wieder freigegeben sein. Ist das möglich?

Gruß

Susanne

Hallo,
bekomme mein Problem leider selber nicht in den Griff.
Kann denn keiner helfen?
L.G.
Susanne

Danke für die Hilfe
Susanne