online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon malli vom 21.11.2019, 08:43 Options

Makro: Spaltenbreite und Zeilenhöhe bei bestimmten Kriterien auf 0 setzen

Hallo,

ich habe folgendes Problem: eine Excel-Datei mit Gruppierungen, in denen sich ausgeblendete Zeilen befinden. Wenn die Grupperiung erweitert wird, werden auch die ausgeblendeten Zellen sichtbar.
Gibt es mit VBA eine Möglichkeit, die Spaltenbreite bzw. die Zeilenhöhe auf 0 zu setzen, wenn in Spalte A bzw. Zeile 1 ein gewisser Wert steht?

Vielen Dank schon mal.
LG malli


Antwort schreiben

Antwort 1 von Martina vom 21.11.2019, 09:49 Options

Hallochen,

da musst du dir ein Makro schreiben.
Machst eine Abfrage, ob sich in den Zellen ein best. Wert befindet.

Wenn ja dann für Spaltenbreite = 0 in z.B. Spalte D

[b]Columns("D:D").Select
    Selection.ColumnWidth = 0[/b]
    

und für Zeilenbreite = 0 in z.B. Zeile 6

[b]Rows("6:6").Select
    Selection.RowHeight = 0[/b]


LG Martina

Antwort 2 von malli vom 21.11.2019, 10:23 Options

Hallo Martina,

vielen Dank für deine Antwort.
Meine Kenntnisse reichen leider nicht aus, um ein Makro mit einer Abfrage hinzubekommen.

Könnte mir da vielleicht nochmal jemand helfen?

LG malli

Antwort 3 von Denkanstoßer vom 21.11.2019, 12:28 Options

Hi
Nachstehende Anweisungen bewirken, dass wenn in Zelle A1 eine "0" steht, dass die Spalte F und die Zeile 5 ausgeblendet werden. Eine "1" in A1 stellt die Orginalgrößen wieder her.

Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Address <> "$A$1" Then Exit Sub
 If Target.Value = "1" Then
   Columns("F:F").ColumnWidth = 10.71
   Rows("5:5").RowHeight = 12.75
  End If
 If Target.Value = "0" Then
   Columns("F:F").ColumnWidth = 0
   Rows("5:5").RowHeight = 0
  End If
  
End Sub


Einzufügen ind den Codebereich des Tabellenblattes wo es wirken soll. Alt+F11| F7

mfg

Antwort 4 von malli vom 21.11.2019, 13:02 Options

Danke, aber leider schaffe ich es nicht mal, das zum Laufen zu bringen. Wenn ich einfüge und dann ausführen will, kommt immer das Fenster "Makros", aber da kann ich nur ein neues Makro anlegen.
Ich glaube aber, dass es auch noch nicht ganz die Funktion ist, die ich bräuchte.

Ich versuch's mal mit einem Beispiel zu erklären:
Die Zeilen 1-5 sind gruppiert und die Details ausgeblendet, das heisst sichtbar ist nur Zeile 5. Die Zeilen 1 und 4 wären aber sowieso ausgeblendet. Diese sollten nun auf Zeilenhöhe 0 gesetzt werden, aufgrund dessen, dass in Zelle A1 und A4 z.B. "Ausblenden" steht.

LG malli

Antwort 5 von Marie vom 21.11.2019, 15:52 Options

Zitat:
Einzufügen ind den Codebereich des Tabellenblattes wo es wirken soll.


Das bedeutet, wenn der Code in Tabellenblatt 1 laufen soll, dann klickst Du auf Alt+F11 und dort links oben auf Tabelle 1, dann geht ein leeres Codefenster auf, dort kopierst du den Code von Denkanstoßer rein und speicherst ab. Dann lässt Du den Cursor in dem Code und klickst im Menü auf den Pfeil unter dem Wort Testen.

wenn Du das gemacht hast schreibste mal exakt auf, was dann passiert, was nicht so passieren soll, bzw wenn eine fehlermeldung kommt exakt den Text. Habe deine Fragen und den Code nicht durchgelesen, weil ich glaube, dass Du daran erstmal gescheitert bist, dass Du den Code nicht richtig einfügst.

Gruß Marie

Antwort 6 von malli vom 21.11.2019, 16:46 Options

Das mit dem Einfügen ist mir grundsätzlich mal klar. Nur dass sich eben beim Ausführen immer das Fenster "Makros" öffnet. Sonst tut sich nichts.

Testen gibt's bei mir nicht, ich hätte Ausführen gewählt.

LG malli

Antwort 7 von Marie vom 21.11.2019, 17:15 Options

Dann hast Du den Code vermutlich nicht in Visual Basic eingefügt???

Gruß Marie

Antwort 8 von malli vom 22.11.2019, 07:46 Options

Meiner Meinung nach schon ... hab' mal einen Screenshot gemacht.

http://img519.imageshack.us/img519/3329/bildjt8.jpg

LG malli

Antwort 9 von Martina vom 22.11.2019, 10:12 Options

Hallochen,

Malli, dein Macro ist aber noch nicht komplett.
Du musst da noch eine Abrage mit reinbringen:

'zuerst definierst du dir Zeile und Spalte und den Wert nach dem du suchst, damit du das eigentliche Makro nicht bei jeder neuen Abfrage ändern musst.
Spalte = "D"
Zeile = 2
suche= "xyz"
'oder wenn du nach einer Ziffer (z.B 12) suchst
suche = 12
'du kannst auch noch vonZeile und bisZeile definieren.
vonZeile = 2
bisZeile = 200

'und hier nun das eigentliche Makro:
[b]For [/b]Zeile = vonZeile [b]To[/b] bisZeile
    [b]If [/b]Range (Spalte & ":" & Zeile) == suche [b]Then[/b]
         Columns(Spalte & ":" & Spalte).Select
         Selection.ColumnWidth = 0
         Rows(Zeile & ":" & Zeile).Select
         Selection.RowHeight = 0
    [b]End If[/b]
[b]Next [/b]Zeile


Eine andere Zuweisung der Spaltenbreite bzw. Zeilenhöhe würde ich weglassen. Weil: Wenn du einmal die Optionen auf 0 gesetzt hast, diese sicher nicht wieder auf einen Wert gesetzt werden soll. Die Spalten und Zeilen sollen doch sicher "ausgeblendet" bleiben.

LG Martina

Antwort 10 von malli vom 22.11.2019, 13:12 Options

Hallo Martina,

vielen Dank.

Leider bekomme ich noch folgende Fehlermeldung:
Laufzeitfehler '1004':
Anwendungs- oder objektdefinierter Fehler.

Wenn ich das richtig sehe, bei der Zeile "If Range ..."
Die Überwachung meint "Ausdruck im Kontext nicht definiert".

Ich habe es jetzt so drinnen stehen (ein = habe gelöscht, da die Zeile rot war):

Sub Ausblenden()

Spalte = "A"
Zeile = 1
suche = "Hide+Auto"
vonZeile = 2
bisZeile = 10

For Zeile = vonZeile To bisZeile
If Range("Spalte" & ":" & "Zeile") = suche Then
Columns(Spalte & ":" & Spalte).Select
Selection.ColumnWidth = 0
Rows(Zeile & ":" & Zeile).Select
Selection.RowHeight = 0
End If
Next Zeile

End Sub

LG malli

Antwort 11 von Martina vom 22.11.2019, 13:21 Options

Hallochen,

Zitat:
If Range("Spalte" & ":" & "Zeile") = suche Then

Du darfst Spalte und Zeile nicht in Hochkommas setzen. Dann müsste es funktionieren.

LG Martina

Antwort 12 von malli vom 22.11.2019, 13:22 Options

Ich nochmal ...

Die Zeile sieht so aus:
If Range(Spalte & ":" & Zeile) = suche Then

Antwort 13 von malli vom 22.11.2019, 13:38 Options

Ups, ich hab' nicht aktualisiert. Das mit den Hochkomma war nur ein verzweifelter Versuch, die Fehlermeldung ändert sich aber nicht.

Antwort 14 von malli vom 22.11.2019, 13:46 Options

Kann es sein, dass der Doppelpunkt raus muss? Dann läuft es nämlich durch ... Zwar noch nicht ganz so, wie es sollte, aber immerhin! :-)

Antwort 15 von malli vom 22.11.2019, 14:10 Options

Vielen lieben Dank, Martina. Dank deiner Hilfe habe ich zumindest den ersten Teil geschafft.

Spalte = "A"
Zeile = 1
suche = "Hide+Auto"
vonZeile = 2
bisZeile = 10

For Zeile = vonZeile To bisZeile
If Range(Spalte & Zeile) = suche Then
 Rows(Zeile & ":" & Zeile).Select
 Selection.RowHeight = 0.7 'notwendig, da sonst beim Aufblenden der Gruppierung wieder die Standardhöhe hergestellt wird
End If
Next Zeile


Nur, wie bekomme ich das jetzt auch noch für die Spalten hin? Bei den Zeilen kann ich ja z.B. 2-10 sagen, aber wie schaffe ich das mit Buchstaben?

LG malli

Antwort 16 von Martina vom 22.11.2019, 15:16 Options

Hallochen,

das ist etwas schwieriger. Du musst dir denken:
A=1
B=2
C=3
usw.

Dann machst du noch eine Schleife mehr. Kannst aber dann die Zelle nicht mehr mit Range ansprechen, sondern musst Cells benutzen.

Zeile = 1
suche = "Hide+Auto"
vonZeile = 2
bisZeile = 10

For Spalte = 1 To 5 'also Spalte A bis E
   For Zeile = vonZeile To bisZeile
      If Cells(Zeile,  Spalte) = suche Then
         Rows(Zeile & ":" & Zeile).Select
         Selection.RowHeight = 0.7 
      End If
   Next Zeile
Next Spalte


LG Martina

Antwort 17 von malli vom 29.11.2019, 14:15 Options

Sorry, dass ich mich erst heute wieder melde, aber ich bin vorher nicht dazugekommen es auszuprobieren.

Vielen Dank nochmal, hat prima geklappt!

LG malli

Ähnliche Themen

Excel Druck Makro mit bestimmten Drucker
Ric  07.02.2007 - 122 Hits - 1 Antwort

Zeilenbreite und Zeilenhöhe in mm darstellen
Blacky2  14.05.2007 - 258 Hits - 1 Antwort

Summen bilden mit 16 Kriterien, davon 15 oder kriterien
Holk  24.10.2007 - 144 Hits - 3 Antworten

mit Makro/VBA genaue Rechtecke zeichnen
Chmumann  15.04.2008 - 27 Hits - 4 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026