Thema Datum  Von Nutzer Rating
Antwort
29.04.2015 08:52:24 rafa_red
Solved
29.04.2015 12:42:30 Der Steuerfuzzi
NotSolved
29.04.2015 14:20:58 rafa_red
NotSolved
Blau ausgeblendete zeilen mitzählen
29.04.2015 15:09:18 Gast78573
NotSolved
30.04.2015 08:03:20 rafa_red
NotSolved
30.04.2015 08:46:24 rafa_red
NotSolved

Ansicht des Beitrags:
Von:
Gast78573
Datum:
29.04.2015 15:09:18
Views:
1261
Rating: Antwort:
  Ja
Thema:
ausgeblendete zeilen mitzählen

Hallo,

Mühsam ernährt sich das Eichhörnchen. Aber Du machst Fortschritte, der Code schaut schon viel besser aus. Und Rom wurde ja schließlich auch nicht an einem Tag erbaut.

Ich würde tatsächlich eine SUB verwenden. Diese kann man auch im Coder aufrufen: 

Call daten_löschen
Call daten_übertragen

Eine Function würde ich nur verwenden, wenn ein Wert auch wirklich zurückgegeben wird.

In der folgenden if-Abfrage erhöst Du i sowohl in der if als auch in der else, daher kannst Du das i = i + 1 auch nur einmal außerhalb schreiben, da es sowieso bei jedem Durchlauf erhöht wird:

            If Rows(i).Hidden = True Then                                   'wenn Zellen ausgeblendet, dann überspringen aber mitzählen
            i = i + 1
            ElseIf Rows(i).Hidden = False Then                              'wenn Zellen nicht ausgeblendet, dann
            Sheets("Roadmap").Cells(j, 3).Value = Sheets("Übersicht").Cells(i, 1)
                If Cells(i, 2) = "abc" Then                                'Wenn Zelle = "abc", übertrage den Wert "1" in Zielzelle in "Roadmap"
                Sheets("Roadmap").Cells(j, 2).Value = "1"
                ElseIf Cells(i, 2) = "def" Then
                Sheets("Roadmap").Cells(j, 2).Value = "3"
                End If
            i = i + 1                                                       'Zellen in "Übersicht" und "Roadmap" um jeweils 1 erhöhen
            j = j + 1
            End If

Zudem prüfst Du ja nur zwei Zustände (True oder False) und nachdem du bei true nur i erhöst, reicht stattessen folgender Code:

            If Rows(i).Hidden = False Then                              'wenn Zellen nicht ausgeblendet, dann
               Sheets("Roadmap").Cells(j, 3).Value = Sheets("Übersicht").Cells(i, 1)
                   If Cells(i, 2) = "abc" Then                                'Wenn Zelle = "abc", übertrage den Wert "1" in Zielzelle in "Roadmap"
                      Sheets("Roadmap").Cells(j, 2).Value = "1"
                   ElseIf Cells(i, 2) = "def" Then
                      Sheets("Roadmap").Cells(j, 2).Value = "3"
                   End If
               j = j + 1
            End If
            i = i + 1                                                       'Zellen in "Übersicht" und "Roadmap" um jeweils 1 erhöhen

Wenn Du mehrere Inhalte außer abc und def abfragen möchtest, würde ich Dir statt if ... then eher Select ... Case empfehlen, siehe z. B. hier: http://www.office-loesung.de/ftopic177172_0_0_asc.php

Die Zeile

Sheets("Übersicht").Select

kannst Du Dir sparen, wenn Du bei allen Zugriffen auf das Activesheet (bzw. wenn nichts davor steht) das Sheets("Übersicht"). voranstellst. Also z. B. statt

Do While IsEmpty(Cells(i, 1)) = False
...
If Rows(i).Hidden = True Then
...
If Cells(i, 2) = "abc" Then
...

schreibst Du:

Do While IsEmpty(Sheets("Übersicht").Cells(i, 1)) = False
...
If Sheets("Übersicht").Rows(i).Hidden = True Then
...
If Sheets("Übersicht").Cells(i, 2) = "abc" Then
...

Das ist wesentlich leichter zu lesen, da Du nicht immer im Code suchen musst, welches Sheet gerade aktiv ist. Schließlich ist das Sheet ja direkt bestimmbar und nicht variabel.

Theoretisch kannst Du das ganze auch mit Variablen lösen:

Dim Roadmap as Worksheet
Dim Übersicht as Worksheet
Set Roadmap = Sheets("Roadmap")
Set Übersicht = Sheets("Übersicht")

dann kannst Du mit den Variablen auf die Blätter zugreifen, z.B.:

Roadmap.Cells(i, 1)
Übersicht.Cells(j, 3)

Grüße

Steuerfuzzi


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
29.04.2015 08:52:24 rafa_red
Solved
29.04.2015 12:42:30 Der Steuerfuzzi
NotSolved
29.04.2015 14:20:58 rafa_red
NotSolved
Blau ausgeblendete zeilen mitzählen
29.04.2015 15:09:18 Gast78573
NotSolved
30.04.2015 08:03:20 rafa_red
NotSolved
30.04.2015 08:46:24 rafa_red
NotSolved