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, 9475 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 ..
Neuester Wissensbeitrag
Exchange Server

WSUS bietet CU22 für Exchange 2007 SP3 nicht an. EOL Exchange 2007

Tipp von DerWoWusste zum Thema Exchange Server ...

Ähnliche Inhalte
VB for Applications
Excel Makro zum Suchen von Spalten und exportieren in CSV (2)

Frage von Raptox zum Thema VB for Applications ...

Microsoft Office
Excel Zählewenn aus Formel Wert (2)

Frage von cberndt zum Thema Microsoft Office ...

Microsoft Office
PIVOT-CHART IN EXCEL 2010

Frage von MiSt zum Thema Microsoft Office ...

Viren und Trojaner
gelöst Word und Excel per Mail gesperrt - Alternative? (7)

Frage von Coreknabe zum Thema Viren und Trojaner ...

Heiß diskutierte Inhalte
Exchange Server
Test-ActiveSyncConnectivity Error nach neuem Zertifikat (17)

Frage von Driphex zum Thema Exchange Server ...

Batch & Shell
gelöst Batch xls nach aktuellem Datum auslesen und email senden (14)

Frage von michi-ffm zum Thema Batch & Shell ...

Backup
Datensicherung ARCHIV (12)

Frage von fautec56 zum Thema Backup ...