Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

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, 9673 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
Microsoft Office
gelöst Excel Zelle dynamisch einer Zeile zuordnen (3)

Frage von sammy65 zum Thema Microsoft Office ...

Windows Server
gelöst Excel Application Error auf TS 2012 R2 (1)

Frage von pablovic zum Thema Windows Server ...

Windows Server
User-ID zu Application Crash

Frage von pablovic zum Thema Windows Server ...

VB for Applications
gelöst VB Skript Excel Datei (3)

Frage von Frager zum Thema VB for Applications ...

Neue Wissensbeiträge
Ubuntu

Ubuntu 17.10 steht zum Download bereit

Information von Frank zum Thema Ubuntu ...

Datenschutz

Autofahrer-Pranger - Bewertungsportal illegal

(8)

Information von BassFishFox zum Thema Datenschutz ...

Windows 10

Neues Win10 Funktionsupdate verbuggt RemoteApp

(2)

Information von thomasreischer zum Thema Windows 10 ...

Microsoft

Die neuen RSAT-Tools für Win10 1709 sind da

(2)

Information von DerWoWusste zum Thema Microsoft ...

Heiß diskutierte Inhalte
Router & Routing
Allnet - VDSL2 Modem - SFP (mini-GBIC) (20)

Frage von Dobby zum Thema Router & Routing ...

Voice over IP
DeutschlandLAN IP Voice Data M Premium, Erfahrung mit Faxgeräte? (17)

Frage von liquidbase zum Thema Voice over IP ...

TK-Netze & Geräte
TK-Anlage VoIP - DECT Erweiterung (16)

Frage von Lynkon zum Thema TK-Netze & Geräte ...