Collapse column

Autor Thema: Office 2007: Zeile durch VBA-Mkro einblenden  (Gelesen 1055 mal)

Offline bkself

  • Newbie
  • *
  • Beiträge: 5
    • Profil anzeigen
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Wenig
  • Version [Office] : Office 2007
Office 2007: Zeile durch VBA-Mkro einblenden
« am: April 28, 2017, 17:57:43 Nachmittag »
Ein Hallo in die Gemeinde,

ich habe hier schon einiges durchgewühlt, aber noch keine Lösung.
Mein Problem in Office 2007:
ich habe ein Sheet mit einer Tabelle
die erste Spalte beinhaltet die Range("ID"), einige Spalten später die Range("Name")
alle noch nicht gefüllten Zeilen sind ausgeblendet
in den Zellen der Range("ID") steht folgende Formel:
Bsp. aus Zelle B13: =WENN($O12<>"";$C12+1;0) - Spalte B steht für die Range("ID"), Spalte O steht für die Range("Name")

Auslöser für die Formel in B13 ist also in dem Fall die Zelle $O12.
Die Zeile 13, wie auch alle nachfolgenden sind ausgeblendet. Durch die Berechnung erhöht sich der Zähler der ID automatisch um 1 und ist damit immer >0.

Als VBA-Lösung zum einblenden der Zeile 13 schwebt mir vor, all die Zeilen nach dem Calculate-Ereignis einzublenden, welche in der Range("ID") einen Wert >0 haben.
Da ich von VBA nur begrenzt Kenntnisse habe, wäre mir Hilfe sehr recht. Dafür schonmal Danke im Voraus.

Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden und Dein Anliegen in Auftrag geben.
>>> Schnell und einfach ein unverbindliches Angebot anfordern. Per E-Mail an anfrage@excel-inside.de oder per Online-Formular
<<<

!!! Wichtige Information
!!! Dieses Forum steht aus technischen Gründen ab dem 11. September 2019 nur noch im Lesemodus zur Verfügung.
Das NEUE Office-Fragen-Forum kannst du aber unter der gewohnten Domain https://office-fragen.de wie gewohnt nutzen.

- Wir freuen uns auf deinen Besuch im neuen Forum.

Offline gmg-cc

  • Hero Member
  • *****
  • Beiträge: 1.321
    • Profil anzeigen
    • Meine Webseite
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Gut
  • Version [Office] : Office 2016
Antw:Office 2007: Zeile durch VBA-Mkro einblenden
« Antwort #1 am: April 28, 2017, 20:17:29 Nachmittag »
Moin,
du solltest einmal über eine Intelligente Tabelle nachdenken.Da kommst du ohne versteckte Leerzeilen aus und auch sonst haben diese Objekte entscheidende Vorteile.
Gruß
Günther

Offline bkself

  • Newbie
  • *
  • Beiträge: 5
    • Profil anzeigen
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Wenig
  • Version [Office] : Office 2007
Antw:Office 2007: Zeile durch VBA-Makro einblenden
« Antwort #2 am: April 28, 2017, 22:09:07 Nachmittag »
Hi,
erstmal danke für die Antwort. Intelligente Tabellen sind mir völlig neu, da habe ich die Nacht zu tun.

Offline gmg-cc

  • Hero Member
  • *****
  • Beiträge: 1.321
    • Profil anzeigen
    • Meine Webseite
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Gut
  • Version [Office] : Office 2016
Antw:Office 2007: Zeile durch VBA-Mkro einblenden
« Antwort #3 am: April 28, 2017, 22:27:03 Nachmittag »
Moin,
kannst ja mal hier zum Einstieg reinschnuppern  ;)
Gruß
Günther

Offline bkself

  • Newbie
  • *
  • Beiträge: 5
    • Profil anzeigen
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Wenig
  • Version [Office] : Office 2007
Antw:Office 2007: Zeile durch VBA-Mkro einblenden
« Antwort #4 am: April 29, 2017, 05:38:52 Vormittag »
Hallo Günther,
ich muss feststellen, das intelligente Tabellen echt gut sind. Die Möglichkeiten sind recht umfangreich. Danke für den Hinweis.
Sie sind aber für mein Problem scheinbar nicht ausreichend hilfreich, oder ich übersehe etwas.
  • in meiner Tabelle sind nur die gefüllte Zeilen eingeblendet( hidden.false )
  • wie automatisiere ich das einblenden der neuen Zeile, wenn der Wert in der Range("ID") größer 0 wird? Das knifflige daran aus meiner Sicht ist, dass diese Zeile bis zum auslösen der ID-Berechnung eben nicht eingeblendet ist.

Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden und Dein Anliegen in Auftrag geben.
>>> Schnell und einfach ein unverbindliches Angebot anfordern. Per E-Mail an anfrage@excel-inside.de oder per Online-Formular
<<<

!!! Wichtige Information
!!! Dieses Forum steht aus technischen Gründen ab dem 11. September 2019 nur noch im Lesemodus zur Verfügung.
Das NEUE Office-Fragen-Forum kannst du aber unter der gewohnten Domain https://office-fragen.de wie gewohnt nutzen.

- Wir freuen uns auf deinen Besuch im neuen Forum.

Offline gmg-cc

  • Hero Member
  • *****
  • Beiträge: 1.321
    • Profil anzeigen
    • Meine Webseite
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Gut
  • Version [Office] : Office 2016
Antw:Office 2007: Zeile durch VBA-Mkro einblenden
« Antwort #5 am: April 29, 2017, 10:28:39 Vormittag »
Moin,
ich nehme an, dass in den versteckten Zeilen außer der ID nichts drin steht.
Darum: Die Zeilen werden erst gar nicht auf Vorrat angelegt. Sprich löschen.
Wenn du nun in der letzten Zelle der Tabelle Tab drückst, wird ja die neue Zeile angelegt und die ganzen Formeln werden aus der Zeile darüber übernommen und entsprechend angepasst. Damit dürfte dann auch die Angelegenheit mit den IDs erledigt sein.

Ansonsten: Wenn du bei deinem Modell bleiben willst ...
Option Explicit

Sub ausblenden()
   Dim lRow As Long, Ze As Long
   lRow = Cells(Rows.Count, 1).End(xlUp).Row
   For Ze = 2 To lRow
      If Cells(Ze, 1).Value = 0 Then Exit For
   Next Ze
   Rows(Ze & ":" & lRow).Hidden = True
End Sub

Sub einblenden()
   Rows.Hidden = False
End Sub
Gruß
Günther

Offline bkself

  • Newbie
  • *
  • Beiträge: 5
    • Profil anzeigen
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Wenig
  • Version [Office] : Office 2007
Antw:Office 2007: Zeile durch VBA-Makro einblenden
« Antwort #6 am: April 29, 2017, 10:58:44 Vormittag »
Moin,
ich hatte auch etwas gebastelt, jedoch speziell die Range("ID") benannt.
Sub Zeilen_einblenden()
Application.ScreenUpdating = False

For i = Range("ID").Row To Range("ID").Row + Range("ID").Rows.count - 1
    If Range("ID").Cells(i, 1).Value > 0 Then
        Range("ID").Rows(i).Hidden = False
    Else
        If Range("ID").Cells(i, 1).Value <= 0 Then
            Range("ID").Rows(i).Hidden = True
        End If
    End If
Next i

Application.ScreenUpdating = True
End Sub
Er funktioniert auch. Nur, ich habe den Eindruck, dass das durchlaufen der Schleife etwas dauert. Wobei bisher die Range bis auf Zeile 100 begrenzt war. Aber was passiert, wenn man mehr Zeilen füllt. An der Hardware kann es definitiv nicht liegen.
Wenn ich jetzt daraus eine intelligente Tabelle erstelle, komme ich irgendwann ja auch auf mehr als 100 gefüllte Zeilen. Jetzt kommt alternativ Dein Script.
Verstehe ich das richtig - Das durchlaufen der Schleife Deines Scriptes wird unterbrochen, sowie eine Zelle in der Range erscheint, welche nicht das Kriterium 0 erfüllt?
Danke für die Hilfestellung und nicht vergessen, soviel VBA hatte ich noch nicht.

Offline gmg-cc

  • Hero Member
  • *****
  • Beiträge: 1.321
    • Profil anzeigen
    • Meine Webseite
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Gut
  • Version [Office] : Office 2016
Antw: Antw:Office 2007: Zeile durch VBA-Makro einblenden
« Antwort #7 am: April 29, 2017, 11:39:54 Vormittag »
Nur, ich habe den Eindruck, dass das durchlaufen der Schleife etwas dauert.
Ja, durchaus. Und das liegt daran, dass du jede Zeile einzeln unsichtbar machst.

Zitat
Wenn ich jetzt daraus eine intelligente Tabelle erstelle,

Da würde ich (für dich als Einsteiger in Sachen VBA) sagen: Entweder Intelligente Tabelle oder deine bisherige Lösung mit VBA

Zitat
Dein Script. - Verstehe ich das richtig - Das durchlaufen der Schleife Deines Scriptes wird unterbrochen, sowie eine Zelle in der Range erscheint, welche nicht das Kriterium 0 erfüllt?
Ein klares "Jein". Größer o ist das Kriterium! Denn -1 ist auch ungleich 0.
Und dann steigt VBA aus der Schleife aus und merkt sich in der Variablen Ze die Ausstiegs-Zeile. Dann werden in einem Rutsch von der Zeile Ze bis zur letzten (berechneten) Zeile lRow versteckt: Rows(Ze & ":" & lRow).Hidden = True
Da dieses nur ein einziger Zugriff ist brauche ich auch nicht das ScreenUpdating auszuschalten (könnte es aber machen).
So, ich bin jetzt erst einmal einige Stunden anderweitig beschäftigt.
Schönes Wochenende!
Gruß
Günther

Offline bkself

  • Newbie
  • *
  • Beiträge: 5
    • Profil anzeigen
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Wenig
  • Version [Office] : Office 2007
Antw:Office 2007: Zeile durch VBA-Makro einblenden
« Antwort #8 am: April 29, 2017, 13:23:14 Nachmittag »
Super Antwort. Mein Resume:
Da ja immer nur eine Zeile dazukommt kann man das Script ja so verändern:
kommt in Range("Name") ein Wert dazu, löst er die Anzeige des neuen Wertes der Range("ID") in der darunter noch ausgeblendeten Zeile aus. Dadurch soll er diese, zuzüglich der darüber liegenden eingeblendeten Zeilen im Ganzen, alle auf eingeblendet lassen und alle darunter im Block auf ausgeblendet lassen. Also nicht alle Zeilen einzeln prüfen.
Da schau ich doch mal, wie ich das hinbekomme. Und es wäre wohl völlig wurscht, wie viele Datensätze das Sheet hat.

Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden und Dein Anliegen in Auftrag geben.
>>> Schnell und einfach ein unverbindliches Angebot anfordern. Per E-Mail an anfrage@excel-inside.de oder per Online-Formular
<<<

!!! Wichtige Information
!!! Dieses Forum steht aus technischen Gründen ab dem 11. September 2019 nur noch im Lesemodus zur Verfügung.
Das NEUE Office-Fragen-Forum kannst du aber unter der gewohnten Domain https://office-fragen.de wie gewohnt nutzen.

- Wir freuen uns auf deinen Besuch im neuen Forum.