Anzeige
Archiv - Navigation
908to912
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
908to912
908to912
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

befehlszeile erklären

befehlszeile erklären
20.09.2007 08:14:41
schnierle
guten morgen ihr alle,
kann mir mal jemand kurz erklären, was die letzte ziffer in nachfolgender befehlszeile bedeutet? kenn mich noch nicht so gut aus in vba. danke schon mal für eure hilfe
Selection.ShapeRange.ConnectorFormat.EndConnect ActiveSheet.Shapes( _
Selection.Name), 3

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: befehlszeile erklären
20.09.2007 08:33:24
Wolli
Moin Schnierle, macht Spaß, mal kurz zu forschen ...
Du ziehst eine Verbindung zwischen zwei Formen (z.B. Kästchen, Kreise ... = Shape). Diese Zeile sagt aus, dass die Ziel-Form (EndConnect!) am "Anker" Nr. 3 angesprochen wird. Ich habe herausgefunden:
1=oben
2=links
3=unten
4=rechts
Also unten.
Gruß, Wolli
PS: Eine Rückmeldung wäre ganz reizend!

AW: befehlszeile erklären
20.09.2007 08:41:25
schnierle
hey wolli,
super! danke für die hilfe. hab das ausprobiert und es stimmt. vielleicht kannst du mir auch bei einem anderen problem helfen. ich hab ein makro aufgezeichnet, wo ich eben genau zwei linien mit elbow-connector verbunden habe. nun will ich das automatisieren aber bekommme dann jedesmal einen fehler gemeldet.
kannst du mir vielleicht sagen, was ich falsch mache?

Sub KlickediKlack()
Static dPosLeft1 As Double
If Not bAktiv Then Exit 

Sub  'knopf gedrückt?
ActiveSheet.Shapes(Application.Caller).Select
If dPosTop1 = 0 Then         'position der ersten box bestimmen
dPosTop1 = Selection.Top + Selection.Height / 2
dPosLeft1 = Selection.Left + Selection.Width / 3
CheckBox1 = Selection.Name
Else
ActiveSheet.Shapes.AddConnector(msoConnectorElbow, dPosLeft1, dPosTop1, _
Selection.Left + Selection.Width / 3, _
Selection.Top + Selection.Height / 2).Select  'position der zweiten box bestimmen
With Selection.ShapeRange                       'und elbow-connector einfügen
.Flip msoFlipHorizontal
.Flip msoFlipVertical
' .ForeColor.SchemeColor = 10
.ConnectorFormat.BeginConnect ActiveSheet.Shapes( _
CheckBox1), 3
.ConnectorFormat.EndConnect ActiveSheet.Shapes( _
Selection.Name), 3
.Line.ForeColor.SchemeColor = 57
.Line.Visible = msoTrue
.Line.Weight = 2.25
.Line.Visible = msoTrue
.Line.Style = msoLineSingle
End With
dPosTop1 = 0
End If
If Selection.Value = xlOn Then
Selection.Value = xlOff
Else
Selection.Value = xlOn
End If
ActiveCell.Activate
End Sub


Anzeige
AW: befehlszeile erklären
20.09.2007 08:43:00
schnierle
hab in der vorschau übersehen dass das die zeile Sub 'knopf gedrückt?
noch zu der oberen zeile gehören sollte, also an diesem "fehler" liegt es nicht :)

AW: befehlszeile erklären
20.09.2007 08:45:00
Wolli
Wenn Du mir verrätst, wie die Fehlermeldung lautet?

AW: befehlszeile erklären
20.09.2007 08:48:00
schnierle
die fehlermeldung lautet:
laufzeitfehler'-2147024809(80070057)':
Der angegebene Wert ist ausserhalb des zulässigen Bereichs
steht eigentlich schon da, was er zu meckern hat, aber ich verstehe nicht ganz warum

AW: befehlszeile erklären
20.09.2007 08:57:17
Wolli
nun noch, in welcher Zeile der Fehler auftrat ...
Aber vielleicht kriegen wir es auch so hin: Zu ermittelst an zwei Stellen irgendeine Mitte von irgendwas, indem Du /2 bzw. /3 teilst. Ich könnte mir denken, dass das doppelt gemoppelt ist, vielleicht nur an einer Stelle.
/W.

Anzeige
AW: befehlszeile erklären
20.09.2007 09:09:24
schnierle
das mit dem doppelt gemoppelt ist nicht so schlimm, das kann man danach immer noch besser lösen, mir gehts nur mal um die funktionalität :) der fehler tritt in folgender zeile auf
ConnectorFormat.BeginConnect ActiveSheet.Shapes( _
CheckBox1), 3

AW: befehlszeile erklären
20.09.2007 09:10:00
schnierle
sorry, bin anscheinend heut leicht verwirrt, die fehler-zeile ist die zeile darunter, also
.ConnectorFormat.EndConnect ActiveSheet.Shapes( _
Selection.Name), 3

AW: befehlszeile erklären
20.09.2007 10:44:13
fcs
Hallo schnierle,
das Problem in deiner Prozedur ist, dass sich das Selection-Objekt durch die Add.... Zeile ändert. Dadurch wird die eingefügte Verbindungslinie zum selektierten Objekt.
Selection.Name bezieht sich anschließend nicht mehr auf die Checkbox (oder was für ein Shape-Objekt auch immer du vorher selektiert hast) sondern auf die neue Linie.
Du muss also vor dem Einfügen der Verbindungslinie den Namen des selektierten Objekts in eine Variable schreiben und diese dann verwenden.
Da du ja nicht den ganzen Code präsentiert hast was das Testen erschwert noch der Hinweis, dass einige Variablen im Modul zu Beginn als Private deklariert werden müssen, damit es läuft. Diese Infos müssen beim 1. Durchlauf gespeichert werden, da sonst der 2. nicht funktioniert.
Gruß
Franz

Private baktiv As Boolean, dPosTop1 As Long, CheckBox1 As String
Sub KlickediKlack()
Static dPosLeft1 As Double
If Not baktiv Then Exit Sub        'knopf gedrückt?
ActiveSheet.Shapes(Application.Caller).Select
If dPosTop1 = 0 Then         'position der ersten box bestimmen
dPosTop1 = Selection.Top + Selection.Height / 2
dPosLeft1 = Selection.Left + Selection.Width / 3
CheckBox1 = Selection.Name
Else
CheckBox2 = Selection.Name '###### neu
ActiveSheet.Shapes.AddConnector(msoConnectorElbow, dPosLeft1, dPosTop1, _
Selection.Left + Selection.Width / 3, _
Selection.Top + Selection.Height / 2).Select  'position der zweiten box bestimmen
With Selection.ShapeRange                       'und elbow-connector einfügen
.Flip msoFlipHorizontal
.Flip msoFlipVertical
' .ForeColor.SchemeColor = 10
.ConnectorFormat.BeginConnect ActiveSheet.Shapes( _
CheckBox1), 3
.ConnectorFormat.EndConnect ActiveSheet.Shapes( _
CheckBox2), 3 ' modifiziert
.Line.ForeColor.SchemeColor = 57
.Line.Visible = msoTrue
.Line.Weight = 2.25
.Line.Visible = msoTrue
.Line.Style = msoLineSingle
End With
dPosTop1 = 0
End If
GoTo weiter '##### die folgenden Zeilen machen bei mir Probleme
If Selection.Value = xlOn Then
Selection.Value = xlOff
Else
Selection.Value = xlOn
End If
weiter:
ActiveCell.Activate
End Sub


Anzeige
AW: befehlszeile erklären
20.09.2007 10:49:27
schnierle
super, es klappt!!!!
Vielen, vielen Dank!
Wär ich nie drauf gekommen.
mit fröhlichem Gruß
Schnierle

AW: befehlszeile erklären
20.09.2007 10:46:03
Wolli
OK. "Außerhalb des zulässigen Bereichs" heißt normalerweise, dass Du ein Blatt ansprichst, das es nicht gibt oder versuchst, in Zeile -3 zu springen. In diesem Fall tippe ich, dass es das Shape mit dem Namen Selection.Name nicht gibt.
Ich denke, die Zeile funktioniert nur, wenn tatsächlich ein Shape selected ist, also angeklickt.
Alternative 1: Den Namen ermitteln und fest eingeben

ActiveSheet.Shapes("Herbert"), 3


Alternative 2: Versuch's mit


.ConnectorFormat.EndConnect ActiveSheet.Selection, 3


Gruß, Wolli

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige