Office: (Office 2013) Dynamischer Zeilenbereich über VBA

Helfe beim Thema Dynamischer Zeilenbereich über VBA in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, ich arbeite gerade an einer Preisliste und möchte diese etwas "dynamisch" gestalten. Es gibt ca. 30 verschiedene Produkte nach... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Groot, 11. Oktober 2017.

  1. Groot User

    Dynamischer Zeilenbereich über VBA


    Hallo zusammen,

    ich arbeite gerade an einer Preisliste und möchte diese etwas "dynamisch" gestalten.
    Es gibt ca. 30 verschiedene Produkte nach denen ich filtern möchte (ausblenden in der Preisliste), da nicht alle Kunden dieselben Produkte bekommen.

    Den ersten Filter habe ich soweit fertig und er funktioniert auch wie gewünscht. Problem ist nun, dass sich bei 30 Typen immer mal etwas ändert (sprich: Zeilen werden eingefügt wegen neuen Produkten, Änderungen, etc.).

    Wie bekomme ich es nun hin, dass das VB Skript erkennt wenn Zeilen davor, danach oder dazwischen eingefügt werden?

    Der Filter-Code sieht folgendermaßen aus:

    Code:
    Private Sub CheckBox1_Click()
    
    Dim sht As Worksheet
    Dim varProdukt1 As Range
    
    Set sht = Worksheets("Preisliste")
    Set varProdukt1 = sht.Rows("12:40")
    
    If CheckBox1 = True Then
    varProdukt1.Hidden = True
    Else
    If CheckBox1 = False Then
    varProdukt1.Hidden = False
    End If
    End If
    
    End Sub
    Wie ihr seht ist der auszublendende Bereich die Zeilen 12 - 40 in der Tabelle "Preisliste". Dieser Bereich müsste abgefragt werden ob eben Zeilen davor, danach oder dazwischen eingefügt wurden. Spalten gibt es (voraussichtlich) keine neuen, lediglich Zeilen.

    Vielen Dank schon mal für Eure Hilfe!
     
  2. Lutz Fricke Erfahrener User
    Lutz Fricke, 11. Oktober 2017
    #2
  3. Groot User
    Hallo Lutz,

    vielen Dank für die schnelle Antwort. Diese Möglichkeit kannte ich noch gar nicht.
    Allerdings weiß ich nicht wie das jetzt genau aussehen soll, da ich ja eine Tabelle habe, mit Überschriften natürlich, aber alles untereinander.
    Deshalb müsste ich ja dann quasi von der letzten Zeile zurückrechnen. Dieser Bereich wäre ja fest und daher nicht dynamisch.

    Also bspw. von der letzten Zeile - 100 Zeilen, aber wenn etwas dazwischen eingefügt wird funktioniert es ja nicht mehr.
    Oder habe ich hier einen Denkfehler?
     
  4. Lutz Fricke Erfahrener User

    Dynamischer Zeilenbereich über VBA

    Hallo Groot,

    dann lade doch mal ne Beispieldatei inkl. Code hoch.

    Gruß,
    Lutz
     
    Lutz Fricke, 11. Oktober 2017
    #4
  5. Groot User
    Hallo Lutz,

    anbei die Datei.

    In der Tabelle "Preisliste" werden die einzelnen Produkte dargestellt mit den Preisen und Artikelbeschreibungen.
    In der Tabelle "Filter" können die Produkte ausgeblendet werden (Ich habe bis jetzt nur "Produkt 1" programmiert, die anderen Checkboxen sind einfach nur da. Über die Radio Buttons kann der Preis errechnet werden
    In der Tabelle "EK" stehen die Einkaufspreise sowie diverse Faktoren zur VK Berechnung sowie feste Aufpreise für bestimmte Varianten, die bilde ich in den Formeln ab (siehe z.B. in "Preisliste" C9).

    Nun möchte ich dieses Ausblenden dynamisch gestalten falls neue Produkte / Änderungen hinzukommen.
    Aufgrund deines Tipps habe ich nochmal Google bemüht und ich könnte mir vorstellen, dass es über "Find" Funktion läuft, indem ich in Spalte B z.B. nach "Produkt 1" suche. Wenn das gefunden wird bräuchte ich jetzt noch eine Funktion, die mir von da an weiter bis zur nächsten Zeile mit Hintergrundfarbe sucht, diese Zeile wird dann ausgelesen und nach Abzug einer Zeile, habe ich die endgültige Zeile... hoffe das das geht. :-)

    Den Anhang Preisliste_Beispiel.xlsm betrachten
     
  6. Lutz Fricke Erfahrener User
    Hallo Groot,

    aber warum machst Du das nicht einfach über einen Filter?
    Mir geht der Sinn des ganzen nicht so richtig ein...

    Gruß,
    Lutz
     
    Lutz Fricke, 11. Oktober 2017
    #6
  7. Groot User
    Guten Morgen,

    vielleicht denke ich zu kompliziert, allerdings bin ich anscheinend zu blöd den Filter zu erstellen, da mir die Überschriften nicht bei den Filtern angezeigt werden und wenn ich versuche einen Textfilter hinzuzufügen mit der entsprechenden Überschrift passiert nichts... auch weiß ich nicht wie ich den Bereich festlege...
     
  8. Lutz Fricke Erfahrener User

    Dynamischer Zeilenbereich über VBA

    Hallo,

    ok, fangen wir gaaanz vorne an. Was genau ist Dein Ziel?
    Möchtest Du Zeilen ausblenden (wofür)?
    Möchtest Du bestimmte Daten suchen und in einer anderen Tabelle damit weiterrechnen?

    Ich habe dein Ziel scheinbar noch nicht richtig begriffen.

    Solltest Du einfach einen Filter über alles setzen wollen, in dem Du manuell ein- und ausblendest, einfach Bereich markieren und Filter setzen.

    Gruß,
    Lutz
     
    Lutz Fricke, 12. Oktober 2017
    #8
  9. Groot User
    Hallo,
    das Ziel ist eine "dynamische" Preisliste zu erstellen.
    Zeilen werden ausgeblendet, da nicht alle Kunden alle Produkte erhalten sollen bzw. dürfen, sprich für jeden Kunden kann eine individuelle Preisliste erstellt werden, mit eben ein paar Klicks in Checkboxen.
    In der Tabelle EK wird der Preis berechnet und in die Tabelle Preisliste eingefügt. Es gibt auch verschiedene Preisstufen (A + B), je nach Kunde.
    Später möchte ich noch eine Schaltfläche hinzufügen, die mir die Datei exportiert, mit den entsprechenden Filtereinstellungen, aber eben ohne die EKs. Aber das kommt erst später.

    Da sich wie gesagt die Produkte, etc. auch mal ändern, und ich die Filter nicht jedes mal händisch anpassen möchten (den Zeilenbereich), möchte ich diesen Bereich eben dynamisch gestalten. Im obigen Beispiel kann ich denke ich nach der Überschrift (z.B. "Produkt 1" suchen, über die Find Funktion, da der Produktname einmalig ist in dieser Spalte), jetzt müsste ich noch wissen wie ich das Ende des Bereichs herausfinde. Die Überschriften sind ja entsprechend rot markiert. Ich bräuchte also dann eine Funktion, die mir aber der Zeile, wo der Produktname gefunden wurde weitersucht bis zur nächsten Überschrift, dann hätte ich meinen dynamischen Bereich.

    Ich hoffe dass das halbwegs verständlich ist. Evtl. zu umständlich, aber es müssen noch andere Mitarbeiter außer mir diese Liste "bedienen" und es darf eben auf keinen Fall mal die Tabelle EK mit rausgehen..., deshalb der ganze Aufwand mit der Automatisierung...
     
  10. Lutz Fricke Erfahrener User
    Hallo Groot,

    meinst Du das:
    Code:
    Set sht = Worksheets("Preisliste")
    
    Zeile1 = sht.Cells.Find(What:="Produkt 1").Row
    Zeile2 = sht.Cells.Find(What:="Produkt 2").Row - 1
    
    Set varP1 = sht.Rows(Zeile1 & ":" & Zeile2)
    
     
    Lutz Fricke, 13. Oktober 2017
    #10
  11. Groot User
    Hallo Lutz,

    ja, genau so suche ich das! Vielen Dank!

    Nur müsste jetzt die "Zeile 2" noch dynamisch sein, da es ja sein kann, dass ein anderes, neues Produkt, in Zukunft dazwischen eingefügt wird.
    Ich bräuchte also etwas, das mir nach der Formatierung sucht, da die Überschriften ja wie gesagt in roter Farbe sind... ich weiß allerdings nicht ob es das gibt.
     
  12. Lutz Fricke Erfahrener User
    Hallo Groot,

    ändere den Code so
    Code:
    Zeile2 = sht.Cells.Find(What:="Preis", After:=Cells(Zeile1 + 1, 1)).Row - 1
    Gruß,
    Lutz
     
    Zuletzt bearbeitet: 13. Oktober 2017
    Lutz Fricke, 13. Oktober 2017
    #12
  13. Groot User

    Dynamischer Zeilenbereich über VBA

    Ja, natürlich. Wie blöd.
    Hätte ich auch selbst draufkommen können, ist ja immer gleich in der Zeile.
    Sorry, habe den Wald vor lauter Bäumen nicht gesehen. Vielen Dank!
     
Thema:

Dynamischer Zeilenbereich über VBA

Die Seite wird geladen...
  1. Dynamischer Zeilenbereich über VBA - Similar Threads - Dynamischer Zeilenbereich VBA

  2. Dynamische Tabellen mit automatischer Aktualisierung

    in Microsoft Excel Hilfe
    Dynamische Tabellen mit automatischer Aktualisierung: Hallo in die Runde! Vorab schon mal vielen Dank für alle Mühen und die Hilfe! Ich habe folgendes Anliegen: Ich habe eine Geräteliste als Excel Datei mit einigen verschiedenen Tabellenblättern...
  3. (Excel) Dynamische Tabelle, VBA, fehlende Formatierung?

    in Microsoft Excel Hilfe
    (Excel) Dynamische Tabelle, VBA, fehlende Formatierung?: Liebe Experten, Gefilterte Daten sollen in ein Listobject übertragen werden. Für das Listobject habe ich ein Template angelegt, dass alle Formatierungen (u.a. bedingte Formatierung etc.) enthält....
  4. "dynamisches Bild" in Excel

    in Microsoft Excel Hilfe
    "dynamisches Bild" in Excel: Hallo Leute, ich verzweifele bald, ich versuche seit heute morgen es hinzubekommen (hab eine Beispieltabelle erzeugt auf die ich mich jetzt direkt beziehe), dass ich in der A2 Zelle per Dropdown...
  5. Dynamische Achsenskalierung aus Zelle

    in Microsoft Excel Hilfe
    Dynamische Achsenskalierung aus Zelle: Hallo zusammen! Ich suche nach einer Möglichkeit, die Grenze der Achsen eines Excel-Diagramms variabel zu machen, ohne dabei VBA einzusetzen. D.h.: es soll je eine Zelle geben, in die ich die...
  6. Verweis oder dynamischer Tabellenname erstellen

    in Microsoft Excel Hilfe
    Verweis oder dynamischer Tabellenname erstellen: Hallo liebe Wissensgemeinde, ich habe ein eigentlich sehr simples Problem. Meine Excel-Datei "Wunschdienstplan" besteht aus 2 Arbeitsblättern. Im Arbeitsblatt1 werden mittels Dropdown-Feld die...
  7. Pivot Dynamisch

    in Microsoft Excel Hilfe
    Pivot Dynamisch: Hallo Zusammen, ich benutze idR immer diese Formel =OFFSET('query with rate'!$A$4,,,COUNTA('query with rate'!$A:$A),COUNTA('query with rate'!$4:$4)) fuer Pivot-Tabelle und habe mich gefragt,...
  8. Ausgewählte daten aus Datenschnitt in Zelle anzeigen

    in Microsoft Excel Hilfe
    Ausgewählte daten aus Datenschnitt in Zelle anzeigen: Moin, ich erstelle gerade ein dynamisches Dashboard und habe dafür in der obersten Zeile eine Übersicht über die grundlegenden Daten erstellt. Nun würde ich dort innerhalb einer Zelle gerne die...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden