Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1644to1648
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Markierte Zellen auf Spalte A zurückführen...

Markierte Zellen auf Spalte A zurückführen...
08.09.2018 16:25:22
michlchen80
hi,
ich möchte gerne über einen button einen makroaufruf machen.
das makro soll dann für die jeweils markierten zeilen durchgeführt werden.
da ich mit den größten dau's rechne, wollte ich vorher gerne noch alle Markierungen auf die spalte a begrenzen.
also bspw. jemand hat (warum auch immer) die zellen a2, a4, a5, b2, c5 und d6 markiert...
dann möchte ich gerne, dass er mir a2, a4, a5 und a6 markiert. (also die 3 a bleiben und zusätzlich wird der d6 in a6 geändert bzw. mehrfachvorkommen eliminiert.
(wie gesagt, warum man das auch immer machen sollte, aber ich will es gerne abfangen können...)
dies ginge zwar durch einen Loop über alle marjierten zellen, aber je nach anzahl kann das ja auch ne ganze weile dauern.
geht's auch einfacher mit ner Standard Funktion?
danke für den hinweis.

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Markierte Zellen auf Spalte A zurückführen...
08.09.2018 17:07:13
EtoPHG
Hallo,
Ich glaub nicht, dass es mit 'Standard'-Methoden machbar ist.
Aus Performancegründen kannst du aber die Verarbeitung auf Zeilen einschränken, z.B. so:
Sub ProcessPerSelectedRowOnce()
Dim rRow As Range, lRow As Long
For Each rRow In Selection.Rows
If rRow.Row > lRow Then
lRow = rRow.Row
MsgBox "Process A" & CStr(lRow)
End If
Next rRow
End Sub
Gruess Hansueli
AW: Markierte Zellen auf Spalte A zurückführen...
08.09.2018 19:13:39
Gerd
Moin Michi,
das könntest du sicher innerhalb deiner eigenen Prozedur relativieren.
Sub Select_only_in_column_one()
If TypeOf Selection Is Rannge Then
Intersect(Selection.EntireRow, Columns(1)).Select
End If
End Sub
Gruß Gerd
Anzeige
AW: Markierte Zellen auf Spalte A zurückführen...
09.09.2018 13:06:36
michlchen80
genau des habe ich gesucht.
mercy!
AW: hui
08.09.2018 19:16:34
Gerd
Moin Michi,
Sub Select_only_in_column_one()
If TypeOf Selection Is Range Then
Intersect(Selection.EntireRow, Columns(1)).Select
End If
End Sub
Gruß Gerd
Du hast mich bekehrt, Gerd ;-) TOP (owT)
08.09.2018 19:21:21
EtoPHG

diesem TOP schließe ich mich an. o.w.T.
09.09.2018 16:28:55
Werner
Das geht auch etwas anders, ...
09.09.2018 02:18:54
Luc:-?
…Michl,
zumal das mit D6 bisher nicht berücksichtigt wurde. Allerdings stellt sich hierbei die Frage, ob es dir genau auf D6 oder ihre ganze Zeile oder etwa Spalte ankommt. Es wäre eindeutiger gewesen, wenn du das erwähnt oder im Zeile/Spalte-Fall 2 derartige Zellen angegeben hättest. Deshalb habe ich das folgd BspPgmm auf Zeile 6 orientiert. Auskommentiert sind ErsatzKonstanten und -Pgm­Zeilen für den Spalte-D-Fall angegeben, die dann aktiviert und die vorstehende Konstante bzw Zeile deaktiviert wdn müssen:
Sub SelKorr()
Const relCol As Long = 1, resRow As Long = 6 ', resCol As Long = 4
Dim selBer(1) As Range
With ActiveWindow
Set selBer(0) = Intersect(.RangeSelection, Columns(relCol))
If Not selBer(0) Is Nothing Then
Set selBer(1) = Intersect(.RangeSelection, Rows(resRow))
'            Set selBer(1) = Intersect(.RangeSelection, Columns(resCol))
If Not selBer(1) Is Nothing Then
Set selBer(0) = Union(selBer(0), Cells(resRow, relCol))
'                Set selBer(0) = Union(selBer(0), selBer(1).Offset(0, relCol - resCol))
Set selBer(1) = Nothing
End If
selBer(0).Select: Set selBer(0) = Nothing
Else: MsgBox "Bitte nur Zellen in Spalte A auswählen!"
End If
End With
End Sub
Feedback nicht unerwünscht! Morhn, Luc :-?
„Die Intelligenzmenge ist auf diesem Planeten eine Konstante, die Bevölkerung nimmt aber zu!“ Auch deshalb informieren mit …
Anzeige
AW: ActiveWindow
09.09.2018 09:25:36
Gerd
Moin Luc,
in einem Tabellenblattmodul kann dein Code krachen; besser man stellt hier den Columns das
ActiveSheet. voran.
Gruß Gerd
AW: ActiveWindow
09.09.2018 13:10:59
michlchen80
ich wollte genau das, was Gerd gepostet hat...
immer in der a markiert, wenn eine zelle in der spalte markiert wurde.
Idee dahinter. alle markierten zeilen sollen aktualisiert werden, sprich das makro aufrufen.
da ich meine deppen aber kenne, wollte ich jetzt nicht 5 mal die zeile 4 markieren, weil der warum auch immer 4 mal in der zeile 4 ne Markierung hat...
(man hätte auch min und max column abfangen können und wnen die nicht gleich sind ne Fehlermeldung, aber so ist es besser :-) )
Anzeige
AW: ActiveWindow
09.09.2018 13:39:32
Daniel
Hi
je nachdem wie der Code weiter geht, würde ich noch folgendes ergänzen, um lange Laufzeiten zu vermeiden, falls jemand mal alle Zeilen aktualisieren will und dazu aus Bequemlichkeit die ganze Spalte A markiert:
Intersect(Selection.EntireRow, Columns(1), Selection.Worksheet.Usedrange)
Gruß Daniel
AW: ActiveWindow
09.09.2018 14:49:15
michlchen80
danke für den tipp..
das kommt dann im 2. schritt.
ich hole mir immer überschriftzeile, erster ds (falls die Überschrift mal mehr spalten hat) und auch letzte zeile und spalte...
wird also berücksichtigt.
So, so, und warum dann die anfängliche ...
09.09.2018 13:48:36
Luc:-?
…Bemerkung bzgl D6, das zu A6 wdn soll, Michl‽
Das macht Gerds Code nicht! Anscheinend weißt du nicht, was du willst!
Na dann viel Glück! Mahlzeit! Luc :-?
Anzeige
AW: So, so, und warum dann die anfängliche ...
09.09.2018 14:47:43
michlchen80
dann musst du ein anderes Excel haben, weil bei mir macht er es genau richtig!!!
aber egal.
Stimmt, nehme ich zurück, liegt an ...
09.09.2018 15:27:09
Luc:-?
.EntireRow, Michl,
das ich ab Umbau nicht mehr benutzt hatte. Da sowohl A5 als auch C5 primär selektiert waren, fiel das nicht auf und D6 erhielt einen gewissen Sonderstatus, was ich missverstand. Es ging also folglich nur um den Übertrag aller Auswahlen außerhalb A auf A und das wird tatsächlich mit der Auswahl der kompletten Zeile pro ausgewählter Zelle vorbereitet, so dass die Schnittmenge (Intersect) mit Spalte A eine Verlagerung aller Auswahlen dorthin bewirkt. Das hatte ich ursprünglich auch angenommen, es wollte aber zwischenzeitlich nicht fktionieren. Im Prinzip würde also eine Zeile dafür reichen, was ich ursprünglich auch erreichen wollte:
Intersect(ActiveWindow.RangeSelection.EntireRow, Columns(1)).Select
Je nach Einsatzmodul auch als …
Intersect(ActiveWindow.RangeSelection.EntireRow, ActiveSheet.Columns(1)).Select
…oder …
Intersect(ActiveWindow.RangeSelection.EntireRow, Me.Columns(1)).Select
Luc :-?
Anzeige
AW: Was so geht
09.09.2018 15:57:11
Gerd
Moin!
Jetzt war Code zu breit, :-)
With ActiveWindow.RangeSelection
Intersect(.EntireRow, .Parent.Columns(1)).Select
End With
Gruß Gerd
Ja, das ist allgemein sicherer, ...
09.09.2018 17:03:09
Luc:-?
…Gerd;
meine 3.Variante war ohnehin überflüssig, denn sie setzt voraus, dass der PgmCode im Dokument-KlassenModul des ActiveSheet und damit ActiveWindow steht.
With ActiveWindow.RangeSelection: Intersect(.EntireRow, .Parent.Columns(1)).Select: End With
wäre übrigens nicht zu breit für das Forum. ;-)
Gruß, Luc :-?
AW: Ja, das ist allgemein sicherer, ...
09.09.2018 17:45:44
Daniel
naja, man kanns auch übertreiben.
das mit dem ActiveWindow.RangeSelection braucht man doch nur, wenn auf dem Tabellenblatt sich noch selektierbare Objekte befinden wie Grafikelemente oder Diagramme.
Auch sollte Columns(1) ausreichen, weil dies nur dann zu einem Fehler führt, wenn der Code in einem Tabellenblattmodul liegt, das nicht das Tabellenblattmodul des aktiven Blattes ist.
Aber wenn das passiert, würde mal mit dem Programmierer darüber reden, wo man Code sinnvollerweise unterbringt.
Gruß Daniel
Anzeige
Nun ja, sicher sicherer für Code-Kopierer ...
10.09.2018 02:06:10
Luc:-?
…und Leute mit geringer Durchsicht, Daniel. ;-]
Mit ActiveWindow.RangeSelection kann man auf If TypeOf … verzichten, deshalb hatte ich das ins Spiel gebracht. Ansonsten gebührt Gerd das Verdienst, wieder daran erinnert zu haben, denn wer pgmmieren kann, wird kaum bei If … Then in der VBE-Hilfe nach­schla­gen, wo es erwähnt wird. Im Falle von Range alternatives TypeName findet man eher und VarType nutzt hier nichts.
Ich benutze das in solchen Fällen oft, denn man kann ja (aus der Ferne) nie wissen, was beim Nutzer gerade aktiv ist…
Morhn, Luc :-?
Anzeige
Das hattest du auch nicht gemacht, ...
09.09.2018 13:44:59
Luc:-?
…Gerd,
und es war ja von Zuweisung an einen Button die Rede. Der muss dann auch kein ActiveX-Element sein.
Gruß, Luc :-?

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige