Ich habe ein Makro erstellt, das der aktuellen Auswahl ein Präfix hinzufügt. Es ist ziemlich einfach, wie Sie sehen können - es durchläuft sichtbare Zellen in der Auswahl. Ich fügte die .SpecialCells(xlCellTypeVisible)
hinzu, weil es unbeabsichtigte Zellen beeinflusste, wenn Sie Filter verwendeten.Nicht ausgewählte Zellen sind betroffen, wenn Selection.SpecialCells (xlCellTypeVisible) verwendet wird.
Sub Prefix()
Dim rng As Range
Dim Prefix As String
Prefix = "P"
For Each rng In Selection.SpecialCells(xlCellTypeVisible)
rng = Prefix & rng
Next rng
End Sub
Als Beispiel sei angenommen, dass meine Daten Cells A1:A4
dies aus wie gefüllt ist:
Title
1
2
1
Mein Problem tritt auf, wenn ich folgendes tun:
- ein
Autofilter
Setzen Sie auf den Bereich und verstecken Sie die '2', die in A3 ist - Wählen Sie A2 (die erste '1')
- Führen Sie meinen Makro
Das Problem ist, dass statt nur Cell A2
zu beeinflussen (die ausgewählte Zelle), beginnt es das Präfix in der ersten Reihe der Anwendung (A1: Z1, etc.), bis ich das Makro abzubrechen. Es wird dies weiterhin zu tausenden von Zellen machen, wenn ich es weiter laufen lasse.
Dieses Problem tritt nicht auf, wenn meine Auswahl mehrere Zellen ist, oder wenn ich Selection
statt Selection.SpecialCells(xlCellTypeVisible)
verwende, oder wenn ich das Makro auf eine Zelle anwende, wenn nichts herausgefiltert (versteckt) wird.
Hat jemand irgendwelche Ideen, warum die Auswahl standardmäßig die gesamte Tabelle, wenn ich nur eine Zelle ausgewählt haben?
Alternativ kann jemand eine Möglichkeit vorschlagen, Präfixe wie diese mit VBA hinzuzufügen?
Ich bin mir bewusst, dass die Verwendung einer Excel-Formel das Problem lindern würde, aber das ist nicht praktisch für mich und ist nicht so schnell wie das Klicken auf ein Makro.
Wahrscheinlich, weil Ihr Sub keine Ahnung hat, was die Auswahl ist, so dass es das ganze Blatt verwendet. Fügen Sie einen Bereichsparameter für den Bereich hinzu, in dem Sie arbeiten möchten, und übergeben Sie diesen an die Unterkomponente. Ersetzen Sie die Auswahl durch diesen Parameter und es sollte funktionieren. – dinotom
Bitte erklären Sie, was Sie meinen, indem Sie den Bereichsparameter hinzufügen? Ich weiß, dass ich das Sub zu arbeiten auf Bereich ("a2: a4"). SpecialCells (xlCellTypeVisible) oder so ähnlich, aber ich möchte in der Lage sein, es für eine Auswahl zu verwenden, anstatt das Makro jedes Mal zu bearbeiten.Ich könnte auf 10 verschiedene Auswahl in einer Reihe, die nicht nebeneinander sind, also nicht die Zeit wert, um den Makrocode jedes Mal zu bearbeiten. – unknownengines
Wenn Sie möchten, dass es so funktioniert, müsste es im Ereignis der Änderung der Arbeitsblattauswahl sein. Ich poste etwas kurz – dinotom