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. Dynamischer Pfad

    in Microsoft Access Hilfe
    Dynamischer Pfad: Hallo ins Forum, ich habe eine Frage. Ich habe mir eine Datenbank in Access erstellt. Diese lade ich mir über Power Query in eine Excel Tabelle. Soweit alles kein Problem. Aber wie kann ich dort...
  3. dynamische Bezug auf Feiertagskalender in Formel "Nettoarbeitstage"

    in Microsoft Excel Hilfe
    dynamische Bezug auf Feiertagskalender in Formel "Nettoarbeitstage": Hallo Zusammen, ich habe leider ein paar Schwierigkeiten die Nettoarbeitstage von Mitarbeitern an verschiedenen Standorten in verschiedenen Bundesländern zu ermitteln. Irgendwie stehe ich gerade...
  4. Dynamische Verknüpfung von Dokumenten

    in Microsoft Word Hilfe
    Dynamische Verknüpfung von Dokumenten: Hi, ich muss 10 unterschiedliche Vertragsvorlagen, die aber alle identische Anlagen haben, im Word neu aufbauen. Bislang hatten wir LibreOffice im Einsatz. Dort hatte ich Globaldokumente angelegt...
  5. Mittelwert aus mehreren Spalten als dynamisches Array

    in Microsoft Excel Hilfe
    Mittelwert aus mehreren Spalten als dynamisches Array: Hallo liebes Forum, ich bin bei folgendem Problem ratlos: Ich berechne für verschiedene Dozenten Feedback anhand von 3 verschiedenen Kriterien. Die Stammdaten der Feedbacks stehen in einer...
  6. Erstellung eines Dynamischen Kalenders

    in Microsoft Excel Hilfe
    Erstellung eines Dynamischen Kalenders: Guten Morgen an Alle, ich hoffe, es geht euch soweit gut :) Ich wende mich heute an euch, weil ich gerade vollkommen verzweifle und irgendwie so ganz und garnicht weiterkomme und irgendwie...
  7. Erstellung eines Dynamischen Kalenders (ggf. VBA)

    in Microsoft Word Hilfe
    Erstellung eines Dynamischen Kalenders (ggf. VBA): Guten Morgen an Alle, ich hoffe, es geht euch soweit gut :) Ich wende mich heute an euch, weil ich gerade vollkommen verzweifle und irgendwie so ganz und garnicht weiterkomme und irgendwie...
  8. Dynamische Combobox mit zwei Bedingungen

    in Microsoft Excel Hilfe
    Dynamische Combobox mit zwei Bedingungen: Hallo ich bräuchte einen vba Code welcher eine dynamische Combobox befüllt. Zudem soll die Combobox alle schon eingetragenen Daten in einer Spalte beim Dropdown ausschiessen damit keine Doppelten...
  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