Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Dynamische Objekte während der Laufzeit abfragen

Frage Entwicklung VB for Applications

Mitglied: erik87

erik87 (Level 1) - Jetzt verbinden

01.06.2010 um 17:20 Uhr, 11141 Aufrufe, 3 Kommentare

Hallo mal wieder,

ich habe heut den ganzen tag daran gesessen um meine dynamisch erstellten Labels, Textboxen und Checkboxen auf ein Click abzufragen. Habe dann nach 4 stunden Probieren rausgefunden das es wohl kein addhandler im VBA von Excel 2007 gibt. Ich muss dazu sagen das ich mich heute erstmals mit Klassen beschäfftigt habe und rein garnicht durch sehe.

ich habe das Beispiel auf dieser Seite Probiert und soweit verstanden:

http://www.online-excel.de/excel/singsel_vba.php?f=57


Allerdings brauche ich keine Buttons abzufragen und wenn ich versuche es auf andere Objecte zu übertragen bekomme ich nur fehlermeldungen..

Beispiel Checkboxen:


'Userform---------------

[...]
Dim oCheckBox1 As clsCheckBox
Dim oCheckBox2 As clsCheckBox
Dim checkbox100
Dim CHkBx As MSForms.CheckBox
'---
Set oCheckBox1 = New clsCheckBox
Set oCheckBox2 = New clsCheckBox
Set oCheckBox1.DieChkBxs = CheckBox1 ' Hier kommt der Fehler: Objekt erforderlich
Set CHkBx = Frame3.controls.Add("Forms.CheckBox.1") 'Positionsbeschreibung
With CHkBx
.Name = "chkbx" & VisPos
.Width = 450
.Height = 15
.Left = 23
.Top = DynTOP
.Caption = TreeView1.SelectedItem
.Value = 1
End With
Set oCheckBox2.DieChkBxs = CHkBx
Set CHkBx = Nothing

[...]
'Modul: clsCheckBox------------------------

Option Explicit
Public WithEvents DieChkBxs As MSForms.CheckBox

Private Sub DieChkBxs_Click()
DieChkBxs.ControlTipText = "Geklickt"
MsgBox "test"
DieChkBxs.BackColor = vbGreen
DieChkBxs.Font.Bold = True
End Sub
Private Sub DerChkBxs_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
MsgBox "Double"
End Sub



Mag jemand mit mir das mal langsam durchkauen und alles schritt für Schritt erklären. Ich weiß nicht ob es wichtig ist aber noch ein wenig zum Programmablauf:


ich habe am linken rand ein treeview, in welchem verschiedene Funktionen stehen. nach dem auswählen einer solchen funktion werden, für jede Auswahl eine Checkbox, 1 Label und eine Textbox nebeneinander, aber pro auswahl untereinander (quasi zeilen weise) in einem Frame erstellt. es sollen bis zu 256 "Zeilen" möglich sein. nun muss ich diese auf ein Click event abfragen um die entsprechenden Berechnungsfunktionen zu starten mit den eingabeparametern der in laufzeit erstellten Objecte. Diese besitzen Standartwerte, welche aber vom benutzer geändert werden können. Das Auslesen der objecte sollte kein Problem darstellen, ich will nur wissen, auf welches geclickt wurde.

Ich hatte auch schon überlegt ein Timer einzubauen und alle 500 ms die erstellten Objecte auf änderung zu überprüfen, das würde das programm aber zusätzlich verlangsamen, es brauch so schon sehr lange für die berechnungen.


Schönen Abend noch
Mit freundlichen Grüßen
Mitglied: erik87
01.06.2010 um 19:08 Uhr
puh, kaum saß ich im auto...

es geht jetzt. Danke, an alle die sich versucht haben zu bemühen
Bitte warten ..
Mitglied: dog
02.06.2010 um 02:47 Uhr
Dann bitte für andere noch erklären woran es lag...
Bitte warten ..
Mitglied: erik87
02.06.2010 um 08:00 Uhr
Moin,

ja, da habe ich Gestern wohl vor "Freude" garnicht mehr dran gedacht. Problem war, das in der oben genannten Internet Präsenz ein Beispiel gegeben war, in dem auch gezeigt wird, das nicht während runtime erstellte Objekte damit identifiziert werden können.

hier nochmal der funktionierende Code für Label´s:

01.
'Klassenmodul -- clsLabel 
02.
 
03.
'Option Explicit 
04.
Public WithEvents LBL As MSForms.Label 
05.
     
06.
Private Sub LBL_Click() 
07.
x = UserForm1.aufruf(LBL.Name) 
08.
End Sub 
09.
     
10.
Private Sub LBL_DblClick(ByVal Cancel As MSForms.ReturnBoolean) 
11.
    MsgBox "Double" 
12.
End Sub
01.
'-- userForm 
02.
 
03.
Option Explicit 
04.
Dim oLBLn(20) As clsLabel 
05.
     
06.
Private Sub UserForm_Initialize() 
07.
Dim i As Integer 
08.
 For i = 0 To 20 
09.
    Dim LBL As MSForms.Label 
10.
    Set oLBLn(i) = New clsLabel 
11.
    Set LBL = Me.Controls.Add("Forms.Label.1", "LBL" & i, True) 
12.
    With LBL 
13.
        .Left = 10 
14.
        .Top = i * 25 
15.
        .Height = 20 
16.
        .Width = 50 
17.
        .Caption = .Name 
18.
    End With 
19.
    Set oLBLn(i).LBL = LBL 
20.
    Set LBL = Nothing 
21.
 Next i 
22.
End Sub 
23.
 
24.
Function aufruf(Lname As String) 
25.
MsgBox Lname 
26.
End Function
Viel Spaß damit

[Edit Biber] Codetaxx. [/Edit]
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Windows Userverwaltung
PS Skript AD Objekte auslesen (1)

Frage von m.reeger zum Thema Windows Userverwaltung ...

Windows 7
Computer OU auslesen bzw. abfragen (2)

Frage von mexx991 zum Thema Windows 7 ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...