Excel - SpinButton mit Zelle verlinken

Xord

Cadet 2nd Year
Registriert
Apr. 2013
Beiträge
25
Hallo liebe CB-Community,

ich habe in einem Excel-File viele SpinButtons (der Button mit den zwei Pfeilen). Diese möchte ich jeweils mit der Zelle links vom Button verknüpfen. Natürlich könnte ich jeden Button einzeln anklicken und die Zelle händisch eintragen, aber bei 100+ Buttons ist das eine ganz schöne "Fließbandarbeit" ;). Nun habe ich versucht über VBA einen Code zu schreiben. Das einzige Problem: Ich bin der totale Neuling, was das betrifft xD.

Das habe ich bisher versucht:
Sub Zellverknuepfung()
Dim sb As Spinner
For Each sb In Tabelle1.Spinners
sb.LinkedCell = sb.TopLeftCell.Offset(0, 1).Address
Next sb
End Sub


Wie ihr euch denken könnt, funktioniert das nicht.

Ich freue mich über eine Antwort!

Viele Grüße,

Xord :schaf:
 
Gar keine, aber es passiert einfach nichts ^^.
 
Schon mal probiert das ganze manuell für 1 Button mit dem Makrorekorder aufzunehmen und zu schauen wo die Abweichung liegt?
 
Es gibt grundsätzlich zwei Typen von Controls.
Formularcontrols
ActiveXControls

Welches hast Du verwendet?
 
Eigentlich eine echt gute Idee, das Problem ist, dass das Makro die Änderung der Button-Eigenschaften nicht mitaufzeichnet, sondern nur das Anwählen des Buttons speichert:

Sub Makro1()
'
' Makro1 Makro
'

'

ActiveSheet.Shapes.Range(Array("SpinButton65")).Select
End Sub

Edit: Ich habe ActiveXControls verwendet.
 
Dann mußt Du die Liste der OLE Objekte abfragen und handeln:

Code:
Dim obj As OLEObject
For Each obj In ActiveSheet.OLEObjects
  If TypeOf obj.Object Is MSForms.SpinButton Then
Rem Code einfügen
  End If
Next
 
setz mal einen Haltepunkt im Debugger und schau was nach ausführen der Zuweisung für ein Wert in sb.TopLeftCell.Offset(0, 1).Address steht.
Für mich sieht das eher nach einem Designfehler aus, 100 UpDown Controls auf einem Formular? Mehr als 3 davon sind meist schon nicht mehr benutzerfreundlich
 
Danke miac, das funktioniert!!! :)
Hier der endgültige Code:

Sub Zellverknuepfung()
Dim obj As OLEObject
For Each obj In ActiveSheet.OLEObjects
If TypeOf obj.Object Is MSForms.SpinButton Then
obj.LinkedCell = obj.TopLeftCell.Offset(0, -1).Address
End If
Next
End Sub


@alxtraxxx
Also konkret habe ich versucht eine digitale Liste meiner Sammlung eines Trading Card Games zu erstellen. Damit ich die Anzahl nicht immer reinschreiben muss, sondern einfach nur hochzählen kann, wenn ich neue Karten dazubekomme, habe ich diese Buttons eingefügt. Da pro Boosterserie recht viele Karten zusammenkommen können, gibt es so viele dieser Buttons. Dir danke ich auch für deine Ideen ^.^

LG
:schaf:
 
Zurück
Oben