Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

VBA select aufheben

763 views
Skip to first unread message

Hans Alborg

unread,
Dec 14, 2014, 2:14:30 AM12/14/14
to
Hallo -nach Ms' wildem Updating,

ich hab mit diesem blöd-allgemeinen Betreff 2 Anliegen verbunden:

Frage 1)

Code:
' -------------------------------------------------------------
Sheets("Hilfsblatt-1").Shapes("myRahmen").Copy
Sheets("Aufbau").Paste
Application.CutCopyMode = False
' -------------------------------------------------------------
Ich setze in meiner Simu- Mappe also (endlich!) einen Rahmen ins Blatt
"Aufbau", den ich Undank meines Wissensstandes nicht erzeuge, sondern aus
dem "Hilfsblatt-1" kopiere.
Leider funktioniert Zeile 3 nicht, der Rahmen bleibt markiert.
Ich möchte an dieser Stelle keine Zelle selektieren, um das wegzubekommen.

weiter wird der Rahmen an die richtige Position gebracht und formatiert:
' -------------------------------------------------------------
With Sheets("Aufbau").Shapes("myRahmen")
.Top = myR_Top
.Left = myR_Left
.Width = 50
.Height = 100
.Rotation = Rahmen_Grad
.Fill.ForeColor.RGB = Rahmen_Farbe
.HideSelection = False
End With
' -------------------------------------------------------------
HideSelection war auch so ein Versuch, der nicht klappt.

Also wie krieg ich das Select vom Rahmen?

Frage 2)

In einer VBA- Zeile etwa so:

If a=1 OR A=2 OR B = 5 AND X = "Test" THEN

krieg ich immer 'ne Krise. Muß ich Klammern setzen etc.?
Im Netz ist gibt's zu den Logikbefehlen "zu viele" Fundstellen, nur immer
nicht das Richtige.

Wo kann man denn was über diese Logiken in VBA lesen?

TIA,

Hans

Claus Busch

unread,
Dec 14, 2014, 4:48:39 AM12/14/14
to
Hallo Hans,

Am Sun, 14 Dec 2014 08:14:10 +0100 schrieb Hans Alborg:

> Ich setze in meiner Simu- Mappe also (endlich!) einen Rahmen ins Blatt
> "Aufbau", den ich Undank meines Wissensstandes nicht erzeuge, sondern aus
> dem "Hilfsblatt-1" kopiere.
> Leider funktioniert Zeile 3 nicht, der Rahmen bleibt markiert.
> Ich möchte an dieser Stelle keine Zelle selektieren, um das wegzubekommen.

wenn etwas Neues in eine Mappe eingebracht wird, egal ob durch kopieren
oder erstellen, ist dies automatisch das aktive und somit auch
selektierte Teil. Du könntet einfach etwas Anderes selektieren.
Eleganter geht es, wenn du den Rahmen fest einfügst und auf visible =
false stellst und in dann im Code statt einzufügen auf visible = true
stellst.

> If a=1 OR A=2 OR B = 5 AND X = "Test" THEN

ähnlich wie bei Punkt- und Strichrechnung die Priorität festgelegt ist,
ist auch hier UND stärker als OR. Und genau wie in der Punkt- und
Strichrechnung kann man das noch steuern, indem man die noch stärkere
Klammer einbaut.
Bei einer solchen Konstellation wie o.a. würde ich Klammern schreiben.


Mit freundlichen Grüßen
Claus
--
Vista Ultimate / Windows7
Office 2007 Ultimate / 2010 Professional

Hans Alborg

unread,
Dec 14, 2014, 6:59:48 AM12/14/14
to
Hi Claus,

"Claus Busch" schrieb...

> Hans Alborg:

>> ...der Rahmen bleibt markiert.
> Eleganter geht es, wenn du den Rahmen fest einfügst und auf visible =
> false stellst und in dann im Code statt einzufügen auf visible = true
> stellst.

Hmm. Ich lösche immer das komplette Blatt, da bleiben auch keine Frames
erhalten.
Aber: Idee! Ich mache es wie Du sagst, aber kopiere den Rahmen als erstes
rein!
Danach wird "einiges" selektiert und später, wenn ich ihn brauche ist der
Rahmen da.

>> If a=1 OR A=2 OR B = 5 AND X = "Test" THEN
> ...indem man die noch stärkere Klammer einbaut.

Also doch Klammern! Da werde ich meinen bisherigen Code mal durchsuchen
(hab's immer geteilt).

Nochwas wegen der Eigenschaften des Rahmens: wie heißt die Rahmenbreite?

Den Rahmen hab ich unter Excel 2007 mit "Einfügen/ Illustrationen/ Formen/
Standardformen/ Positionsrahmen" gefunden.
Selektiert zeigt der Rahmen einen gelben Punkt. Wenn ich den mit der Maus
fasse kann ich die Rahmenbreite ändern.

Ich hab noch gefunden:

.Fill.Transparency = 0.39
' Randlinien
.Line.Weight = 2
.Line.DashStyle = msoLineSolid
.Line.Style = msoLineSingle

aber der Rand sieht je Größe des Rahmens manchmal verhältnismäßig dick aus,
so daß ich diese Eigenschaft mit VBA anpassen möchte...

Hans

Claus Busch

unread,
Dec 14, 2014, 7:33:54 AM12/14/14
to
Hallo Hans,

Am Sun, 14 Dec 2014 12:59:27 +0100 schrieb Hans Alborg:

> Nochwas wegen der Eigenschaften des Rahmens: wie heißt die Rahmenbreite?

ich habe noch nie mit Positionsrahmen gearbeitet. xl2007 und auch xl2010
zeichnen bei Änderung der Rahmenbreite nichts auf. Bin auch im Netz
nicht weiter gekommen. Ich melde mich, wenn ich etwas finde.

Claus Busch

unread,
Dec 14, 2014, 7:44:26 AM12/14/14
to
Hallo Hans,

Am Sun, 14 Dec 2014 12:59:27 +0100 schrieb Hans Alborg:

> Nochwas wegen der Eigenschaften des Rahmens: wie heißt die Rahmenbreite?

ich bekomme es ohne Selektion nicht hin. Es kommt immer eine
Fehlermeldung. Mit Selektion geht es so:

ActiveSheet.Shapes("Positionsrahmen 1").Select
With Selection.ShapeRange
.Adjustments.Item(1) = 0.02734
End With

Hans Alborg

unread,
Dec 14, 2014, 9:46:46 AM12/14/14
to
Hallo Claus,

"Claus Busch" schrieb...
> Hans Alborg:

>> Nochwas wegen der Eigenschaften des Rahmens: wie heißt die Rahmenbreite?
> ich bekomme es ohne Selektion nicht hin. Es kommt immer eine
> Fehlermeldung. Mit Selektion geht es so:

> ActiveSheet.Shapes("Positionsrahmen 1").Select
> With Selection.ShapeRange
> .Adjustments.Item(1) = 0.02734
> End With

Ah, danke sehr! Du sprichst wohl den Anfaßpunkt an, der ist halt nur bei
Select vorhanden!
Da muß ich mir halt Gedanken machen, wo ich den Fokus nach dem Select lasse.
Eventuell in der Textbox der fast (?) zur selben Zeit offenen
"stopp/weiter"- Userform.
(hab den Rahmen jetzt so wie in meinem letzten Posting beschrieben gleich
von Anfang an unsichtbar auf dem Blatt und war das Select schon los...)

Öhm, Item(1) macht neugierig auf die anderen. Wird aber sicher kein
"schiefes" Rechteck geben...

Hans

0 new messages