Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Hilfe beim VBA-Code
#1
Hallo ihr fleißigen Helfer. Durch googlen habe ich einen VBA-Code der es mir ermöglicht eine gesamten Arbeitsmappe zu durchsuchen.
Nun habe ich festgestellt, dass ich dieses Makro nicht in einer geschützten Datei ausführen lässt. Also was macht der hilflose Anwender  Angel. Er googelt erneut und findet die Hilfe ich soll folgendes machen:

ActiveSheet.Unprotect Password:="Test""
Mein Makro
ActiveSheet.Protect Password:="Test" 


Gemacht getan mein Makro sieht dann so aus:
Option Explicit
Public strSuch As String
ActiveSheet.Unprotect Password:="Test""
Sub Suchen_alle_Tabellen()
Dim wks As Worksheet
Dim rng As Range
Dim strAddress As String, strFind As String
Dim oldColor As Integer
strFind = InputBox("Bitte Suchbegriff eingeben:", Application.UserName, strSuch)
If strFind = "" Then Exit Sub
For Each wks In Worksheets
Set rng = wks.Cells.Find(strFind, lookat:=xlPart, LookIn:=xlFormulas)
If Not rng Is Nothing Then
strAddress = rng.Address
Do
Application.GoTo rng, False
oldColor = rng.Interior.ColorIndex
rng.Interior.ColorIndex = 55
If MsgBox("Weiter", vbYesNo + vbQuestion) = vbNo Then GoTo Aufraeumen
rng.Interior.ColorIndex = oldColor
Set rng = Cells.FindNext(After:=ActiveCell)
If rng.Address = strAddress Then Exit Do
Loop
End If
Next wks
strSuch = strFind
MsgBox "Keine weiteren Fundstellen!", False, Application.UserName
Exit Sub
Aufraeumen:
rng.Interior.ColorIndex = oldColor
ActiveSheet.Protect Password:="Test" 
End Sub

Soweit so gut. Das funktioniert leider aber nur halb. 
1.) Der Blattschutz wird entfernt
2.) Das Makro wird ausgeführt und dann wird der Blattschutz leider nicht wieder aktiviert

Was ist falsch bei diesem Code/Vorgehen ??
Bitte helft einem Laien..........
Danke
Antworten Top
#2
Hallo,

ohne den Code gelesen zu haben, die Struktur ist in etwa so:


Code:
sub Suchen()
such = "SuchwortW
for each Sht in sheets
     Sht.UnProtect "123"
     set rng = Sht.cells.find(such, xlValues, xlWhole)
     if not rng is nothing then
'Hier die Codes zum suchen
     endif
     Sht.Protect "123"
next Sht
end sub
Antworten Top
#3
(03.03.2018, 19:31)Fennek schrieb: Hallo,

ohne den Code gelesen zu haben, die Struktur ist in etwa so:


Code:
sub Suchen()
such = "SuchwortW
for each Sht in sheets
    Sht.UnProtect "123"
    set rng = Sht.cells.find(such, xlValues, xlWhole)
    if not rng is nothing then
'Hier die Codes zum suchen
    endif
    Sht.Protect "123"
next Sht
end sub

Hallo Fennek.
Vielen Dank für deine rasche Hilfe. Wenn ich deinen Code bei mir einfüge und ausführe bekomme ich eine Fehlermeldung

Laufzeitfehler "13"
Typen unverträglich.

Mache ich etwas falsch
Antworten Top
#4
Hallo,

der Code ist ein "Gerüst" und so nicht lauffähig. Die notwendigen Änderungen musst du einfügen.


Code:
sub Suchen()
dim Sht as worksheet
such = "Suchwort"
for each Sht in thisworkbook.sheets
    Sht.UnProtect "123"
    set rng = Sht.cells.find(such, xlValues, xlWhole)
    if not rng is nothing then
'Hier die Codes zum suchen
    endif
    Sht.Protect "123"
next Sht
end sub

Außerdem hilft es anzugeben, in welcher Zeile der Fehler aufgetreten ist. Falls du "option explicit" verwendest, müssen alle Variablen dimensioniert werden.

mfg
Antworten Top
#5
Hi,

(03.03.2018, 19:07)schadre schrieb: strSuch = strFind
MsgBox "Keine weiteren Fundstellen!", False, Application.UserName
Exit Sub
Aufraeumen:
rng.Interior.ColorIndex = oldColor
ActiveSheet.Protect Password:="Test" 
End Sub

Soweit so gut. Das funktioniert leider aber nur halb. 
1.) Der Blattschutz wird entfernt
2.) Das Makro wird ausgeführt und dann wird der Blattschutz leider nicht wieder aktiviert

Was ist falsch bei diesem Code/Vorgehen ??
Bitte helft einem Laien..........
Danke

Wenn keine Fundstelle mehr vorhanden ist, wird das Makro verlassen: Exit Sub
danach wird nichts mehr ausgeführt.

Das Setzen des Blattschutzes muß an einer geeignete Stelle vor dem "Exit Sub" erfolgen.


Oder einfach das Exit Sub entfernen. Wink
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste