Gleiche Werte nach einander selektieren
#1
Hallo, kann mir jemand bei dem kniffligen Problem helfen?  
Per Makro, aktive Zeile  selektieren, den Wert der aktiven Zelle auslesen und mit dem darunter liegenden Wert vergleichen. Falls identisch dann Selektion auf diese Zeile erweitern usw. Bis Wert sich ändert.

Danke für die Hilfe!
Top
#2
Hallo,

da Selektieren eine höchst überflüssige Maßnahme ist, die Frage, was soll mit den gefundenen Werten geschehen?
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Top
#3
Hallo, im Grunde möchte Automatisch nacheinander Aufträge drucken.
In jeder Zeile (Sp.A bis BN) stehen Werte.
In Spalte AA steht die Auftragsnummer. Diese Auftragsnummer kann mehrfach vorkommen.
Z.B.
Zeile 1 = Auftrag Nr. 2001567
Zeile 2 = Auftrag Nr. 2001567
Zeile 3 = ""            Nr. 2001677
.....
Zeile 200 = Auftrag Nr. 2002100
Momentan läuft der Druckprozess folgendermaßen.
Schritt1. Zeile 1-2 auswählen/selektieren und kopieren
Schritt2. In vor erstellten Druckformular einfügen, drucken, als PDF speichern und wieder in das vorherige Tabellen Blatt zurückkehren.
Schritt1. Nächsten Auftrag auswählen/selektieren....

Ist es möglich das Schritt1. als makro zu definieren?
Beispiel: Aktive Zeile auswählen, Spalte AA die Auftragsnummer mit der darunterliegenden Nr. zu vergleichen. Falls identisch dann Auswahl auf diese Zeile ausweiten usw. Falls nicht identisch dann Schritt2.
Ps: Schritt2 ist als Makro schon vorhanden.

Ich hoffe das ist einigermaßen verständlich.
Top
#4
Vorschlag

Code:
Sub Erweiterung()
    Dim i As Long
    If Selection.Count > 1 Then Exit Sub
    If Selection = "" Then Exit Sub
    Do
        i = 1 + i
    Loop Until Selection.Offset(i).Value <> Selection.Value
    Selection.Resize(i).Select
End Sub
Top
#5
Hallo, danke für den Vorschlag.
Die Formel sagt doch nur ob in Zelle etwas steht  oder nichts findet. 
Welche von den beiden Formel sagt z.B. aktiven Zelleninhalt (aus Sp. AA)mit der darunterliegenden vergleichen, falls identisch dann komplette Zeile selektiert, prüfe nächste darunterliegenden Nr. Falls identisch Zeile selektieren usw. Bis zu dem Punk wenn Nr. Nicht identisch mit dem allerersten Wert.
Top
#6
Das ist keine Formel, sondern ein Makro, das in den Makroeditor kopiert werden muss.

Tschuldige, hätte ich vielleicht näher erläutern sollen.

Wenn das Makro aufgerufen wird, erweitert sich die Auswahl bis zur letzten gleichen Zelle nach unten. So wolltest Du es doch ursprünglich, oder?

Sind bei Makroafuruf mehrere Zellen markiert, wird sofort abgebrochen.  

Ist die aktuelle Zelle leer, und drunter keine Zelle mehr, dann hätte das Makro viel und lange zu suchen, bis an den unteren Rand. Daher habe ich auch für leere Zellen einen Sofortabbruch vorgesehen.
Top
#7
Ok, danke.  Ich  werde es ausprobieren. Hätte nicht gedacht das es so einfach wäre.

Kannst du bitte dein Makro genau beschreiben. Welcher Text/Formel genau macht?
Top
#8
Ja gerne.

Code:
Sub Erweiterung()

    'Die Variable i wird als Ganzzahl deklariert.
    Dim i As Long
   
    'Selection.Count ... Anzahl der ausgewählten Zellen
    'Wenn diese größer als 1 ist, dann verlasse das Makro.
    If Selection.Count > 1 Then Exit Sub
   
    'Wenn die ausgewählte Zelle leer ist,
    'dann verlasse das Makro (Exit Sub).
    If Selection = "" Then Exit Sub
   
    'Do ... Mach bis Loop, und komm wieder zurück.
    '=Schleifenanfang
    Do
       
        'Erhöhe i um 1 (Zu Beginn ist i Null)
        i = 1 + i
       
    'Schleifenende. Gerh wieder hinauf zu Do, solange bis (until)
    'die von der Auswahlzelle (Selection)
    'um i Zellen versetzte Zelle (offset)
    'im Wert (value) ungleich(<>) der Auswahlzelle ist.
    Loop Until Selection.Offset(i).Value <> Selection.Value
   
    'Nach Verlassen der Schleife wegen Verschiedenheit der
    'Zellen:
    'Erweitere (Resize) die Auswahl um i Zellen nach unten
    Selection.Resize(i).Select
   
    'Ende des Makros
End Sub

Vor jeder Codezeile steht meine Erklärung.

Raoul
Top
#9
Hey DK84,

Du wolltest eine Erklärung zum Makro, hier ist sie.

Du antwortest nicht mehr. Verstehst Du das Makro nun, so generell?

Funktioniert eigentlich das Makro bei Dir?

Hast Du es überhaupt eigesetzt?
[-] Folgende(r) 1 Nutzer sagt Danke an Raoul21 für diesen Beitrag:
  • DK84
Top
#10
Hallo leider funktioniert das nicht wie ich schon vermutet habe.
Ich versuch es noch einmal zu erklären.

Die beigefügte Tabelle hat von Spalte A bis Spalte AX Werte stehen. Diese Aufträge müssen als Lieferschein gedruckt werden.
Momentan läuft das Drucken folgendermaßen ab.

1. Ich muss die Zeile 2-4 auswählen, da die Belegnummer die in der Spalte AX gleich ist.
2. Ich aktiviere mein Makro, dieser kopiert den ausgewählten Bereich, überträgt die Werte in ein anderes Tabellenblatt und platziert mir die Werte so das daraus ein Lieferschein entsteht. Halt eine Zusammenfassung der Wichtigsten Werte aus der Tabelle.
3. Wieder werden die nächsten Zeilen für den nächsten Lieferschein ausgewählt. In diesem Fall Zeile 5-6, da die Belegnummer die in der Spalte AX gleich ist. und so weiter...

Meine Frage: 
Ist es möglich ein Code zu erstellen, das die Zeilen mit der gleichen Belegnummer automatisch ausgewählt werden, ausgehend von der aktiven Position.
Z.B.
Ich wähle die Zeile 2 aus und starte das Makro. Dieser soll erkennen das in (Zelle AX2) die Nr. 2000795 steht und sich diese merken.
Als nächsten soll er die (Zelle AX3) mit dem Wert aus (Zelle AX2) vergleichen. Wenn Identisch dann die Auswahl der vorherigen Zeile 2 auf Zeile 3 erweitern usw.
Falls nicht identisch dann Drucken = mein Makro.

Wichtig ist das die ganze Zeile ausgewählt wird oder von Spalte A bis AX!

Sorry hab das Bild vergessen.


Angehängte Dateien Thumbnail(s)
   
Top


Gehe zu:


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