Registriert seit: 22.10.2023
Version(en): 2020
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
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
22.10.2023, 10:26
(Dieser Beitrag wurde zuletzt bearbeitet: 22.10.2023, 10:28 von RPP63.)
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)
Registriert seit: 22.10.2023
Version(en): 2020
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
Registriert seit: 25.11.2021
Version(en): 2019, 365
...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
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
22.10.2023, 11:52
(Dieser Beitrag wurde zuletzt bearbeitet: 22.10.2023, 11:52 von RPP63.)
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)
Registriert seit: 22.10.2023
Version(en): 2020
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.
Registriert seit: 25.11.2021
Version(en): 2019, 365
22.10.2023, 12:49
(Dieser Beitrag wurde zuletzt bearbeitet: 22.10.2023, 12:59 von Ralf A.)
...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