Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1964to1968
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

Blattschutz per VBA funktioniert nich timmer

Blattschutz per VBA funktioniert nich timmer
09.02.2024 15:34:04
MiGuLa
Hallo Zusammen,

habe ein winziges Problem,
per Inputbox suche ich in einem geschützten Blatt nach Übereinstimmung bei der Seminarnummer,
klappt auch wunderbar - ein Thema habe ich aber und verstehhe es nicht, vielleicht kann mir Jemand helfen - ist bestimmt nur eine Kleinigkeit.

Das Blatt ist geschützt, nach Commandbutton funktioniert die Entsperrung, Suche funktioniert - alles Tutti,
das Problem:ist der gesuchte Wert in der Liste vorhanden wird die Zelle angesprungen (soll sie auch) der Blattschutz aber nicht wieder eingeschaltet,
wenn die Suche nicht übereinstimmt bleibt der Schutz drin, MSG-Box funktioniert alles cool - nur der Schutz bei Übereinstimmung nicht.

Hier mein Code:

Sub AA_SeminarSuchen()

ActiveSheet.Unprotect

Dim wks As Worksheet

Dim rng As Range
Dim sAddress As String, sFind As String
sFind = InputBox("Seminarnummer suchen")
For Each wks In Sheets(Array("Seminarliste")) 'Worksheets
Set rng = wks.Cells.Find(what:=("*" & sFind & "*"), lookat:=xlWhole, LookIn:=xlFormulas)
If Not rng Is Nothing Then
sAddress = rng.Address
Do
Application.Goto rng, False
'If MsgBox(prompt:="Weiter", Buttons:=vbYesNo + vbQuestion) = vbNo Then Exit Sub
'Set rng = Cells.FindNext(after:=ActiveCell)
If rng.Address = sAddress Then Exit Sub 'Do
Loop
End If
Next wks

MsgBox prompt:=("Seminarnummer nicht gefunden!")

ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
True, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True, AllowSorting:=False, AllowFiltering:=False

End Sub


Kann mir jemand auf die Spruenge helfen - waere cool, ist sicher nur eine Kleinigkeit

VG Micha

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Blattschutz per VBA funktioniert nich timmer
09.02.2024 15:40:50
Piet
Hallo

höfliche Frage, warum beim Suchen Blattschutz??? Schmeiss den doch komplett raus.
Die Suche funktioniert OHNE Blattschutz, es sei denn, du willst gefundenen Zellen ändern!
Dann musst du den Blattschutz danach wieder manuell aktivieren, z.B. über einen Button.

mfg Piet
AW: Blattschutz per VBA funktioniert nicht immer
09.02.2024 19:47:09
Uduuh
Hallo,
wozu hebst du den Blattschutz auf? Suche funktioniert doch auch mit Blattschutz.

Gruß aus'm Pott
Udo
AW: Blattschutz per VBA funktioniert nich timmer
09.02.2024 21:49:36
Piet
Hallo

ich weiss ja nicht, warum du dir selbst das Leben so schwer machst?? Ein unnötig verwirrender Code.
Du durchsuchst mit wks Sheet Arrays, obwohl es nur ein einziges Sheet "Seminarliste" gibt. Wozu ist das gut???
Nach rng Find kommt eine Do Loop Schleife, die völlig sinnlos ist. Da wird nichts gezählt, aufgelistet, ausgewertet!!
Wozu ist die dann bitte gut, ausser einem unnötigen Verwirrspiel, wenn man den Code verstehen will !!??

Ich schicke dir mal zwei Versionen, die erste kann man noch mehr abspecken, und bitte KEIN Aussprung mit Exit Sub, wenn du Sheet.Unprotect aktiviert hast! Dann springe bitte zu "Ende:", wo der Blattschutz wieder aktiviert wird!

mfg Piet



'erste Version
Sub AA_SeminarSuchen()
Dim wks As Worksheet, rng As Range
Dim sAddress As String, sFind As String
ActiveSheet.Unprotect

sFind = InputBox("Seminarnummer suchen")
For Each wks In Sheets(Array("Seminarliste")) 'Worksheets
Set rng = wks.Cells.Find(what:=("*" & sFind & "*"), lookat:=xlWhole, LookIn:=xlFormulas)
If Not rng Is Nothing Then
MsgBox prompt:=("Seminarnummer vorhanden!"): GoTo Ende
End If
Next wks

MsgBox prompt:=("Seminarnummer nicht gefunden!")

Ende:
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
True, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True, AllowSorting:=False, AllowFiltering:=False
End Sub

'zweite Version
Sub AA_SeminarSuchen()
Dim wks As Worksheet, rng As Range
Dim sAddress As String, sFind As String
ActiveSheet.Unprotect

sFind = InputBox("Seminarnummer suchen")
For Each wks In Sheets(Array("Seminarliste")) 'Worksheets
Set rng = wks.Cells.Find(what:=("*" & sFind & "*"), lookat:=xlWhole, LookIn:=xlFormulas)
If Not rng Is Nothing Then
sAddress = rng.Address
Do
'If MsgBox(prompt:="Weiter", Buttons:=vbYesNo + vbQuestion) = vbNo Then Exit Sub
Set rng = Cells.FindNext(after:=rng)
If rng.Address = sAddress Then GoTo Ende
Loop
End If
Next wks

MsgBox prompt:=("Seminarnummer nicht gefunden!")

Ende:
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
True, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True, AllowSorting:=False, AllowFiltering:=False

End Sub
Anzeige
AW: Freut mich das es endlich geklappt hat! oWt
10.02.2024 12:13:07
Piet
...
AW: Blattschutz per VBA funktioniert nich timmer
09.02.2024 23:19:08
MiGuLa
Hallo Piet,
muchas Gracias - funzt prima.
Wenn ich ehrlich bin habe ich da wohl mit dem Macrorecorder ein bisserl viel rumgespielt,
ich hatte mal die wirre Idee, das Ziel im Sheet "Seminarliste" mit dem CommandButton zu versehen und das Ziel in einem anderen Sheet anspringen zu wollen,
daher wird das wohl kommen, war mir dann aber doch zu unübersichtlich - bin halt noch am Anfang - aber - es wird, der Anfang hat ja funktioniert, wenn auch "unnötig kompliziert und verwirrend.

Auf jeden - ich danke dir für deine Hilfe, werde mir das mal mit ein bisserl mehr Musse in meinen Kopf bringen, in dem ich den Code wirklich mal durchgehe

Ich danke dir vielmals

VG Micha
Anzeige
AW: Blattschutz per VBA funktioniert nich timmer
10.02.2024 08:58:07
schauan
Hallo Micha,

mal noch zwei Hinweise.

1)
Wenn Du was programmierst, kannst Du auch vorab einen Ablaufplan erstellen, wo Du Dir detailliert Gedanken machst, was in welcher Reihenfolge passieren soll. Das hat mit Programmierkenntnissen einer Sprache wie VBA (fast) noch gar nix zu tun - eher mit Logik. Ist sicher von Vorteil, wenn man zumindest weiß, dass es Schleifen gibt oder dies oder jenes ...
Ob und wie das dann umsetzbar ist, wäre zu schauen.

z.B.

Eingabe eines Suchbegriffs
Suche auf jedem Blatt (--> das geht meist in Richtung einer For-Schleife, wenn man es weiß :-)
Wenn was gefunden wurde, dann
--> mach was,
--> Suche weiter, solange noch was gefunden wird solange ..(--> das könnte in Richtung einer Do - oder While - Schleife gehen, wenn man es weiß :-)
--> mach noch was
wenn nicht, dann
--> mach was anderes
...

2)
Wenn Du was testest, dann nutze auch die schrittweise Makroausführung mit F8. Dann wäre Dir sicher auch aufgefallen, was mein Hinweis zu bedeuten hat :-)
Wenn Du eine Variable gleich einer anderen setzt und durch das Auskommentieren von Code mit der Prüfung auf Gleichheit gleich weiter machst ...

Man kann übrigens auch Haltepunkte setzen, wo ein automatischer Ablauf unterbrochen wird - entweder mit F9 wenn Du mit dem Cursor in einer codezeile bist, oder Du klickst links neben der Codezeile auf den Rahmen vom Modul. Ab der Stelle kannst Du dann z.B. Variablen prüfen, mit F8 im Einzelschritt weiter machen oder im Blatt was prüfen oder was auch immer. Meistens jedenfalls.
Anzeige
Aber nur...
09.02.2024 19:49:39
{Boris}
Hi Udo,

...wenn die Zelle (in den Zellschutzoptionen) nicht ausgeblendet ist. ;-)

VG, Boris
AW: Aber nur...
09.02.2024 19:58:34
Uduuh
Hallo,
hab ich noch nie gemacht.
Kann natürlich auch sein, dass er das Auswählen gesperrter Zellen verboten hat.

Gruß aus'm Pott
Udo
AW: Aber nur...
09.02.2024 20:11:06
{Boris}
Hi Udo,

hab ich noch nie gemacht.

Ich mach das immer dann, wenn in einer Zelle eine (komplexe) Formel steht, die den Anwender am Ende nicht zu interessieren hat bzw. die nur in dem Moment Verwirrung stiftet, wenn man sie in der Bearbeitungsleiste sieht, sobald man die Zelle selektiert.

VG, Boris
AW: Blattschutz per VBA funktioniert nich timmer
09.02.2024 17:02:45
MiGuLa
Die Datei ist offen zugänglich, der ein oder Andere kopiert darin herum, das wrid mit dem Blattschutz verhindert,
kommt ja dann schließlich die entsprechende Meldung.

Die Datei ist aber nicht so geheim, dass Sie nicht geändert werden dürfte, es nervt aber, wenn die Verweise auf andere Inhalte immer wieder weg sind und ich das reparieren muss

VG Micha
Anzeige
AW: Blattschutz per VBA funktioniert nich timmer
09.02.2024 17:05:01
schauan
Hallöchen,

If rng.Address = sAddress Then Exit Sub
AW: Blattschutz per VBA funktioniert nich timmer
09.02.2024 20:58:54
MiGuLa
Aber das habe ich doch drin - und es funzt ja auch das "Do" in Zeile 19 habe ich ausapostrophiert,
habe es jetzt auch mal rausgemacht bringt nix,
der geliche Impact, Suche mit Übereinstimmung, Zelle wird angesprungen, Blattschutz ist raus,
ohne Übereinstimmung kommt der Hinweis "nicht gefunden", Schutz bleibt drin - alles tutti

Tut mir leid, das war es leider nicht, hat noch Jemand eine Idee??

VG Micha

AW: Blattschutz per VBA funktioniert nich timmer
09.02.2024 21:14:35
schauan
Hallöchen,

ja, und das ist das Problem :-(

Du suchst, und wenn Du was gefunden hast, machst Du
sAddress = rng.Address


Dann prüfst Du und verlässt das Sub:
If rng.Address = sAddress Then Exit Sub 


Anzeige
AW: Blattschutz per VBA funktioniert nich timmer
09.02.2024 21:24:47
schauan
... eigentlich müsste dort Exit Do stehen - wenn Du die Schleife wieder aktivierst, im Prinzip so:

'Start Schleife

Do
'Gehe zum Treffer
Application.GoTo rng, False
'mach was
'...
'...
'anschliessend naechsten treffer suchen
Set rng = Cells.FindNext(After:=ActiveCell)
'wenn wir wieder am Ausgangspunkt sind, ist es genug und wir verlassen die Schleife
If rng.Address = strAddress Then Exit Do
'Ende Schleife
Loop

oder die Prüfung müsste ganz entfallen.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige