Learco
Ensign
- Registriert
- Nov. 2011
- Beiträge
- 195
Moin moin!
Ich bin noch relativ frisch was VB und VBA angeht, deshalb brauch ich dringend eure Hilfe... :/ Folgendes: ich habe eine Excel-Tabelle, in dieser werden bereits Benutzer abgefragt, die einen können gewisse Zellen lesen die anderen wiederum nicht bzw. andere Zellen.. etc. Meine Frage ist jetzt, was ich für eine Abfrage machen muss, damit ein anderer Benutzer Vollzugriff beim Start hat, aber die anderen, die aufgelistet werden nur den ursprünglichen Teilinhalt lesen und die die gar nicht aufgelistet sind gar nichts lesen können?
Hier einmal der bisherige Quellcode (Aus Persontechnischen Gründen habe ich die Benutzer mit "XXX1-XXX12" gekennzeichnet der XXX1 sollte der Benutzer sein, der Vollzugriff hat):
Public Annehmer As String
Public WinUser As String
Sub Variablen()
WinUser = VBA.Environ("UserName") 'Ruft den Windows-Benutzernamen ab
Annehmer = StrConv(WinUser, vbProperCase) 'Speichert den Windowsbenutzernamen großgeschrieben
End Sub
Sub PasswortJa()
ActiveSheet.Protect Password:="carlw" 'Setzt ein Passwortschutz
End Sub
Sub PasswortNein()
ActiveSheet.Unprotect Password:="carlw" 'Hebt den Passwortschutz auf
End Sub
Sub Filter()
With ActiveWorkbook.ActiveSheet
.AutoFilterMode = False
.Range("A2
2").AutoFilter
.Range("A2
2").AutoFilter Field:=12, Criteria1:=Annehmer
End With 'Aktiviert den Autofilter mit dem Kriterium Annehmer in der Spalte L (12)
End Sub
Sub KeinFilter()
With ActiveWorkbook.ActiveSheet
If .FilterMode Then
.ShowAllData
End If
End With 'Hebt jegliche Filter auf
End Sub
Sub Abfrage()
If Annehmer = "XXX2" Or Annehmer = "XXX3" Or Annehmer = "XXX4" Or Annehmer = "XXX5" Or Annehmer = "XXX6" Or Annehmer = "XXX7" Or Annehmer = "XXX8" Or Annehmer = "XXX9" Or Annehmer = "XXX10" Or Annehmer = "XXX11" Or Annehmer = "XXX12" Then
Call Filter
Call PasswortJa
Else 'Abfrage, ob ein Annehmer, festmachend am Windowsnutzer, die Datei öffnet, setzt daraufhin den Filter und Passwortschutz
Call KeinFilter
End If 'Wenn kein Annehmer die Datei öffnet, soll es auch keinen Filter geben
End Sub
Sub Applikation()
Call PasswortNein
Call Variablen
Call Abfrage
'Hebt zuerst den Passwortschutz auf, holt sich die Variablen und startet dann die If-Abfrage
End Sub
Was ich vergessen habe zu ergänzen: Ich habe dieses Programm ursprünglich nicht geschrieben, sondern der vorherige Mitarbeiter, den man nicht mehr erreichen kann. :/ Ich verstehe zwar auch wie das aufgebaut ist, aber es ist halt diese eine Sache wo es stecken geblieben ist... Vielleicht hat ja auch jemand einen besseren Vorschlag wie man diese Abfrage insgesamt machen kann
Vielen Dank für eure Hilfe 
Lg,
Learco
Ich bin noch relativ frisch was VB und VBA angeht, deshalb brauch ich dringend eure Hilfe... :/ Folgendes: ich habe eine Excel-Tabelle, in dieser werden bereits Benutzer abgefragt, die einen können gewisse Zellen lesen die anderen wiederum nicht bzw. andere Zellen.. etc. Meine Frage ist jetzt, was ich für eine Abfrage machen muss, damit ein anderer Benutzer Vollzugriff beim Start hat, aber die anderen, die aufgelistet werden nur den ursprünglichen Teilinhalt lesen und die die gar nicht aufgelistet sind gar nichts lesen können?

Hier einmal der bisherige Quellcode (Aus Persontechnischen Gründen habe ich die Benutzer mit "XXX1-XXX12" gekennzeichnet der XXX1 sollte der Benutzer sein, der Vollzugriff hat):
Public Annehmer As String
Public WinUser As String
Sub Variablen()
WinUser = VBA.Environ("UserName") 'Ruft den Windows-Benutzernamen ab
Annehmer = StrConv(WinUser, vbProperCase) 'Speichert den Windowsbenutzernamen großgeschrieben
End Sub
Sub PasswortJa()
ActiveSheet.Protect Password:="carlw" 'Setzt ein Passwortschutz
End Sub
Sub PasswortNein()
ActiveSheet.Unprotect Password:="carlw" 'Hebt den Passwortschutz auf
End Sub
Sub Filter()
With ActiveWorkbook.ActiveSheet
.AutoFilterMode = False
.Range("A2

.Range("A2

End With 'Aktiviert den Autofilter mit dem Kriterium Annehmer in der Spalte L (12)
End Sub
Sub KeinFilter()
With ActiveWorkbook.ActiveSheet
If .FilterMode Then
.ShowAllData
End If
End With 'Hebt jegliche Filter auf
End Sub
Sub Abfrage()
If Annehmer = "XXX2" Or Annehmer = "XXX3" Or Annehmer = "XXX4" Or Annehmer = "XXX5" Or Annehmer = "XXX6" Or Annehmer = "XXX7" Or Annehmer = "XXX8" Or Annehmer = "XXX9" Or Annehmer = "XXX10" Or Annehmer = "XXX11" Or Annehmer = "XXX12" Then
Call Filter
Call PasswortJa
Else 'Abfrage, ob ein Annehmer, festmachend am Windowsnutzer, die Datei öffnet, setzt daraufhin den Filter und Passwortschutz
Call KeinFilter
End If 'Wenn kein Annehmer die Datei öffnet, soll es auch keinen Filter geben
End Sub
Sub Applikation()
Call PasswortNein
Call Variablen
Call Abfrage
'Hebt zuerst den Passwortschutz auf, holt sich die Variablen und startet dann die If-Abfrage
End Sub
Was ich vergessen habe zu ergänzen: Ich habe dieses Programm ursprünglich nicht geschrieben, sondern der vorherige Mitarbeiter, den man nicht mehr erreichen kann. :/ Ich verstehe zwar auch wie das aufgebaut ist, aber es ist halt diese eine Sache wo es stecken geblieben ist... Vielleicht hat ja auch jemand einen besseren Vorschlag wie man diese Abfrage insgesamt machen kann


Lg,
Learco
Zuletzt bearbeitet: