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

Zellinhalt in VBA integrieren

Zellinhalt in VBA integrieren
19.06.2014 15:56:18
Andreas

Hallo Excelprofis,
hab mal wieder ein Problemchen.
Ich habe im Netz folgenden Code gefunden, mit dessen Hilfe ich ja nach Benutzeranmeldung verschiedene Tabellenblätter aus- oder einblende:
Private Sub Workbook_Open()
Application.ScreenUpdating = False
Sheets("Liste01").Visible = True
Sheets("Liste02").Visible = True
Sheets("Liste03").Visible = True
Sheets("Ausfüllhilfe").Visible = True
Sheets("Verwendung des Formulars").Visible = True
Dim User As Variant
User = Environ(" USERNAME ")
If User = "GWH" Then
Sheets("Liste01").Visible = xlVeryHidden
Sheets("Liste02").Visible = True
Sheets("Liste03").Visible = xlVeryHidden
GoTo ende
Else
Sheets("Ausfüllhilfe").Visible = True
Sheets("Verwendung des Formulars").Visible = True
Sheets("Liste01").Visible = xlVeryHidden
Sheets("Liste02").Visible = xlVeryHidden
Sheets("Liste03").Visible = xlVeryHidden
End If
......
Da die Benutzer und Tabellen immer mal wechseln würde ich die Usernamen und Tabellen gern in Zellen schreiben und von dort auslesen lassen.
Also z.B. Soll statt "GWH" , Tabelle"Userdaten", Zelle A3 stehen und statt "Liste01" , Tabelle"Userdaten" Zelle B3 (wenn diese nichtleer)
Wie kann ich das in den Code integrieren?
Danke fürs lesen und die Hilfe!
mfg, Andreas

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellinhalt in VBA integrieren
19.06.2014 15:59:16
Hajo_Zi
Hallo Andreas,
benutze doch die internen Namen, dann ist Egal was im Register steht.
Tabelle1.Visible=true

AW: Zellinhalt in VBA integrieren
19.06.2014 16:17:51
Andreas
Hallo Hajo,
Danke für die Antwort!
habe vergessen zu schreiben, dass auch oft Tabellen dazu kommen und wegfallen. Auch die Benutzer wechseln. Die Zuordnungen sollen auch leicht von einem anderen Benutzer geändert werden können.
mfg, Andreas

AW: Zellinhalt in VBA integrieren
19.06.2014 16:21:09
Hajo_Zi
Hallo Andreas,
wir sehen nicht Deine Datei, VBA hast Du nur angegeben Recorder.
Bekommst Du den Code für meine Datei auf Deine Bedingungen umgeschrieben?
Gruß Hajo

Anzeige
AW: Zellinhalt in VBA integrieren
19.06.2014 16:24:10
Andreas
Hallo Hajo!
Wenns nicht zu komplizert ist denke ich das ich es umgeschrieben bekomme.
Danke!
mfg, Andreas

AW: Zellinhalt in VBA integrieren
19.06.2014 16:40:16
Hajo_Zi
Hallo Andreas,
Gut ich bin dann raus.
ption Explicit
Private Sub Workbook_Open()
Dim WsTabelle As Worksheet
Dim Rafound As Range
Dim LoLetzte As Long
Dim Loi As Long
Application.ScreenUpdating = False
For Each WsTabelle In Sheets
If WsTabelle.Name <> "Verwendung des Formulars" Then
' in Tabelle1 steht die übersicht
WsTabelle.Visible = xlVeryHidden
End If
Next WsTabelle
With Worksheets("Tabelle1")
Set Rafound = .Rows(1).Find(Environ(" USERNAME "), , , _
xlWhole, , xlNext)
If Not Rafound Is Nothing Then
LoLetzte = IIf(IsEmpty(.Cells(.Rows.Count, Rafound.Column)), _
.Cells(.Rows.Count, Rafound.Column).End(xlUp).Row, .Rows.Count)
For Loi = 2 To LoLetzte
Worksheets(CStr(.Cells(Loi, Rafound.Column))).Visible = True
Next Loi
End If
End With
End Sub
Gruß Hajo

Anzeige
AW: Habs hinbekommen. Vielen Dank! owT.
19.06.2014 17:37:44
Andreas
.

AW: Habs hinbekommen. Vielen Dank! owT.
19.06.2014 18:04:30
Michael
Hallo Andreas,
ist schon alles gut, aber nachdem ich mich schon damit beschäftigt habe, hier mein Lösungsansatz:
Sub UserMatrix()
' Voraussetzungen:
' Tabellenblatt "User_Liste"
' Das enthält in Zeile 3 von D bis F (getestet)
' die Usernamen GWH, Andere usw.
' in Spalte C, Zeile 4: Liste01; 5: Liste02 usw.
' als einfachen Text
' und im Bereich D4 bis F6 getestete Werte wie:
' WAHR, FALSCH und 2 (2 oder was anderes, wegen Case *Else*)
Dim user_s As String
Dim spalte As Long
Dim suche As Range
user_s = Environ(" USERNAME ")
' zu Testzwecken >>>>>
' user_s = "GWH"
Sheets("User_Liste").Activate
Set suche = Cells.Find(What:=user_s, After:=ActiveCell, _
LookIn:=xlFormulas, SearchFormat:=False)
If suche Is Nothing Then
MsgBox "nicht gefunden: Errorhandling"
Else: spalte = suche.Column
For i = 4 To 6
Select Case Cells(i, spalte).Value
Case True: Sheets(Cells(i, 3).Value).Visible = True
Case False: Sheets(Cells(i, 3).Value).Visible = False
Case Else:  Sheets(Cells(i, 3).Value).Visible = xlVeryHidden
End Select
Next i
End If
End Sub
Happy Exceling,
Michael

Anzeige
AW: Habs hinbekommen. Vielen Dank! owT.
20.06.2014 08:37:37
Andreas
Hallo Michael,
vielen Dank für die Mühe, werde es testen und Rückmeldung geben.
mfg, Andreas

AW: Habs hinbekommen. Vielen Dank! owT.
20.06.2014 11:30:12
Andreas
Hallo Michael!
Deine Variante funktioniert bis auf ein Problemchen super, und durch die Zuweisung von WAHR, FALSCH und so weiter geht eine Änderung der Einblendungen sogar schneller.
Folgendes Problem gibts aber noch:
Das Makro soll beim öffnen der Mappe ausgeführt werden. Da dein Code nur funktioniert, wenn ich ihn in das Blatt User_Liste kopiere, habe ich es nicht hinbekommen.
Wenn das Wichtig ist, das Blatt User_Liste ist immer VeryHidden.
Danke!
mfg, Andreas

Anzeige
Nacharbeiten
20.06.2014 17:21:41
Michael
Hallo Andreas,
manchmal komm ich mir so vor: ...denn sie wissen nicht, was sie tun. Ich meine mich selbst damit, ok?
Ich weiß es auch immer noch nicht, aber so scheint es zu funktionieren:
Ich habe die usermatrix ins Modul1 verschoben, wo sie auch beim Start ausgeführt wird mit:
Private Sub Workbook_Open()
UserMatrix
End Sub

Des weiteren habe ich das activate rausgeworfen und in der case den Namen des user-Blattes eingefügt:
Sub UserMatrix()
' Voraussetzungen wie gehabt
' Einmal ausgeführt zum Ausblenden:
' Sheets("User_Liste").Visible = xlVeryHidden
Dim user_s As String
Dim spalte As Long
Dim suche As Range
user_s = Environ(" USERNAME ")
' zu Testzwecken >>>>>
' user_s = "GWH"
' Diese Zeile auskommentiert, um veryhidden Blatt nicht zu aktivieren
' Sheets("User_Liste").Activate
Set suche = Sheets("User_Liste").Cells.Find(What:=user_s, After:=ActiveCell, _
LookIn:=xlFormulas, SearchFormat:=False)
If suche Is Nothing Then
MsgBox "nicht gefunden: Errorhandling"
Else: spalte = suche.Column
For i = 4 To 6
Select Case Sheets("User_Liste").Cells(i, spalte).Value
Case True: Sheets(Sheets("User_Liste").Cells(i, 3).Value).Visible = True
Case False: Sheets(Sheets("User_Liste").Cells(i, 3).Value).Visible = False
Case Else: Sheets(Sheets("User_Liste").Cells(i, 3).Value).Visible = xlVeryHidden
End Select
Next i
End If
End Sub So funktioniert es bei mir beim ersten Test problemlos. Aber sag, Du hattest doch geschrieben, daß das vom Anwender geändert werden können soll? Dann müßte das Blatt doch auch eingeblendet werden?
Schöne Grüße,
Michael

Anzeige
AW: Nacharbeiten
20.06.2014 17:51:47
Andreas
Hallo Michael!
Vielen Dank für die Hilfe, jetzt klappts super.
Das Blatt User_Liste soll von manchen Benutzern geändert werden. Die bekommen dann ein AddIn mit einem UserForm mit dem Sie das Blatt einblenden und ändern können, danach ist es wieder versteckt.
Schönes WE und Danke nochmal!
mfg, Andreas

AW: Nacharbeiten
20.06.2014 17:58:17
Michael
Hallo Andreas,
na, das freut mich!
Happy Exceling,
Michael

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige