Microsoft Excel

Herbers Excel/VBA-Archiv

Datentabellen aufrufen per VBA

Betrifft: Datentabellen aufrufen per VBA von: Berni
Geschrieben am: 02.07.2015 11:01:36

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

  

Betrifft: AW: Datentabellen aufrufen per VBA von: Senna
Geschrieben am: 02.07.2015 11:19:54

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



  

Betrifft: AW: Datentabellen aufrufen per VBA von: Berni
Geschrieben am: 02.07.2015 12:31:55

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


  

Betrifft: AW: Datentabellen aufrufen per VBA von: Senna
Geschrieben am: 03.07.2015 13:14:56

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



 

Beiträge aus den Excel-Beispielen zum Thema "Datentabellen aufrufen per VBA"