Diskussionsgruppe: Tabellenkalkulation
Hallo ! Wie Ihr nachstehend sehen könnt tue ich mir schon ein bisschen schwer wenn ich etwas erklären soll ! Aber ich hoffe richtig verstanden zu werden .......
Ich erarbeite zur Zeit - mit EXCEL 2000 - eine eigenständige Berechnungsgrundlage mit welcher eine Dienstleistung erbringende Firma Ihre geleisteten Dienste an diverse Kunden mit unterschiedlichem Preisgefüge in Rechnung stellen kann . Mit anderen Worten: Nicht jeder Kunde bezahlt für die ein und dieselbe Dienstleistung denselben Preis..... ! Hierzu habe ich mir in Tabelle 1 eine Datenbank eingerichtet welche das komplette Preisgefüge aller Kunden beinhaltet aber erst dann das jeweilige Kunden-Preisgefüge zur weiteren Berechnung bereit stellt wenn der abzurechnende Kundenname in Zelle A1 der Tabelle 1 eingetragen ist .
Nun habe ich z.Bsp. 4 verschiedene Kunden für die ich jeweils auf einer weiteren Tabelle ein vorgefertigtes Rechnungsformular entworfen habe welches nur dann auf die Datenbank zugreift wenn der für dieses Rechnungsformular zutreffende Kundenname in Zelle A1 der Tabelle 1 erscheint . --
Frage. Wie kann ich es per VBA bewerkstelligen dass immer dann, wenn in Zelle A1 der Tabelle 1 ein NAME steht, nur die Tabelle eingeblendet bleibt welche denselben Namen trägt jedoch alle anderen Tabellen ausblendet ??
Beispiel: In Zelle A1 der Tabelle 1 steht der Name KNOLL .
Tabelle 2 trägt den Namen RASCHIG
Tabelle 3 trägt den Namen MÜHLE
Tabelle 4 trägt den Namen KNOLL
Tabelle 5 trägt den Namen SCHLOSS , usw.
Im vorliegenden Falle sollen also die Tabellen 2 / 3 und 5 geschlossen und ausgeblendet werden, die Tabelle 4 jedoch eingeblendet und zur Bearbeitung geöffnet bleiben .
Ich sag mal Danke und hoffe ......
Antwort 1
von coros vom 22.09.2006, 20:52
Hy Stranger,
kopiere nachfolgenden Code in das VBA Projekt des Tabellenblattes mit dem Namen "Tabelle1".
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Blätter As Integer
If Target.Count > 1 Then Exit Sub
If Range("A1") <> "" Then
For Blätter = 1 To Worksheets.Count
If Sheets(Blätter).Name <> Range("A1") And Sheets(Blätter).Name <> "Tabelle1" Then
Sheets(Blätter).Visible = xlVeryHidden
Else
Sheets(Blätter).Visible = True
End If
Next
End If
End Sub
Mit dem Code wird immer das Blatt, dessen Namen in Blatt "Tabelle1" in Zelle A1 eingetragen wird, eingeblendet. alle anderen Blätter werden ausgeblendet.
Ich hoffe, Du meintest das so. Bei Fragen melde Dich bitte.
Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 2 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.
MfG, Oliver Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 2
von Stranger vom 23.09.2006, 09:48
@ coros
Danke Dir, dass Du Dich meiner angenommen hast ! Kann mich jedoch erst im Laufe des Nachmittags dazu äußern weil jeder Samstag (bis 15:00 Uhr) dem Willen meiner Frau unterliegt ........ !
Bis dahin Danke und liebe Grüße, auch an deine Frau !
Antwort 3
von Stranger vom 23.09.2006, 12:18
Hallo coros , er ist einfach wunderbar wie dein Code funktioniert ! Egal wie viele Tabellen , (Firmennamen), sich in meiner Arbeitsmappe auch befinden , EXCEL öffnet grundsätzlich immer nur meine DATENBANK und die TABELLE mit dem in der Datenbank niedergelegten NAMEN . Also immer nur 2 von vielleicht 15 Tabellen und dabei stets die, welche gerade zur Bearbeitung steht . Ich kann mir gut vorstellen dass auch andere Forumsteilnehmer, (welche mit einer Datenbank und mehreren Tabellen arbeiten) , deinen Code (vorsorglich) in ihr Archiv kopieren werden .....! Gruß und herzl. Dank Walter
|
|