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

Excel und VB for Applications - Objekte Dynamisch ansprechen

Frage Entwicklung VB for Applications

Mitglied: Snowman25

Snowman25 (Level 3) - Jetzt verbinden

27.10.2009 um 13:37 Uhr, 9599 Aufrufe, 4 Kommentare

Ich möchte verschiedene DropDown-Listen, die nach dem gleichen Muster benannt sind, nacheinander ansprechen.
Hardcoded funktioniert es mit CallByName.
Sobald ich die Anweisung in ein Muster umschreibe, wird der Run-time error 424 geworfen: 'Object required'

Ich durchlaufe mit einer Foreach-schleife ein Array, in dem 3-stellige Strings gespeichert sind und übergebe diesen String dann an eine sub 'create' mit Namen MB als Variant (foreach benötigt variant). Das funktioniert soweit auch.
Das Muster der Objekte ist so aufgebaut: Me.<MB aus dem Array>_start
Die Sub:
01.
Private Sub create(MB As Variant) 
02.
Dim aio 
03.
starttime = CallByName("Me." & MB & "_start", "Value", VbGet) 
04.
    If Not starttime = "" Then 
05.
        MsgBox "Bei " & MB & " ist ein Startwert von " & starttime & " definiert." 
06.
    End If 
07.
aio = "" 
08.
End Sub
mit
CallByName(Me.AUG_start, "Value", VbGet)
erhalte ich den entsprechenden Wert. Allerdings bekomme ich immer den Fehler, wenn ich es wie im obrigen Beispiel probiere.
Gibt es eine Möglichkeit, diese Objekte dynamisch aufzurufen?
Mitglied: 76109
27.10.2009 um 14:49 Uhr
Hallo Snowman25!

Ich verstehe nicht, warum Du das ganze so kompliziert machst? Warum sprichst Du die Teile nicht direkt an.

Beispiel:
Du hast in Tabelle 1 eine Text-Box mit dem Namen "TextBox1", dann kannst Du das Object von jedem Modul oder was auch immer direkt steuern.
01.
sub test() 
02.
    Dim Wks As Worksheet, MeineTextBox As OLEObject, Wert As String 
03.
 
04.
    Set Wks = Sheets("Tabelle1") 
05.
 
06.
    Set MeineTextBox = Wks.OLEObjects("TextBox1")   'Oder 
07.
 
08.
    Set MeineTextBox = Sheets("Tabelle1").OLEObjects("TextBox1") 
09.
 
10.
    Wert = Wks.OLEObjects("TextBox1").Object.Value  'Oder 
11.
 
12.
    Wert = MeineTextBox.Object.Value  'Oder 
13.
 
14.
    Wert = Sheets("Tabelle1").OLEObjects("TextBox1").Object.Value 
15.
End Sub
Dein CallByName erwartet ein Object und Du übergibst nur ein String, müsste also etwas in der Art CallByName(Object("String")... heißen

Gruß Dieter
Bitte warten ..
Mitglied: Snowman25
27.10.2009 um 15:38 Uhr
Tut mir leid didi, aber dein beispiel zeigt mir auch nur 'harte' Verweise.
Ich suche ja eine Möglichkeit, Objekte bzw. deren Eigenschaften variabel auszulesen und zu ändern.
Bitte warten ..
Mitglied: 76109
27.10.2009 um 18:24 Uhr
Hallo Snowman25!

Das muss Dir nicht leid tun. Mit ein wenig Phantasie hättest Du Anhand meiner Beispiele selber draufkommen können
01.
starttime = CallByName(Me.OLEObjects(MB & "_start").Object, "Value", VbGet)
Gruß Dieter
Bitte warten ..
Mitglied: Snowman25
28.10.2009 um 09:27 Uhr
Danke, funktioniert wunderbar
Bitte warten ..
Ähnliche Inhalte
VB for Applications
gelöst VB Skript Excel Datei (3)

Frage von Frager zum Thema VB for Applications ...

Microsoft Office
gelöst VBA Excel Problem mit UserForm, ListBox und TextBox (12)

Frage von abuelito zum Thema Microsoft Office ...

Microsoft Office
gelöst Excel 2010 - Berechnungen mit Datumswerten Uhrzeiten (2)

Frage von Volchy zum Thema Microsoft Office ...

Neue Wissensbeiträge
Heiß diskutierte Inhalte
Server-Hardware
Einem Stromausfall entgegen wirken (22)

Frage von OIOOIOOIOIIOOOIIOIIOIOOO zum Thema Server-Hardware ...

Festplatten, SSD, Raid
PC stellt nach dem Bios ab (20)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...

Windows 7
Freeware MSI Tool (13)

Frage von uridium69 zum Thema Windows 7 ...

DSL, VDSL
gelöst Ständige Störungen - Internet (12)

Frage von gamerff zum Thema DSL, VDSL ...