Anzeige
Archiv - Navigation
1096to1100
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

Steuerelemente per Schleife lesen?

Steuerelemente per Schleife lesen?
Jo
Hallo ihr Wissenden,
ich scheitere an folgendem Problem:
Dim Knopf as OLEObject
for each Knopf in Worksheets("Tabelle1").OLEObjects
Array(i)=Knopf.Caption
next Knopf

Ich möchte alle CommandButtons auslesen, die manuell (per Toolbox) in die Tabelle eingefügt wurden.
Vorher muss aber noch eine Abfrage rein, ob das Object ein command button ist (ich habe auch Bilder in der Tab.)
Ich weiss allerdings nicht, wie die buttons heißen, also "CommandButton1" oder "cmd...".
Im Einzelschritt wird der Code in der for-next-Schleife gar nicht abgearbeitet, er springt gleich hinter "Next Knopf". Oder sind die Buttons gar keine Ole-Objekte?
Was mache ich falsch?
Ich hab mir schon nen Wolf gesucht sowohl in der xl-Hilfe als auch hier im Forum. Leider ohne Erfolg.
Wäre toll, wenn jemand mit einem Grundgerüst helfen könnte.
Danke und viele Grüße
Jo

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
if typename(Knopf.object)="CommandButton" then
01.09.2009 16:06:36
NoNet
Hallo Jo,
teste mal diese Überprüfung :
Sub AlleCommandbuttonsAnzeigen()
Dim arr(), intI As Integer
Dim objKnopf As OLEObject
ReDim arr(100) 'max. 100 Commandbuttons
For Each objKnopf In Worksheets("Tabelle1").OLEObjects
If TypeName(objKnopf.Object) = "CommandButton" Then
intI = intI + 1
arr(intI) = objKnopf.Object.Caption
End If
Next
ReDim Preserve arr(intI)
For intI = 1 To UBound(arr)
MsgBox arr(intI)
Next
End Sub
Gruß, NoNet
Lösung gefunden!!
02.09.2009 11:57:07
Jo
Also, die Buttons sind Shapes.
So klappt es (Auszug):
Dim objKnopf As Object
Dim arr(100)
intI = 1
For Each objKnopf In Worksheets("Tabelle1").Shapes
If Left(objKnopf.Name, 6) = "Button" Then
arr(intI) = objKnopf.AlternativeText
intI = intI + 1
end if
next objKnopf
Danke trotzdem für Eure Mühen!
Schöne Grüße
Jo
Anzeige
AW: Steuerelemente per Schleife lesen?
01.09.2009 16:07:55
Heinz
Hi,
du zählst die Variable i nicht hoch.
Außerdem musst du ja erst prüfen, ob das OLE-Object überhaupt ein Button ist.
mfg Heinz
AW: Steuerelemente per Schleife lesen?
02.09.2009 08:01:15
Jo
Hallo zusammen,
@NoNet: Dein Code klappt leider auch nicht. Im Einzelschritt wird von "For each objKnopf..." direkt zur Redim Preserve-Anweisung gesprungen.
@Heinz: Ich hatte nicht den ganzen Code hier hin kopiert.
Inzwischen habe ich rausgefunden, dass in meinem Blatt keine ActiveX-Steuerelemnte, sondern Formularsteuerelemente benutzt werden. Wie unterscheiden die sich eigentlich?
Und wie kann ich die denn abfragen?
Viele Grüße
Jo
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige