Ich (versuche) einen VBA-Code zu erstellen, der Sheet1 basierend auf dem eingegebenen Passwort filtert. Ich habe eine Excel-Datei mit 2 Blatt und Blatt2 hat die Passwörter in Spalte B und den "Filter" in Spalte A. Ich werde die Excel-Datei verteilen und geben Sie das entsprechende Passwort an die Parteien und wenn sie ihr Passwort alle Informationen von anderen eingeben Parteien werden gelöscht. Der Code:VBA - Filter zeigt Zellen basierend auf dem eingegebenen Passwort
Sub Open_with_password()
pas = Application.InputBox("Input password")
If pas = False Or pas = "" Then Exit Sub
Application.ScreenUpdating = False
a = 0
For i = 1 To Sheet2.Range("A1").End(xlDown).Row
If Worksheets("Sheet2").Cells(i, 2) = pas Then
c = Worksheets("Sheet2").Cells(i, 1) 'the agency corresponding with the password
a = a + 1
End If
Next
'Check for password
If a = 0 Then
MsgBox "Wrong password. Report can not be accessed"
ActiveWorkbook.Close False
Sheet2.Visible = xlSheetVeryHidden
Sheet1.Visible = xlSheetVeryHidden
Exit Sub
'If correct password
Else:
Sheet1.Visible = xlSheetVisible
Worksheets("Sheet1").Select
Worksheets("Sheet1").Unprotect Password = "XYZ"
On Error Resume Next
ActiveSheet.ShowAllData
On Error GoTo 0
'Filter according to input password
If c <> "Admin" Then ActiveSheet.Range("$A$2:$AQ$500000").AutoFilter Field:=17, Criteria1:=c
Set rCell = ActiveSheet.AutoFilter.Range.Offset(1, 0).SpecialCells(xlCellTypeVisible).Cells(1, 1)
Rows(rCell.Row).Select
Range(Selection, Selection.End(xlDown)).Copy
Worksheets("Sheet1").Select
Range("A2").Select
Selection.PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Range("A2").Select
'If Admin
If c = "Admin" Then
Sheet2.Visible = xlSheetVisible
Sheet1.Visible = xlSheetVisible
End If
End If
Application.ScreenUpdating = True
End Sub
Die Fragen, die ich erlebt habe, so weit sind:
1. Wenn ich die Datei öffnen, wird das Eingabefeld nicht automatisch angezeigt, im Idealfall würde es zeigen, während der Benutzer nichts sieht.
2. Wenn es nach dem Passwort filtert (der Filter funktioniert), wenn es den Teil erreicht, wo es alles andere löschen soll, tut es das nicht. Ich bin eine Kopie und Paste-Methode und eine Fehlermeldung erscheint (Error 1004)
Dank für Ihre Hilfe
Danke für Ihre Hilfe @Sgdva Ihre Antwort das Teil Passwort löst. Ich habe es als "Privat" vergessen. Trotzdem gibt es immer noch den Fehler 1004 in der folgenden Zeile: 'Selection.PasteSpecial Paste: = xlPasteValues,' Es selektiert alle gewünschten Zeilen, fügt sie aber nicht ein und löscht die anderen, da der Copy & Paste Bereich sich nicht überlappen kann – Tiago
Ich benutze 'Selection.PasteSpecial' nicht. Haben Sie den Code genau so gepostet? Bereichsüberlappung, haben Sie verbundene Zellen? – Sgdva
Ich habe genau kopiert, was Sie mir gegeben haben, und es kopiert nicht auf die anderen Daten. Vielleicht aufgrund des Filters ... – Tiago