MS-Office-Forum
Google
   

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Excel
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads Der Renner, 11 Entwicklertools für Access, Tipps & Trick und offene Datenbanken zum einzigartigen Preis.
Themen-Optionen Ansicht
Alt 17.02.2017, 13:00   #1
CLG
MOF User
MOF User
Standard Excel 2013 - Wert in Zelle verwenden um ein bestimmtes Tabellenblatt aufzurufen

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
Das geht sicher einfacher.
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
CLG ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 17.02.2017, 17:35   #2
aloys78
MOF Meister
MOF Meister
Standard

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
Angehängte Dateien
Dateityp: xlsm CLG_Mappe.xlsm (19,6 KB, 2x aufgerufen)
aloys78 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 20.02.2017, 16:42   #3
CLG
Threadstarter Threadstarter
MOF User
MOF User
Standard

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
CLG ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 20.02.2017, 17:38   #4
aloys78
MOF Meister
MOF Meister
Standard

Hallo,

Zitat:

Der Button referenziert keine spezifische Spalte und somit ergibt es auch keine eindeutige Zuordnung, in welcher Spalte nun der Button aktiviert wurde.

Kannst Du das mal näher erläutern, wozu das dient ?
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.

Es geht vieles ! Bei mir muss aber erst mal ankommen, was genau gewünscht ist.
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
aloys78 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 21.02.2017, 08:02   #5
CLG
Threadstarter Threadstarter
MOF User
MOF User
Standard

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
Ich hatte ursprünglich die Idee, dass in jeder Spalte ein Button ist, dem ein entsprechendes Makro zugeordnet ist. Da dies eine sehr aufwändige Sache ist, diese vielen Buttons und Makros zu erstellen, habe ich gehofft, dass es ein Makro gibt, der einem Button zugeordnet ist und sich dynamisch verhaltet. Diesen Button hätte ich dann in jede Spalte kopieren können.

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.
Dieser Wert wird dann als Name für das gewünschte Tagesblatt verwendet.

keine gute Lösung möglich ist. Dein Lösungsansatz mit einer manuelle Eingabe funktioniert zwar, doch dies ist etwas umständlich.

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
CLG ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 21.02.2017, 11:50   #6
aloys78
MOF Meister
MOF Meister
Standard

Hallo CLG,

Zitat:

In der Zeile 4 von der Spalte C bis JG ist jede Spalte Nummeriert aufsteigend von 1 bis 265.

Das heisst: C4=1 und J4=8

Zitat:

Wenn ich nun in die Zelle J14 klicke, ..

dann müßte Blatt 8 und nicht 14 aufgerufen werden.

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
Gruß
Aloys
aloys78 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 21.02.2017, 13:25   #7
CLG
Threadstarter Threadstarter
MOF User
MOF User
Standard

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
CLG ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 21.02.2017, 16:43   #8
aloys78
MOF Meister
MOF Meister
Standard

Hallo CLG,

Zitat:

Dummerweise stört aber nun das Tagesblatt, das als erstes im markierten Bereich zu liegen kommt, da es angezeigt wird.

Deswegen hatte ich ja einen Doppel- bzw RechtsClick vorgeschlagen.

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
Gruß
Aloys
aloys78 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 23.02.2017, 08:00   #9
CLG
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hallo Aloys

Perfekt! Besten Dank für deinen Unterstützung.

Beste Grüsse
CLG
CLG ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:48 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

Copyright ©2000-2010 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günther Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.
Beachten Sie bitte auch unsere Nutzungsbedingungen.