NICHTS markieren

Wie kann ich in Excel 2007 mittels VBA die Selektion entfernen? Also das nichts markiert ist …

thx & mfg

Hallo Wotan.

Wie kann ich in Excel 2007 mittels VBA die Selektion
entfernen? Also das nichts markiert ist …

Die Fragestellung ist nicht wirklich 100prozentig nachvollziehbar, deswegen nur eine „vermutete Lösung“:

Range("$A$1:blush:A$10").ClearContents 'Löscht die Inhalte des Bereiches

Oder auch:

Range("$A$1:blush:A$10").Clear 'Löscht die Inhalte und Formatierungen

VG
Carsten

Hallo,

Die Fragestellung ist nicht wirklich 100prozentig
nachvollziehbar,

Sry, dachte nicht daran, dass man das auch anders verstehen kann - aber danke für die schnelle Antwort!

Ich meine damit eigentlich, dass ich möchte, dass nichts markiert ist - also keine Zelle, kein Bereich.

zB. Klicke auf B1 -> B1 ist markiert. Wenn ich die, wie ich geschrieben habe „Selektion von B1 entfernen“ möchte, müsste ich auf eine andere Zelle zB D4 klicken. Dann wäre D4 markiert und B1 nicht mehr. Meine Frage ist nun, gibt es eine Möglichkeit, einen Befehl, der bewirkt, dass nichts markiert ist?

lg

Hallo,

zB. Klicke auf B1 -> B1 ist markiert. Wenn ich die, wie ich
geschrieben habe „Selektion von B1 entfernen“ möchte, müsste
ich auf eine andere Zelle zB D4 klicken. Dann wäre D4 markiert
und B1 nicht mehr. Meine Frage ist nun, gibt es eine
Möglichkeit, einen Befehl, der bewirkt, dass nichts markiert
ist?

Die Tabellenblätter haben die Eigenschaft „EnableSelection“, die auf "xlNoSelection eingestellt werden kann. Das funktioniert aber nur, wenn der Blattschutz aktiviert ist. Ansonsten kenne ich da keine Befehle und muß an diese Stelle leider passen.

VG
Carsten

Grüezi Wotan

Ich meine damit eigentlich, dass ich möchte, dass nichts
markiert ist - also keine Zelle, kein Bereich.

zB. Klicke auf B1 -> B1 ist markiert. Wenn ich die, wie ich
geschrieben habe „Selektion von B1 entfernen“ möchte, müsste
ich auf eine andere Zelle zB D4 klicken. Dann wäre D4 markiert
und B1 nicht mehr. Meine Frage ist nun, gibt es eine
Möglichkeit, einen Befehl, der bewirkt, dass nichts markiert
ist?

Das ist auch über die Oberfläche nicht möglich und daher auch mit VBA nicht realisierbar.

Die Variante mit dem Blattschutz hat Carsten ja schon genannt.

Aus welchem Grunde wolltest Du das denn gerne so haben?

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Dachte es wär unkomplizierter weil dann sie Selektion nicht so herumspringt - aber ich werd wohl eine Zelle markieren müssen ^^

Vielen Dank für die Antworten!

Grüezi Wotan

Dachte es wär unkomplizierter weil dann sie Selektion nicht so
herumspringt - aber ich werd wohl eine Zelle markieren müssen

Hmmm, wenn der Cursor herumspringt, dann liegt das am Code selbst, der dann wohl .Select und .Activate verwendet. Das ist in >99.5% aller Fälle nicht notwendig, wenn Du mit sauberer Referenzierung arbeitest.

Kannst Du uns denn mal den Code zeigen um den es geht?
Ich bin sicher, dass es möglich ist die Zellenmarkierung am herumspringen zu hindern.

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Vielen Dank! Ich habs schon gelöst! Ich habe übrigends kein select oder activate benutzt - sondern in einem nicht aktiven Blatt per VBA sortiert. Beim aktivieren des Blattes war dann immer alles markiert - im activate event markiere ich jetzt einfach die erste Zelle in der Tabelle und alles is gut :wink: Dankeschön nochmal, ich bin von eurem Engagement begeistert!

Grüezi Wotan

Ich habe übrigends kein
select oder activate benutzt - sondern in einem nicht aktiven
Blatt per VBA sortiert. Beim aktivieren des Blattes war dann
immer alles markiert

Ja, das wundert mich eben ein wenig, denn das Sortieren mit Referenzen auf das ausgeblendete Tabellenblatt ergibt keine Markierung:

Public Sub tt()
 With Worksheets("Tabelle2")
 .Range("A2:A26").Sort \_
 Key1:=.Range("A3"), \_
 Order1:=xlAscending, \_
 Header:=xlYes, \_
 OrderCustom:=1, \_
 MatchCase:=False, \_
 Orientation:=xlTopToBottom, \_
 DataOption1:=xlSortNormal
 End With
End Sub

Dankeschön nochmal, ich bin von eurem Engagement begeistert!

Aber immer gerne doch - dein Feedback motiviert ebenfalls :smile:


Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hallo!

Ja, das wundert mich eben ein wenig, denn das Sortieren mit
Referenzen auf das ausgeblendete Tabellenblatt ergibt keine
Markierung:

ActiveWorkbook.Worksheets(2).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(2).Sort.SortFields.Add Key:=Range(„E5:E70“) _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

With ActiveWorkbook.Worksheets(2).Sort
.SetRange Range(„A5:L70“)
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

So mach ich das … vl wegen den Sortfields?

mfg

Grüezi Wotan

Ja, das wundert mich eben ein wenig, denn das Sortieren mit
Referenzen auf das ausgeblendete Tabellenblatt ergibt keine
Markierung:

ActiveWorkbook.Worksheets(2).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(2).Sort.SortFields.Add
Key:=Range(„E5:E70“) _
, SortOn:=xlSortOnValues, Order:=xlAscending,
DataOption:=xlSortNormal

With ActiveWorkbook.Worksheets(2).Sort
.SetRange Range(„A5:L70“)
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

So mach ich das … vl wegen den Sortfields?

Hmmm, das muss ich mir unter xl2007 heute Abend oder so mal näher ansehen. Aber auch da scheint mir eine Markierung des Bereiches unnötig zu sein.
Kannst Du das auch mal ohne die SortFields testen?


Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hey!

Kannst Du das auch mal ohne die SortFields testen?

Gleiches Verhalten, auch ohne Sortfields - der zu sortierende bereich ist danach selektiert!

mfg

Grüezi Wotan

Kannst Du das auch mal ohne die SortFields testen?

Gleiches Verhalten, auch ohne Sortfields - der zu sortierende
bereich ist danach selektiert!

Hmmmm, wie genau lautet der Code mit dem Du getestet hast?

Ich habe hier nun das Ganze nachgestellt und kann bestätigen, dass die in xl2007 neue .Sort-Methode die vom Recorder aufgezeichent wird, in der Tat eine Selektion vornimmt.
‚Interessant‘ ist zudem, dass das inaktive Tabellenkattkurzzeitig eingebledte wird, wenn die Zeile .Apply durchlaufen wird. Genau dann wird die Selektion vorgenommen. Ist während des Ablaufs des Codes Tabellenbatt2 aber aktiv wird die Selektion sauber wieder auf A1 zurückgesetzt.
Dieses Verhalten ist IMO äusserst unbefriedigend.

Die Neugier hat mich dann nicht in ruhe gelassen und ich habe meine weiter oben bereits genannten Zeilen (Code aus xl2003) dann adaptiert - und siehe da, es verhält sich so wie ich es erwartet habe und keine Selektin wird vorgenommen.

Hier meine Zeilen, die getestet sind und IMO dasselbe tun wie der aufgezeichete Code (und sind erst noch ein wenig kürzer :wink:):

Public Sub Sort()
 With Worksheets("Tabelle2")
 .Range("A5:L70").Sort \_
 Key1:=.Range("E5"), \_
 Order1:=xlAscending, \_
 Header:=xlNo, \_
 OrderCustom:=1, \_
 MatchCase:=False, \_
 Orientation:=xlTopToBottom, \_
 DataOption1:=xlSortNormal
 End With
End Sub

Teste doch bitte nochmals damit (und nur diese Zeilen ohne anderen Code davor/dahinter, wärend Du zuvor A1 im Tabellenblatt 2 markierst und dann zu Tabellenblatt 1 wechselst.

Auf deinen Kommentar gespannt wartend :wink:

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hey!

Auf deinen Kommentar gespannt wartend :wink:

Funktioniert einwandfrei! Gut gemacht, danke!

Du wurdest soeben zu meinem persönlichen Sortier-Genie befördert :stuck_out_tongue: und deswegen würd ich gern noch eine kleine Frage loswerden, wenn das denn möglich wäre :smile:

Und zwar möchte ich auch (gleiche Tabelle) nach Zimmernummern sortieren. Diese sind im Normalfall 3-stellige Zahlen, jedoch gibt es auch 502a oder 428/429… Wie mach ich das, dass sich diese „Ausreißer“ korrekt in die Sortierung einfügen? Also 502a nach 502 und 428/429 nach 427 etc … Habe es mit mehreren Zelltypen versucht, bring es aber nicht zusammen …

Vielen Dank!
mfg Thomas (ja ich heiß auch Thomas ^^)

Grüezi Namensvetter :wink:

Auf deinen Kommentar gespannt wartend :wink:

Funktioniert einwandfrei! Gut gemacht, danke!

Du wurdest soeben zu meinem persönlichen Sortier-Genie
befördert :stuck_out_tongue:

Diesen Satz drucke ich mir aus und hänge ihn über mein Bett… :wink:

Und zwar möchte ich auch (gleiche Tabelle) nach Zimmernummern
sortieren. Diese sind im Normalfall 3-stellige Zahlen, jedoch
gibt es auch 502a oder 428/429… Wie mach ich das, dass sich
diese „Ausreißer“ korrekt in die Sortierung einfügen? Also
502a nach 502 und 428/429 nach 427 etc … Habe es mit
mehreren Zelltypen versucht, bring es aber nicht zusammen …

Ja, Du hast da gemischte Daten, einmal Zahlen und einmal Text. Dabei sortiert Excel alle Zahlen vor die Texte.
Beim Umformatieren zeigt sich Excel meist etwas störrisch, aber mit folgendem Vorgehen bin ich noch immer zum Ziel gekommen:

  • Spalte markieren
  • Ribbon: ‚Daten‘
  • Bereich: ‚Datentools‘
  • Text in Spalten
  • [x] Getrennt
  • [Weiter >]
  • [Weiter >]
  • Datenformat der Spalten: [x] Text
  • [Fertig stellen]

Nun kannst Du die Splate nach Herzenslus sortieren und sie verhält sich (zumindes bei Zahlen der gleichen Wertigkeit) so wie gewünscht.

Alles andre liesse sich IMO nur über eine Hilfsspalte und eine zweistufige Sortierung lösen.

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hey!

Reiß den Zettel schnell wieder über Bett runter und druck nen neuen aus - Beförderung: Sortier-Hero!!!

2 Beförderungen an einem Tag - krasse Leistung! Ich hab echt so viel herumgspielt damit und habs nicht zusammengebracht und jetzt bin ich echt glücklich dass es endlich funktioniert (und auch noch so einfach ^^) DANKE für alles!

mfg Thomas

Grüezi Thomas

Reiß den Zettel schnell wieder über Bett runter und druck nen
neuen aus - Beförderung: Sortier-Hero!!!

Nun mach aber halblang, ich werd ja schon rot… :wink:

2 Beförderungen an einem Tag - krasse Leistung! Ich hab echt
so viel herumgspielt damit und habs nicht zusammengebracht und
jetzt bin ich echt glücklich dass es endlich funktioniert (und
auch noch so einfach ^^) DANKE für alles!

Aber gerne doch - „That’s what wer-weiss-was is for!“ :smile:

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -