Clever-Excel-Forum

Normale Version: Zeilen im Makro dynamisch
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

ich weiss nicht so richtig, wie ich das Problem für die Suche formulieren kann. Mit meiner Überschrift bsw. komme ich da leider nicht weiter.

Aber letztlich beschreibt die Überschrift durchaus mein Problem. Also:

ich habe eine Exceltabelle, die ich als Formular für ein Protokoll einrichte, das auch andere Kollegen benutzen können.
Um vom Benutzer ggf. unnötige Zeilen ausblenden zu können, verwende ich ein Makro, das über eine Schaltfläche in der jeweiligen Zeile darüber die Zeilen ein- und ausblendet (im Beispiel blendet die Schaltfläche auf M184 die Zeilen 185-194 ein und aus.

Das sieht so aus:


Code:
   Dim varAusblend1 As Range
   Dim varSchalter1 As Range
 
   Set varAusblend1 = ActiveSheet.Rows("185:194")
   Set varSchalter1 = ActiveSheet.Cells(184, 13)

   If varSchalter1.Value = ChrW(10004) And varAusblend1.Hidden = True Then
       varAusblend1.Hidden = False
   Else
       If varSchalter1.Value <> ChrW(10004) And varAusblend1.Hidden = False Then
           varAusblend1.Hidden = True
       End If
   End If


und funktioniert auch.

Allerdings fallen mir derzeit bei der Entwicklung des Formular immer wieder neue Sachen ein und es wird ggf. später auch immer wieder Ergänzungen geben, die irgendwo im Formular eingepflegt werden müssen.

Ist es also möglich, die Zeilen:
Code:
Set varAusblend1 = ActiveSheet.Rows("185:194")
   Set varSchalter1 = ActiveSheet.Cells(184, 13)
so zu verändern, dass sich die Zeilenangaben (hier 184, 185, 194), beim Einfügen von bsw. 6 neuen Zeilen oberhalb von Zeile 184 in die Zeilenangaben 190, 191 u. 200 ändern ?

Wobei mir natürlich nicht die Zahlenwerte zum Lesen im Makro wichtig sind. Ich wollte damit nur die Funktion veranschaulichen.

Grüße aus dem Münsterland
vom Olaf

PS: ich nutze offline Office 365, Excel sollte also aktuell sein.
+1
sitze gerade vor einem ähnlichen Projekt, welches über 2000 Zeilen Code hat.
Sobald ich oben eine Zeile einfüge oder entferne muss ich den kompletten Code der 2000 Zeilen bezogen auf die Zeilenzahl anpassen.
Das ist extrem aufwändig und fehleranfällig.

Würde mich freuen, wenn es dafür eine Lösung gibt.
Hallo,

hierfür gibt es  Namen

z.b. Variabel=Bereich.verschieben(Start;0;0;Anzahl2(zeilen);Anzahl(spalten))

im Vba  Range("Variabel")
Das hilft aber nur, wenn man komplette, zusammenhängende Bereiche hat.

Wenn man z.B. abhängig vom Wert einer Combobox mit 1-10 cases bildet und für jeden Case einen anderen Bereich ein- / ausblendet wird das auch wieder kompliziert, da man dann extrem viele Namen bräuchte.


Sprich:
ComboBox1 = Case 1
Einblenden Zeile 2:2
Ausblenden Zeile 3:10

Combobox = Case 2
Einblenden Zeile 2:3
Ausblenden Zeile 4:10

usw....

Und das mit 20 verschiedenen Comboboxen, die jeweils unterschiedliche Bereiche betreffen.
Hallo,

Ja , dann solltest  du trotzdem deinen Ablauf überdenken, den  ProgrammCode   jedesmal anzupassen --> ist die denkbar schlechteste Lösung
Hallo Dieter,

erstmal Danke für die schnelle Antwort und den Versuch, mir zu helfen.

Allerdings kann ich damit erstmal so nix anfangen (mein Nickname ist halt Programm Smile .

Wie verwende ich dann den Namen, an welcher Stelle wird der benutzt und wie ändet sich dann mein Code?

Wäre nett, wenn Du mir das noch beantworten könntest.


ratlose Grüße
vom Olaf
Hi,

bleiben denn die Anzahl und die Reihenfolge der Zellen, die ausgeblendet werden, immer gleich? Könnte z.B. einen Button (oder ein Tastenkürzel) helfen, der die Zeilen oberhalb/unterhalb der aktuellen Zeile ausblendet? Vielleicht ginge auch ein Doppelklick auf eine Zelle (z.B. in Spalte A), mit dem dann die gewünschten Zeilen darüber/darunter ein- oder ausgeblendet werden.

Viel Erfolg.
Hallo Lucky,

Danke für die Antwort.

Ich beschreibe eine Zelle (durch Anklicken wie bei einer Checkbox oder einfaches Beschreiben) mit einem bestimmten Wert (X oder V-Haken). Wenn also in der Zelle (ich nen sie mal der Einfachheit Umschaltbox) ein Wert steht, werden die Zeilen eingeblendet, steht kein Wert drin, werden sie ausgeblendet.

Das Formular ist als solches nicht als Excelsheet (die Programmumgebung natürlich schon) erkennbar, sondern eher wie ein PDF gestaltet. Das Formular wird von Benutzern verwendet, die sich nicht mit Excelfunktionen beschäftigen wollen/sollen und schnell damit arbeiten können. (Im Wesentlichen wird nur was abgehakt und hier und da eine Bemerkung in eine Zelle hinzugefügt.)
Gleichwohl möchte ich jeweils nicht benötigte Teile ausblenden bzw. fallweise über diesen einfachen Maus-Klick einblenden lassen. Und durch einige zentrale Umschaltboxen werden auch größere Bereiche ausgeblendet, in denen bei deren Einblendung wiederum kleinere Bereiche aus- bzw. eingeblendet werrden können.

Das funktioniert auch alles ganz gut. Soweit reicht meine VBA-Spielerei bisher aus.
Ich hab halt noch keine Lösung dafür, wie ich es einrichten kann, dass ich oberhalb der Umschaltboxen neue Zeilen einfügen kann (halt weil sich das Formular ändert oder ich was vergessen habe) und sich dabei die Zeilenverweise im Makro anpassen.

hoffende Grüße
vom Olaf
Hallo Olaf,

siehe Namen (1) - Einstieg und folgende.

Gruß Uwe
Hallöchen,

zu den Namen gibt es auch in unserem Beispielbereich 5 Themen:

https://www.clever-excel-forum.de/forum-23.html


Allerdings sind die Bilder im ersten
https://www.clever-excel-forum.de/thread-271.html
"außerhalb", da muss ich mal schauen, wie ich die wieder rein bekomme Sad