Wie kann ich in Excel 2007 mittels VBA die Selektion entfernen? Also das nichts markiert ist …
thx & mfg
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
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
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 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
–
Mit freundlichen Grüssen
Thomas Ramel
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:=xlSortNormalWith ActiveWorkbook.Worksheets(2).Sort
.SetRange Range(„A5:L70“)
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End WithSo 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
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 ):
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
Mit freundlichen Grüssen
Thomas Ramel
Hey!
Auf deinen Kommentar gespannt wartend
Funktioniert einwandfrei! Gut gemacht, danke!
Du wurdest soeben zu meinem persönlichen Sortier-Genie befördert und deswegen würd ich gern noch eine kleine Frage loswerden, wenn das denn möglich wäre
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
Auf deinen Kommentar gespannt wartend
Funktioniert einwandfrei! Gut gemacht, danke!
Du wurdest soeben zu meinem persönlichen Sortier-Genie
befördert
Diesen Satz drucke ich mir aus und hänge ihn über mein Bett…
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:
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
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…
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!“
Mit freundlichen Grüssen
Thomas Ramel