Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
812to816
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
812to816
812to816
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Referenzierung eines Ocx-Elementes

Referenzierung eines Ocx-Elementes
28.10.2006 08:39:34
Reinhard
Guten Morgen,
ich habe da ein, von jmdm. selbst gebasteltes, Ocx-Element, einen Slider (Schieberegler), der die Ereignisse Move, GotFocus, LostFocus kennt.
Nun soll sich in Bx der Zellwert ändern wenn ich den Schieber von Slider x verschiebe. Umgekehrt soll sich der Schieber von Slider x verschieben wenn ich den Zellwert von Bx ändere.
Direktes Ansprechen funktioniert:
ColorSlider1.SetValue Worksheets("Tabelle1").Range("B2")
ColorSlider2.SetValue Worksheets("Tabelle1").Range("B3")
Aber wie kann ich den Slider über seine Indexnummer/Namensbestandteilnummer ansprechen?
Als Beispiel eine nicht funktionierende (Fehler 438) Vorstellung:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 2 Then Exit Sub
Dim n As Integer
For n = 1 To ActiveSheet.Shapes.Count
If ActiveSheet.Shapes(n).Name Like "ColorSlider*" Then
ActiveSheet.Shapes(n).Value = ActiveSheet.Range("B" & n) 'Fehler 438
End If
Next n
End Sub

Andere Syntaxversuche brachten mich auch nicht weiter :-( :
Private Sub ColorSlider1_GotFocus()
MsgBox TypeName(ColorSlider1) ' Anzeige "ColorSlider"
'MsgBox ActiveSheet.ColorSlider(1).Value
'MsgBox ActiveSheet.Shapes("ColorSlider" & 1).Value
'MsgBox ActiveSheet.objects("ColorSlider" & "1").Value
'MsgBox ActiveSheet.Shapes("ColorSlider" & "1").Value
'MsgBox ActiveSheet.Shapes.Item(1).Value
End Sub

Dankeschön ^ Gruß
Reinhard

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Referenzierung eines Ocx-Elementes
28.10.2006 13:54:50
Nepumuk
Hallo Reinhard,
verweis so einen Slider mal an eine Objektvariable und schau dir das Objekt im Lokalfenster an. Ich bin mir ziemlich sicher, dass das in der ersten Ebene keine Value-Eigenschaft besitzt, sondern du das Objekt des OLEFormates ansprechen musst. Also so:
ActiveSheet.Shapes(n).OLEFormat.Object.Value = ...
Wenn das nicht klappt, dann schick es mir mal, damit ich mir das ansehen kann. (Ich werde das nirgens einsetzen, da ich solchen "Schnikschnak" :-) nicht benötige.)
Gruß
Nepumuk
AW: Referenzierung eines Ocx-Elementes
28.10.2006 16:21:20
Reinhard
Hallo Nepumuk,
ich sehe schon, mit dem Lokalfenster sollte ich mich beschäftigen, naja, Ojektkatkolg auch usw.
Ich habe das so verstanden:
Userbild
In diesem Moment, also nach dem Set-Befehl zeigt das Lokalfenster den Value Wert an.

Die Datei https://www.herber.de/bbs/user/37730.jpg wurde aus Datenschutzgründen gelöscht

Gruß
Reinhard
Anzeige
AW: Referenzierung eines Ocx-Elementes
28.10.2006 17:22:46
Reinhard
Hallo Nepumuk,
whrscheinlich gibts da verschiedene Arten des Einfügens, erzeugt wurde dieser Slider mit:

Sub Fortschrittsanzeige()
ActiveSheet.OLEObjects.Add(ClassType:="ColSlider.ColorSlider", Link:=False, DisplayAsIcon:=False).Select
End Sub

In den zusätzlichen Steurelemten in Excel steht er als "ColSlider.ColorSlider"
Ich habe keine Emailadresse von dir. Aber geht ja auch so, umbenennen in "colorslider.ocx" :
https://www.herber.de/bbs/user/37732.jpg
Gruß
Reinhard
Anzeige
AW: Referenzierung eines Ocx-Elementes
28.10.2006 17:48:28
Nepumuk
Hallo Reinhard,
die Value-Eigenschaft zu setzen ist kein Problem:
Tabelle1.OLEObjects("ColorSlider1").Object.Value = 100
Aber, der Schieber bewegt sich trotz dem, dass der Wert in den Eigenschaften richtig angezeigt wird, nicht. Das Ding ist noch nicht ganz ausgereift. :-( Denn, auch wenn ich das in ein Form (egal ob in VB oder VBA) einfüge, steht der Schieber immer in der Mitte, obwohl die Value-Eigenschaft 0 ist.
Gruß
Nepumuk
AW: Referenzierung eines Ocx-Elementes
28.10.2006 18:02:20
Reinhard
Hallo Nepumuk,
ja, ist ruckzuck enstanden von jmd der gut VB aber kein VBA kann.
Laut ihm soll es noch Macken haben wenn man Farbwerte über 15 wählt. Und dieser Schieber ist verschwunden wenn man ganz nach rechts schiebt. Aber da lasse ich nur Zellwerte v0n 0-100 zu und erweitere die Sliderwerte auf 106, dann müßte das gehen. Wennn dann der Sliderwert größer 100 ist setze ich ihn auf 100.
Da ich jetzt über Index an den Slider rankommen werde kann ich mir den workaround in Tabelle3 sparen.
Hier der funktionierende Slider:
https://www.herber.de/bbs/user/37733.xls
Dankeschön ^ Gruß
Reinhard
Anzeige
AW: Referenzierung eines Ocx-Elementes
28.10.2006 17:49:21
Reinhard
Hallo Nepumuk,
danke, durch deinen Grundsansatz konnte ich es mir hinbiegen.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 2 Then Exit Sub
Dim n As Integer, ov As OLEObject
For n = 1 To ActiveSheet.OLEObjects.Count
Set ov = ActiveSheet.OLEObjects(n)
MsgBox TypeName(ov)
If ov.Name Like "ColorSlider*" Then
ov.Object.SetValue Worksheets("Tabelle1").Range("B" & n)
End If
Next n
End Sub

Gruß
Reinhard

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige