Das Clever-Excel-Forum.de - Treffen
findet vom 15. - 17. September 2017 in Thüringen / Region Großer Inselsberg statt. Hotelbuchung ab sofort möglich.


Eigenschaften von Blatt 1 nach 2 gezielt übertragen
#1
Bug 
Hallo zusammen,

ich bastele an einen Code, ich muss dazu sagen, dass ich kein Profi bin, im gegenteil.

Folgendes soll geschehen:

Im Tabellenblatt "Spickzettel" sind Angaben aufgelistet. In der Spalte B kann ich die Filterfunktion nutzen und mir bestimmte Aktivitäten aussuchen. Diese kann eine Aktivität sein oder mehre (können durchaus auch alle ausgewählt werden). Habe ich mich für die Aktivitäten entscheiden, so beginne ich auf dem Blatt "Detalliert" in Spalte A bestimmte angaben untereinander zu machen. Wenn ich fertig bin, klicke ich auf ein Button der sich auf diese Seite rechts oben befindet (Heißt hier noch CommandButton21). Nun soll folgendes geschehen: Bedingt durch die getroffene Vorauswahl im Blatt "Spickzettel" sollen die Kreuze zusammengefasst übertragen werden und zwar für jede Zeile die eine Angabe enthält.

Beispiel:

Im Blatt "Spickzettel" wähle ich unter Aktivität "Kuchen backen und Aktivität 3". (Das ist alles was ich mit Blatt "Spickzettel" mache. Aktivität auswählen) Zu erkennen ist, dass ab derZelle D3 Kreuze gesetzt sind. Nun soll folgendes passieren: Diese Kreuze sollen als gesamt Menge betrachtet werden. Aktivität 3 hat 2 Kreuze, Aktivität "Kuchen backen" 3 Kreuze, da sich die Kreuzangaben überschneiden in Notwendigkeit C, "merken" wir uns insgesammt 4 Kreuze.( Das heißt alle Angaben unter "irgendwelche Angaben" in Blatt Detailliert werden 4 Kreuze haben.) Hätten wir soviele Aktivitäten ausgewöhlt, das alle Spalten ab D3 bis K_tabellenende Kreuze beinhaltet, dann hätten wir und für das nächste Blatt 6 Kreuze gemerkt)

Im Blatt "detailliert" schreiben ich unter "irgenwelche Angaben" die Angaben, die ich machen möchte. Ich schreibe erst Angabe1, dann Angabe2 usw. ich habe mich in diesen Beispiel für 4 Angaben entscheiden. Nun kommt das makro ins Spiel. Ich bin fertig mit meine Angaben (Hier sind es nur 6, könnten durchaus mehr sein) und klicke auf dem Commandbutton. Nun erscheinen die zusammengefasst Kreuze (ab D3), der Auswahl im Blatt Spickzettel.


Kompakt: Ich wähle also im Blatt Spickzetel aktivitäten aus. Es wird gemerkt in welche Spalten (ab D) Kreuze sind (v´bedingt durch die Auswahl, diese werden zu einer Zeile zusammen gefasst, insgesammt kann eine Zeile also 6 Kreuze beinhalten).
Nun mache ich in Blatt "Detailliert" angaben, ich schreibe dort in der Spalte A (ab A3) angaben. Wenn ich fertig bin klicke ich auf den Button, nun soll die gemerkte Zeile (die hier höchstens 6 Kreuze enthält) für jeden gemachten Eintrag eingesetzt werden.




das Problem: Das Programm reagiert nicht korrekt auf die Filterung. Wenn ich die Aktivitäten so auswähle wie sie der Reihe nach vorkommen, dann klappt es wunderbar. Wird beim Filtern jedoch eine Zeile "übersprungen", so hat das Makro Probleme diese Zeile darzustellen.

Zum Beispiel
Kuchen backen steht in Zeile3, wähle ich diese (nur diese aus) funktioniert alles wunderbar. Wähle ich aber das nicht sondern nur "deftiges kochen" (was in Zeile 4 steht) so werden mir keine Kreuze angezeigt.
Wähle ich kuchen backen (Zeile 3), dann "deftiges kochen" (Zeile 4) und halte die Zeilenreihenfolge so funktioniert alles wunderbar. Sobald ich eine Zeile überspringe, wird diese ignoriert bzw bricht der Makro scheinbar ab.

Weißt jemand wie das behoben werden kann?

Die Beispiel-Datei mit Code findet ihr unter: Beispiel

Und hier stelle ich euch den genutzten Code zur Verfügung:


Code:
Private Sub CommandButton21_Click()

Dim i As Integer
Dim wks As Worksheet
Set wks = Worksheets("Detailliert")
With Worksheets("Spickzettel").Cells.SpecialCells(xlCellTypeVisible)
  For i = 4 To 11
    If Application.WorksheetFunction.CountIf(.Columns(i), "x") > 0 Then _
     wks.Cells(3, i).Resize(wks.Cells(wks.Rows.Count, 1).End(xlUp).Row - 2) = "x"
  Next
End With

Wäre super wenn dieses Problem gelöst werden könnte 26
to top
#2
Hallo LuLu,

durch das Filtern wird der Bereich in mehrere Areas unterteilt, die jeweils zusammenhängenden sichtbaren Bereiche. Das Makro betrachtet nur das erste Area.
Selbiges fängt in Deinem Beispiel in Zeile 1 an und geht je nach gefilterter Spalte nur bis Zeile 2, den Überschriften.

Im Prinzip könntest Du die Areas so verarbeiten. Du musst aber aufpassen - wenn eine Spalte ausgeblendet ist, werden die Areas dadurch auch nochmal getrennt.
Du müsstest noch die Cells(3, ... variabel gestalten, damit die Ergebnisse in der Schleife For j ... sich nicht überschreiben. Falls es dazu fragen gibt, bitte nochmal melden.

Code:
Private Sub CommandButton21_Click()

Dim i As Integer
Dim wks As Worksheet
Set wks = Worksheets("Detailliert")
With Worksheets("Spickzettel").Cells.SpecialCells(xlCellTypeVisible).Areas
  For j = 1 To .Count
  For i = 4 To 11
    If Application.WorksheetFunction.CountIf(.Item(j).Columns(i), "x") > 0 Then
     wks.Cells(3, i).Resize(wks.Cells(wks.Rows.Count, 1).End(xlUp).Row - 2) = "x"
    End If
  Next
  Next
End With
End Sub
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
[-] Folgende(r) 1 Benutzer sagt Danke an schauan für diesen Beitrag:
Lulu_
to top
#3
Hallo,

ersteinmal vielen Dank für die Antwort. Hab mich sehr gefreut. :-)

Jetzt habe ich doch noch eine Frage... Wenn statt Filtern, die Auswahl mit Kreuze vor dem element getroffen werden soll, wie kann ich dies am geschicksten einbauen?

Ich habe an etwas gedacht wie

Code:
Sub Makro1()
    Dim i As Integer
    For i = 1 To 6
        If Sheets("Blatt1").Range("A" & i).Value = "x" Then
            'Hier müsste ich nun Teil 1 des Codes umschreiben, ohne SpecialCells(xlCellTypeVisible).Areas
        End If
    Next i
    End Sub

Aber die verknüpfung gelingt mir nicht ganz, dafür mangelt es an Erfahrung :-( Kann mir hier jemand helfen?

Beispieldatei: https://www.dropbox.com/s/n6d2y07f5259i2....xlsm?dl=0
to top


Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Informationen aus anderem Tabellen Blatt übertragen caos 7 105 Vor 8 Stunden
Letzter Beitrag: sturmrm
  Worksheet_Deactivate() wie komme ich aus dem Blatt? IngoScha 8 65 25.11.2016, 16:25
Letzter Beitrag: IngoScha
  (berechnete) Teilbereiche in anderes Blatt kopieren Timo 12 232 23.11.2016, 16:29
Letzter Beitrag: Gast 123
  Werte aus Blatt 1 nach Passworteingabe in Blatt 2 übertragen Atila2016 23 405 28.10.2016, 11:09
Letzter Beitrag: schauan
  Daten nach Entscheidung in anderes Blatt schreiben appelschnut 5 99 27.10.2016, 17:03
Letzter Beitrag: appelschnut
  Dynamisch Werte von einem anderen Blatt lesen Rapt0r 5 90 26.10.2016, 18:56
Letzter Beitrag: Rapt0r
  Zellen kopieren in neuen Blatt KS20 5 236 01.10.2016, 19:05
Letzter Beitrag: WillWissen
  Blatt schützen u mit macro inhalte löschen? Mawerick 2 168 19.08.2016, 08:45
Letzter Beitrag: RPP63
  Excel2010 - Inhalte einer Zelle auf anderes Blatt übertragen mit Bezug auf Datum heiral 8 529 20.07.2016, 17:18
Letzter Beitrag: heiral
  Quantil über Aggregat aus Matrix im anderen Blatt mit variabler Zeile Leinad 3 367 25.05.2016, 13:53
Letzter Beitrag: neopa

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste