Teilbereich ausblenden/leeren
#1
Hallo zusammen,
 
Ich würde gerne folgendes Problem lösen.

Wenn eine Zelle in Tabelle 1 leer ist, möchte ich einen bestimmten Teilbereich in Tabelle 2 ausblenden oder Leeren. Dieser Teilbereich ist grundsätzlich mit Text, Farben und Linien vorbefüllt.

Für einen bestimmten Tabellenteil in Tabelle 2 hab ich das folgendermaßen gelöst...


If Range("E111") = "" Then
    Sheets("grafischer Befehl").Select
    Columns("BH:CF").Select
    Selection.EntireColumn.Hidden = True

End If

So kann ich aber nicht weitermachen, da ab jetzt in den oberen Zeilen Einträge stehen, die immer bleiben sollen.

Vielleicht hat ja jemand eine Lösung für mich.

Vielen Dank vorab
Antworten Top
#2
Moin!
Wie Du bereits gemerkt hast, lassen sich nur komplette Zeilen und Spalten ausblenden. 

Gruß Ralf

Stehen im auszublendenden Bereich Formeln?
Dann könnte man die überarbeiten.
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#3
Das hab ich tatsächlich gemerkt.

Versuche mich grad an der Variante das der betreffende Bereich dann nur geleert wird, aber es will noch nicht so richtig
Antworten Top
#4
...da Du ja "leeren" ebenfalls in Betracht ziehst, könntest Du den Content des Bereiches ja auch auf "sicht-/unsichtbar" stellen. Also schwarze/weiße Schriftfarbe, gelbe/keine Hintergrundfarbe etc....
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.

Ciao, Ralf

Antworten Top
#5
Bevor wir hier spekulieren (X/Y-Problem),
solltest Du erstmal erklären, was Du eigentlich bezweckst.
Mit "Leeren" sind die Zellwerte weg.
Mit dem Zahlenformat ;;; (oder auch der ostfriesischen Flagge weißer Adler auf weißem Grund) sieht man nix mehr, jedoch hat jeder Zugang zu den Werten.
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#6
Also Grundsätzlich hab ich auf Tabelle 2 ein "Flussdiagramm".

Dies möchte ich aber auf Knopfdruck nur so angezeigt bekommen wie es tatsächlich auch befüllt ist. Werden also in Tabelle 1 z.b. im Bereich 4 und 5 keine Werte eingetragen, sollen diese Bereiche auf Tabellenblatt 2 auch nicht angezeigt werden.
Bislang hab ich es so gelöst, dass Bereiche 4-9 ausgeblendet werden wenn diese über Tabelle 1 nicht befüllt wurden. Dies kann ich aber über einen Button auch wieder Rückgängig machen um die Geschichte neu zu befüllen.

Stand jetzt bin ich soweit über den Button den Bereich 4 - 9 komplett zu löschen, aber leider kann ich das dann nicht mehr rückgängig machen.

Dafür hab ich folgendes genutzt:

Sheets("Eingabe").Select
If Range("E98") = "" Then
    Sheets("Übersicht").Select
    Range("AV15:DC66,AU16,AT16,AS16,AR16,AQ16").Select
    Selection.ClearFormats
   
End If

Sheets("Eingabe").Select
If Range("E98") = "" Then
    Sheets("Übersicht").Select
    Range("AV15:DC66").Select
    Selection.ClearContents
   
End If

Ist aber leider noch nicht die Lösung die ich bevorzuge.
Antworten Top
#7
...wenn ich Dich richtig verstehe, baust Du das Flussdiagramm über Shapes auf... also Pfeile z. Bsp.?

Wenn das so ist, dann nutze die Eigenschaften der Shapes. Jedes Shape hat auch einen eigenen Namen (der angepasst) und verwendet werden kann. Somit würde ich die Shapes und nicht die Bereiche verwalten.

Bsp.: Hier müssen in Zeile 2 in ein paar Spalten Zahlen eingetragen werden. Nach Start des Makros werden Kreise in der angegebenen Größe gezeichnet:

Code:
Sub Shapes_einfuegen()
Dim Wert As Single, i%, Oben%, Links%, LetzteSpalte%, oSh As Shape

For Each oSh In Me.Shapes
oSh.Delete
Next

LetzteSpalte = Cells.SpecialCells(xlCellTypeLastCell).Column

With ActiveSheet

For i = 1 To LetzteSpalte

    With Cells(2, i)
  
        .Activate
        Oben = .Top
        Links = .Left
        Wert = .Value
    End With
   
    .Shapes.AddShape msoShapeOval, Links + 5, Oben + 5, Wert, Wert
    .Shapes(i).Name = "Mein Kreis Nr." & i
    .Shapes("Mein Kreis Nr." & i).Fill.ForeColor.SchemeColor = 50

Next i

End With
End Sub

Mehrere Shapes können in einem Array zusammengefasst werden. Bsp.:
Code:
Sub t()
Dim arrShapes()
    arrShapes = Array("Mein Kreis Nr.5", ActiveSheet.Shapes(2).Name, "Mein Kreis Nr.4")
    ActiveSheet.Shapes.Range(arrShapes).Select
End Sub
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.

Ciao, Ralf

Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste