Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1396to1400
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

ActiveX mit Makros einfügen

ActiveX mit Makros einfügen
26.12.2014 00:10:54
Arceus
Hallo auch,
ich möchte ActiveX Steuerelemente (speziell Labels und Comboboxen) im Excel Tabellenblatt mit einem Makro einfügen lassen. Dabei stoße ich auf einige seltsame Probleme. Ich habe verschiedene Add/Insert Methoden ausprobiert und nichts klappt. Der Makrorekorder macht das mit OLEObjects.Add, allerdings kann man dann komischerweise nicht mehr debuggen!? (Kein Haltemodus erlaubt) Außerdem muss ich die Objekte nach dem Einfügen noch modifizieren und will sie dafür in eine Variable speichern, weiß aber nicht welche Typen ich dafür brauche.

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ActiveX mit Makros einfügen
26.12.2014 01:05:40
Mullit
Hallo,
Bei Einfügen von ActiveX-Controls geht Excel/VBA bis zum Ende des Prozedurdurchlaufs in den Entwurfsmodus, deswegen versagt das Einzelschritt-Debugging.
Und obacht: bei diesem Vorgang werden sämtliche öffentlichen und statischen Variablen zurückgesetzt, sowie alle virtuellen Klassen 'zerstört'.
Zugriff auf Variablen ginge z.B. so:
Option Explicit

Public Sub test()
   Dim lblLabel As MSForms.Label
   Dim cboComboBox As MSForms.ComboBox
   
   With ActiveSheet.OLEObjects
       Set cboComboBox = .Add(ClassType:="Forms.ComboBox.1", Link:=False, _
         DisplayAsIcon:=False, Left:=249, Top:=102, Width:=76.5, Height:=56.25).Object
       Set lblLabel = .Add(ClassType:="Forms.Label.1", Link:=False, _
         DisplayAsIcon:=False, Left:=400.5, Top:=109.5, Width:=121.5, Height:=40.5).Object
   End With
   
   With cboComboBox
      MsgBox lblLabel.Name & vbCr & .Name & _
        vbCr & .ListCount
   End With

   Set lblLabel = Nothing
   Set cboComboBox = Nothing
End Sub


VBA/HTML - CodeConverter für Office-Foren
AddIn für Excel/Word 2000-2010 - komplett in VBA geschrieben von Lukas Mosimann
Projektbetreuung durch mumpel



Code erstellt und getestet in Office 12

Gruß,

Anzeige
AW: ActiveX mit Makros einfügen
26.12.2014 01:38:34
Arceus
Endlich, danke dir. Wenn dabei alle Variablen kaputt gehen, ist das echt übel. Aber wie soll man denn sonst während der Laufzeit Comboboxen & Co. einfügen? In meinem Testlauf wurden die Variablen jetzt allerdings gar nicht zurückgesetzt?
Die MSForms-Typen hatte ich probiert, aber ich wusste nicht, dass ich noch .Object ans Ende hängen muss, warum auch immer.

AW: ActiveX mit Makros einfügen
26.12.2014 02:01:08
Mullit
Hallo,
null problemo,
Wenn dabei alle Variablen kaputt gehen,

Nein, nicht alle Variablen sondern:
sämtliche öffentlichen und statischen Variablen

d.h. die Werte der lokalen auf Prozedurebene deklarierten Variablen in der Prozedur test bleiben erhalten....
noch .Object ans Ende hängen muss, warum auch immer.

Nur durch das Zuweisen als .Object greifst Du direkt auf den jeweiligen Control-Typ der MSForms-Bibliothek zu, andernfalls würde die .Add Methode ein OLEObject-Objekt zurückliefern...
Gruß,
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige