Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1172to1176
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

select - aber das Gegenteil

select - aber das Gegenteil
Jörg-HH
Hallo zusammen
1. Frage - was mir der Rekorder nicht zeigt: Wenn ich die Selection per Mausklick (zB eines Rahmens) mit Escape aufheben will - wie nennt man das in VBA?
2. Frage - wenn ich einen Rahmen aufziehe, schreibt der Rekorder immer ein select dahinter. Möchte ich das vermeiden und lösche es, gieps Gemecker. Warum muß da das select stehen?
Grüße - Jörg

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: select - aber das Gegenteil
04.09.2010 19:03:23
Daniel
Hi
der Rekorder zeichnet (fast) alles auf, was du machst, das geht in vielen Fällen, insbesondere beim Arbeiten mit Zellen nicht anders.
Im VBA-Code ist das Selektieren allerdings überflüssig und störend, weil es den Code langsam und schwer verständlich macht.
Wenn man Aktionen mit dem Recorder aufgezeichnet hat, dann sollte man die .Selects und Selection. immer entfernen:
dh aus
Range("A1").Select
Selection.Copy

wird
Range("A1").Copy

gleiches gilt für Tabellenblätter:
Sheets("Tabelle1").Select
Range("A1").Select
Selection.ClearContents

wird zu
Sheets("Tabelle1").Range("A1").ClearContents

weil man in VBA keine SELECTS braucht, muss man eine Selection auch nicht aufheben, es geht auch nicht, wenn, dann muss man halt eine andere Zelle selektieren.
Gruß, Daniel
Anzeige
AW: select - aber das Gegenteil
04.09.2010 19:04:32
Hajo_Zi
Hallo Jörg,
nur wenige sehen Deinen Original code und Deinen veränderen Code.
Gruß Hjao
Beispiel
04.09.2010 19:19:24
Jörg-HH
Hallo,
dies sagt der Recorder, wenn ich einen Rahmen erstellt habe:
ActiveSheet.Shapes.AddShape(msoShapeRectangle, 177.38, 1963.34, 686.15, 364.3).Select
Auf dem Tabellenblatt hat das Ding dann die acht Kuller drumherum. Zieh ich mehrere Rahmen auf, hat immer der letzte die Kuller. Die will ich weghaben, aber ohne dafür eine andere Zelle zu selektieren.
Wenn ich das .select am Ende einfach lösche, gieps Mecker...
Grüße - Jörg
AW: Beispiel
04.09.2010 19:37:05
Daniel
Hi
naja, irgendwas musst du mit dem Shape ja machen, z.B.
einen Namen vergeben:
ActiveSheet.Shapes.AddShape(msoShapeRectangle, 10, 10, 686.15, 364.3).Name = "Hallo"
einer Objektvariablen zuweisen:
Dim rect As Shape
Set rect = ActiveSheet.Shapes.AddShape(msoShapeRectangle, 10, 10, 686.15, 364.3)
oder die WITH-Klammer öffnen, um bei dem soeben erstellten Objekt die weiteren Eigenschaften zu ändern:
With ActiveSheet.Shapes.AddShape(msoShapeRectangle, 10, 10, 686.15, 364.3)
...
End With
ansonsten kannst du auch einfach nach dem Erstellen des Rechtecks eine andere Zelle selektieren, aber das habe ich ja schon beschrieben.
wenn du die Grafikelemente wie vom Recorder aufgezeichnet mit .Select erstelltst, musst du eine andere Zelle selectieren, denn irgendwas muss in Excel immer selektiert sein, deswegen gibts auch keinen Befehl zum Aufgeben der Selektion, man kann die Selektion von einem Objekt nur dadurch wegnehmen, daß man ein anderes selektiert.
(ist wie in der Politik, der Bundestag kann den alten Bundeskanzler nicht abwählen, wenn der alte weg soll, geht das nur über Wahl eines neuen)
btw. warum hast du in deiner Eingangsfrage nicht gleich erwähnt, daß es sich um Grafikelemente und nicht um normale Zellen handelt?
Gruß, Daniel
Anzeige
Eingangsfrage...
04.09.2010 20:20:32
Jörg-HH
...hab ich doch erwähnt...
"...Wenn ich die Selection per Mausklick (zB eines Rahmens) mit Escape aufheben will..."
aber ich hab den Knoten verstanden: Das With-Element hatte ich zu spät gesetzt
ActiveSheet.Shapes.AddShape(msoShapeRectangle, 95.1, 2334.63, 82.21, 88.66).Select
With Selection.ShapeRange
.Fill.ForeColor.SchemeColor = 22
.Line.Visi...usw
dachte mir, erst muß add erledigt sein, dann kann with was machen :-) und selection gestrichen und beim with statt Selection irgendwas anderes geschrieben
langsam wird mir klar, warum irgendwer mal geschrieben hat, hier im Forum lernste mehr als aus Büchern...
Grüße - Jörg
Anzeige
AW: Eingangsfrage...
04.09.2010 21:29:51
Daniel
Hi
naja "Rahmen" ist ein mehrdeutiger begriff, daß könne auch der dicke Rahmen sein, wenn du mehrere Zellen gleichzeiitig selektierst.
Gruß, Daniel
:-))
05.09.2010 00:55:14
Jörg-HH
...stimmt - man sollte das Gehirn einschalten, bevor man den Mund aufmacht bzw. die Finger über die Tasten krümmt...
Ergänzung
04.09.2010 22:07:29
Jürgen
Hallo Daniel,
nur der Vollständigkeit halber: machen MUSS man nichts mit dem erstellen Objekt. Dazu lässt man einfach die Klammern um die Parameter weg, also einfach
ActiveSheet.Shapes.AddShape msoShapeRectangle, 177.38, 1963.34, 686.15, 364.3
Setzt man die Klammern, gibt es einen Rückgabewert (in diesem Fall ein Shape-Objekt), mit dem etwas geschehen muss, lässt man die Klammern weg, gibt es auch keinen Rückgabewert.
Gruß, Jürgen
Anzeige
AW: Danke
04.09.2010 22:42:40
Daniel
das sind so die Feinheiten, die man sonst nirgenwo erklärt bekommt
Gruss, Daniel
AW: Ergänzung
05.09.2010 01:05:23
Jörg-HH
Hi Jürgen
das is ja noch näher an meinen Gedanken als Karins Idee. Da ich das ohne Linie und in grau haben will, muß ich dann aber doch mit Klammer schreiben
With ActiveSheet.Shapes.AddShape(msoShapeRectangle, 95.91, 2000, 80.16, 425)
.Fill.ForeColor.SchemeColor = 22
.Line.Visible = msoTrue
End With
Ich finds ja immer wieder spannend, wenn von den Profis jeder nochmal in seinem Täschchen kramt und noch ein Häppchen zur Suppe beitragen kann, das andere Profis noch nicht kannten :-)
Gute Nacht an alle...
Anzeige
AW: Beispiel
04.09.2010 20:12:13
Beverly
Hi Jörg,
Sub RechteckErstellen()
Dim shShape As Shape
Set shShape = ActiveSheet.Shapes.AddShape(msoShapeRectangle, 177.38, 1963.34, 686.15, 364.3)
Set shShape = Nothing
End Sub



ahhh...
04.09.2010 20:23:27
Jörg-HH
...so geht das also...
:-)
genau das meinte ich, Karin. Wär nur nie von selbst auf den Weg über Dim und Set gekommen.
Danke euch allen...
Schönes WE! - Jörg

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige