Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Datentabellen aufrufen per VBA

Datentabellen aufrufen per VBA
02.07.2015 11:01:36
Berni
Liebe Excellenzen!
Ich bin gerade dabei, eine Planungstabelle zu basteln, die aufgrund der Detailierung doch ziemlich umfangreich wird. Daher habe ich pro Tabellenblatt einen Planungsauftrag vorgesehen, in welchem dann die Projektanten die diversen Kosten (Stunden) für das kommende Jahr planen können. Um die Tabellen einzeln anspringen zu können habe ich einen Code hinterlegt, welcher mir das Datenblatt aufruft und nach Eintragen der Daten wieder verschwinden lässt.
Sub Daten5071103()
Sheets("5071103").Visible = True
Sheets("5071103").Select
Range("G8").Select
End Sub
Sub Auftragstruktur5071103()
Sheets("5071103").Visible = xlSheetVeryHidden
Sheets("Aufträge").Select
Range("A1").Select
End Sub
Sub Daten5074953()
Sheets("5074953").Visible = True
Sheets("5074953").Select
Range("G8").Select
End Sub
Sub Auftragstruktur5074953()
Sheets("5074953").Visible = xlSheetVeryHidden
Sheets("Aufträge").Select
Range("A1").Select
End Sub
Da es mitunter 100 Aufträge und mehr gibt, ist es etwas mühsam, den Code für die Einzelnen Tabellenblätter einzurichten. Gibt es vielleicht einen Trick, diese Prozedur über eine Schleife abzukürzen?
Danke vorerst
Berni

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datentabellen aufrufen per VBA
02.07.2015 11:19:54
Senna
Hallo Berni,
klar geht das:

Sub anzeigen()
for each arr in array(5071103, 5074953)
Sheets(arr).Visible = True
next arr
end sub
sub verbergen()
for each arr in array(5071103, 5074953)
Sheets(arr).Visible = xlSheetVeryHidden
next arr
Sheets("Aufträge").Select
Range("A1").Select
Wenn die Blätter hintereinander in der Arbeitsmappe liegen und es sehr viele sind kannst du es auch so lösen:

sub anzeigen()
for i = sheets("name_des_ersten_blattes").index to sheets("name_des_letzten_blattes").index
Sheets(i).Visible = True
next i
end sub
sub verbergen()
for i = sheets("name_des_ersten_blattes").index to sheets("name_des_letzten_blattes").index
Sheets(i).Visible = xlSheetVeryHidden
next i
Sheets("Aufträge").Select
Range("A1").Select
end sub

Anzeige
AW: Datentabellen aufrufen per VBA
02.07.2015 12:31:55
Berni
Herzlichen Dank, Senna!
Das Verbergen funktioniert super. Allerdings habe ich beim Einblenden ein kleines Problem. Drücke ich auf den Button, dann gehen die gesamten 70 Tabellen auf, was wieder zur Unübersichtlichkeit führt. Derzeit habe ich es ja so gelöst, dass ich auf der Auftragsübersicht über das Schaltfeld "Daten 5071103" jeweils nur das ausgewählte Blatt sichtbar machen kann und nach getaner Arbeit über das Schaltfeld "Zurück zur Übersicht" zu den Aufträgen springe. Aber vielleicht lässt sich Dein Code mit diesem sinnvoll verknüpfen:
Sub NurAktivesBlattSichtbar()
Dim Blatt As Worksheet
For Each Blatt In ActiveWorkbook.Sheets
If Blatt.Name  ActiveSheet.Name Then
Blatt.Visible = xlSheetVeryHidden
End If
Next Blatt
End Sub

Danke nochmals
Berni

Anzeige
AW: Datentabellen aufrufen per VBA
03.07.2015 13:14:56
Senna
Ok, du möchtest als für jedes Datenblatt einen eigenen Button haben. Wie wäre es mit einem Hyperlink?
Sub Uebersicht()
Dim IntI%
On Error Resume Next
If Sheets(1).Name = "Uebersicht" Then
Sheets(1).Select
Cells.Clear
Else
Sheets.Add Before:=Sheets(1)
Sheets(1).Select
Sheets(1).Name = "Uebersicht"
End If
Cells(1, 1).Value = "Uebersicht"
For IntI = 2 To Sheets.Count
Cells(IntI, 1).Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
Sheets(IntI).Name & "!A1", TextToDisplay:=Sheets(IntI).Name
Next IntI
Cells(1, 1).Select
End Sub
Dann musst du noch in das erstellte Tabellenblatt folgenden Code kopieren:
(Also tatsächlich unter VBAProject(Mappe)/Microsoft Excel Objekte/TabelleX(Uebersicht) anklicken.)
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
If Sheets(Target.Parent.Value).Visible = xlSheetVeryHidden Or Sheets(Target.Parent.Value). _
Visible = False Then
Sheets(Target.Parent.Value).Visible = True
Sheets(Target.Parent.Value).Select
End If
End Sub

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige