![]() |
|
|
Banner und Co. |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
![]() MOF User |
![]() Hallo Forum
In meiner Excel-Datei gibt es für jeden Werktag (Mo-Fr) im Jahr ein eigenes Tabellenblatt um tagesspezifische Informationen zu erfassen. Total sind das 265 Tabellenblätter. Diese habe ich aufsteigend von 1 bis 265 benannt. In der Haupttabelle, Agenda benennt, ist ab der Spalte C bis JG jeder Spalte ein spezifischer Werktag zugeordnet. Im Moment benutze ich folgenden Code, um durch einen Mausklick auf einen Button in einer Spalte zum spezifischen Tabellenblatt des gewünschten Tages zu wechseln Code: Sub Tag_32() Application.ScreenUpdating = False Sheets("32").Visible = True Sheets("32").Select Application.ScreenUpdating = True End Sub Aus diesem Grund habe in der Zeile 4 eine Spalten-Nummerierung angelegt, die in der Spalte C mit 1 und in der Spalte JG mit 265 endet. Nun wäre mein Lösungsansatz dieser, wenn ich einen Button in einer Spalte anklicke, wird der Wert in der Zeile 4 in jener Spalte ausgelesen, in welcher ich gerade bin. Dieser Wert wird dann als Name für das gewünschte Tagesblatt verwendet. Kann mir da jemand helfen? Schon mal besten Dank. CLG |
![]() |
![]() ![]() |
![]() |
#2 |
![]() MOF Meister |
![]() Hallo CLG,
mal ein anderer Lösungsansatz, Du gibst die Nummer des Wochentags ein, und das Makro wird dann automatisch über das Change-Ereignis aufgerufen. Gruß Aloys |
![]() |
![]() ![]() |
![]() |
#3 |
Threadstarter
![]() ![]() MOF User |
![]() Hallo Aloys
Vielen Dank für deinen Lösungsansatz! Ich sehe das Problem: Der Button referenziert keine spezifische Spalte und somit ergibt es auch keine eindeutige Zuordnung, in welcher Spalte nun der Button aktiviert wurde. Du bringst mich aber auf eine andere Idee: Besteht die Möglichkeit, dass anstelle des Buttons ein Mausklick in eine Zelle in der Zeile 14 der Auslöser für ein Makro ist, dass dann den Wert in der dazu gehöhrenden Zeile 4 ausliest. Zur Ergänzung: Die Zeile 4 ist nicht für den User ausgeblendet. Beispiel: Ich klicke mit der Maus in die Zelle J14, das Makro liest den Wert in der Zeile 4 aus (8) und springt dann zum Tagesblatt 8. Ist das so Möglich? Besten Dank für die Hilfe! Gruss CLG |
![]() |
![]() ![]() |
![]() |
#4 |
![]() MOF Meister |
![]() Hallo,
Zitat: Der Button referenziert keine spezifische Spalte und somit ergibt es auch keine eindeutige Zuordnung, in welcher Spalte nun der Button aktiviert wurde. Werden die Informationen (welche) im aufgerufenen Blatt gebraucht ? Zitat: Besteht die Möglichkeit, dass anstelle des Buttons ein Mausklick in eine Zelle in der Zeile 14 der Auslöser für ein Makro ist, dass dann den Wert in der dazu gehöhrenden Zeile 4 ausliest. Momentan gibt es ja keinen Button, sondern eine Eingabe der Tab-Blatt# in C3 bewirkt automatisch den Aufruf dieses Tabellenblattes. Verstehe ich das richtig, dass Du auf irgendeine Zelle in Zeile 14 klicken willst (Doppel- oder RechtsClick), und dann wird das Blatt aus Zeile 4 dieser Spalte aufgerufen ? Gruß Aloys |
![]() |
![]() ![]() |
![]() |
#5 |
Threadstarter
![]() ![]() MOF User |
![]() Guten Tag Aloys
So in etwa. In der Zeile 4 von der Spalte C bis JG ist jede Spalte Nummeriert aufsteigend von 1 bis 265. Jede Spalte hat ein separates Tabellenblatt (Tagesblatt). In dieses werden wichtige Zusatzinformationen erfasst, die in der Agenda nicht ersichtlich sind, aber wichtig für die Bearbeitung. Wenn ich nun in die Zelle J14 klicke, ist im Moment ein Button, der mit dem folgendem Code verknüpft ist: Code: Sub Tag_14() Application.ScreenUpdating = False Sheets("14").Visible = True Sheets("14").Select Application.ScreenUpdating = True End Sub Aus deiner ersten Antwort habe ich nun aber selber bemerkt, dass ein Button nicht "weiss" in welcher Spalte er ist und somit auf meine erste Frage Zitat: Nun wäre mein Lösungsansatz dieser, wenn ich einen Button in einer Spalte anklicke, wird der Wert in der Zeile 4 in jener Spalte ausgelesen, in welcher ich gerade bin. Deshalb habe ich mir gedacht, wenn ich anstelle eines Button nur die Zelle in der Zeile 14 als Trigger verwende und ein Makro feststellt, welcher Wert in der gleichen Spalte der markierten Zelle in der Zeile 4 steht. Mit diesem Wert sollte dann das dazu gehöhrende Tagesblatt aufgerufen und angezeigt werden. Ich hoffe ich konnte dir die gestellte Aufgabe/Frage verständlicher beschreiben? Auf jeden Fall besten Dank für deine Bemühungen. Gruss CLG |
![]() |
![]() ![]() |
![]() |
#6 |
![]() MOF Meister |
![]() Hallo CLG,
Zitat: In der Zeile 4 von der Spalte C bis JG ist jede Spalte Nummeriert aufsteigend von 1 bis 265. Zitat: Wenn ich nun in die Zelle J14 klicke, .. Den Code habe ich entsprechend abgeändert. Ein Click auf Zeile 14 öffnet das Blatt, das sich aus Zeile 4 der gleichen Spalte ergibt. Code: Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim TabName As String ' Tab-Name der ausgewählten Tabelle Dim zClick As Long ' Zeile, in der per Click die Auswahl erfolgt Dim rng As Range ' Click-Bereich zClick = 14 ' Zeilen# für Click <--- ggf anfassen Set rng = Range("C" & zClick & ":JG" & zClick) If Intersect(Target, rng) Is Nothing Then Exit Sub TabName = CStr(Cells(4, Target.Column)) On Error Resume Next Worksheets(TabName).Visible = True If Err.Number <> 0 Then MsgBox Err.Number & " " & Err.Description & Chr(10) & _ "Tabellenblatt nicht gefunden !", vbCritical Else Worksheets(TabName).Select End If On Error GoTo 0 End Sub Aloys |
![]() |
![]() ![]() |
![]() |
#7 |
Threadstarter
![]() ![]() MOF User |
![]() Hallo Aloys
Das Funktioniert sehr gut! So habe ich mir das vorgestellt. Eine Bitte habe ich noch. Zwischendurch muss aus der Agenda ein Ausdruck erstellt werden in dem man den gewünschten Bereich markiert und dann ausdruckt. Dummerweise stört aber nun das Tagesblatt, das als erstes im markierten Bereich zu liegen kommt, da es angezeigt wird. Besteht da die Möglichkeit, wenn ein Bereich entsprechend markiert wird, das Makro so wie ausschaltet und dann nichts passiert? Schon mal besten Dank für deine Hilfe! Gruss CLG |
![]() |
![]() ![]() |
![]() |
#8 |
![]() MOF Meister |
![]() Hallo CLG,
Zitat: Dummerweise stört aber nun das Tagesblatt, das als erstes im markierten Bereich zu liegen kommt, da es angezeigt wird. Aber ich denke, mit dem nachfolgenden Code ist das Problem gelöst. Code: Option Explicit Private Sub Worksheet_SelectionChange(ByVal Target As Range) ' Version V3 vom 21.02.2017 Dim TabName As String ' Tab-Name der ausgewählten Tabelle Dim zClick As Long ' Zeile, in der per Click die Auswahl erfolgt Dim rng As Range ' Click-Bereich If Target.Count > 1 Then Exit Sub ' mehr als 1 Zelle ausgewählt zClick = 14 ' Zeilen# für Click <--- ggf anfassen Set rng = Range("C" & zClick & ":JG" & zClick) If Intersect(Target, rng) Is Nothing Then Exit Sub TabName = CStr(Cells(4, Target.Column)) On Error Resume Next Worksheets(TabName).Visible = True If Err.Number <> 0 Then MsgBox Err.Number & " " & Err.Description & Chr(10) & _ "Tabellenblatt nicht gefunden !", vbCritical Else Worksheets(TabName).Select End If On Error GoTo 0 End Sub Aloys |
![]() |
![]() ![]() |
![]() |
#9 |
Threadstarter
![]() ![]() MOF User |
![]() Hallo Aloys
Perfekt! Besten Dank für deinen Unterstützung. Beste Grüsse CLG |
![]() |
![]() ![]() |