Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1712to1716
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
Objektvariable nicht definierte (wenn...)
23.09.2019 07:23:45
Mario
Hallo an alle!
Ich bin ein echt großer Fan dieses Forums und konnte schon sehr viele Probleme mit bereits bestehenden Beiträgen lösen. Jetzt verzweifle ich aber schon längere Zeit. Ich möchte per Makro ein Image in einer Userform erstellen und dieses Image unter dem letzten Image in der Userform platzieren.
Hier der Code:

Sub test()
Position = 0
'SCHRITT A
'Hier bestimme ich die Höhe des untersten Images in einer Userform
Dim bild As Control
For Each bild In UserForm1.Controls
If TypeOf bild Is image Then
If Position 

Anmerkung - Schritt A alleine funktioniert einwandfrei
Anmerkung - Schritt B alleine funktioniert einwandfrei (sofern nicht vorher Schritt A ausgeführt wurde)
Vielen Dank schonmal für eure Hilfe!
lg Mario

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Objektvariable nicht definierte (wenn...)
23.09.2019 08:20:10
Nepumuk
Hallo Mario,
willst du das Image dauerhaft einfügen oder nur temporär?
Gruß
Nepumuk
AW: Objektvariable nicht definierte (wenn...)
23.09.2019 09:02:13
Mario
Das image soll dauerhaft bleiben:)
AW: Objektvariable nicht definierte (wenn...)
23.09.2019 09:16:21
Nepumuk
Hallo Mario,
dann so:

Dim NewImage As MSForms.Image

Gruß
Nepumuk
AW: Objektvariable nicht definierte (wenn...)
23.09.2019 09:32:27
Mario
Hallo Nepumuk!
Vielen Dank für die rasche Hilfe! Werde es am Abend testen aber gehe natürlich davon aus dass das die Lösung ist :)
lg mario
AW: Objektvariable nicht definierte (wenn...)
23.09.2019 10:15:30
Nepumuk
Hallo Mario,
ich hätte die Frage genau lesen sollen. Mein 1. Vorschlag bringt nichts. Problem ist, nach dem du durch die Controls gegangen bist ist das UserForm geladen. Als erstes habe ich es mit Unload versucht, da kam eine andere Fehlermeldung. Dann habe ich versucht die beiden Teile mit OnTime zu entkoppeln, da hat es geklappt. Also:
Option Explicit
Public Sub Test1()
Dim objControl As Control
Dim sngPosition As Single
For Each objControl In UserForm1.Controls
If TypeOf objControl Is MSForms.Image Then
If sngPosition 

Gruß
Nepumuk
Anzeige
AW: Objektvariable nicht definierte (wenn...)
25.09.2019 06:25:37
Mario
Vielen Dank! Klappt wunderbar. Jetzt mache ich mich noch auf die Suche nach dem Code, die Höhe der Userform gleich anzupassen wenn das Bild darüber hinausschaut. Wenn ichs nicht schaffe würde ich mich nochmal bei dir melden wenn ich darf. Vielen Dank nochmal!! lg Mario
AW: Objektvariable nicht definierte (wenn...)
25.09.2019 06:57:50
Mario
Nachtrag: Wenn ich deinen Code aus den Entwicklertools heraus laufen lasse funktioniert das. Wenn ich das Makro über den Button Makros und dann "Test1" auswähle und ausführen klicke funktionert er nicht mehr.
Ich will dieses Makro später über einen Button in einer separaten Userform laufen lassen wo ich ein paar Bedingungen hinzufüge. Daher muss der Code auch "von extern" laufen. Hast du dazu eine Lösung?
Anzeige
AW: Objektvariable nicht definierte (wenn...)
25.09.2019 08:16:21
Nepumuk
Hallo Mario,
wie soll ich "funktionert er nicht mehr" verstehen?
Gruß
Nepumuk
AW: Objektvariable nicht definierte (wenn...)
25.09.2019 09:06:27
Mario
Hallo Nepumuk,
es kommt eine Fehlermeldung "ungültige Vorreferenz... ich weiss es leider gerade nicht genau" und der Button wird nicht erstellt. kann es dir am abend genau sagen.
lg Mario
AW: Objektvariable nicht definierte (wenn...)
25.09.2019 09:14:08
Nepumuk
Hallo Mario,
du darfst vor dem Einfügen des Image-Controls das UserForm keinesfalls öffnen (.Show - Methode).
Gruß
Nepumuk
AW: Objektvariable nicht definierte (wenn...)
25.09.2019 12:18:45
Mario
Danke für deine Geduld.
hmmm... das mach ich auch nicht...
ich rufe dein makro direkt über
-Entwicklertools
-Makros
-Test1
auf. (ohne irgendwo die userform zu öffnen)
lg Mario
Anzeige
AW: Objektvariable nicht definierte (wenn...)
25.09.2019 12:54:01
Nepumuk
Hallo Mario,
jetzt habe ich lange rumprobiert und bringe es nicht zum laufen. Vielleicht setze ich mich am Wochenende nochmal dran.
Gruß
Nepumuk
AW: Objektvariable nicht definierte (wenn...)
25.09.2019 13:06:18
Mario
Hallo Nepumuk,
das wäre echt super von dir.
Die Aufgabenstellungen klingt eigentlich relativ leicht. Dachte nicht dass mich das so lange beschäftigt!
lg mario
AW: Objektvariable nicht definierte (wenn...)
25.09.2019 13:29:40
Nepumuk
Hallo Mario,
warum erzeugst du eigentlich die Images nicht zur Laufzeit? Einfach zählen wie viele Bilder du hast, Images erzeugen und Bilder einfügen.
Gruß
Nepumuk
AW: Objektvariable nicht definierte (wenn...)
25.09.2019 17:02:58
Mario
Ich erzeuge das jeweilige Bild in einem vorherigen Schritt mittels Makro temporär und speichere dieses nicht ab. Zudem hinterlege ich auch gleich automatisch code wenn man auf die jeweiligen Bilder klickt...
lg Mario
Anzeige
AW: Objektvariable nicht definierte (wenn...)
25.09.2019 17:46:25
Nepumuk
Hallo Mario,
es ist doch egal ob du ein temporäres Bild in ein zur Laufzeit erstelltes Image-Control einfügst oder in ein vorhandenes. Und das Click-Event kannst du über eine Klasse ganz einfach abfangen.
Gruß
Nepumuk
AW: Objektvariable nicht definierte (wenn...)
25.09.2019 18:59:48
Mario
ich kenn mich leider nicht so gut aus aber wenn ich die images nur zur Laufzeit hinzufüge sind Sie beim nächsten öffnen ja weg aber ich brauche sie da.
Ich erklär dir vielleicht den Hintergrund mal. Ich erweitere mein Userform (eigentlich meinE UserformS - siehe weiter unten) in unregelmäßigen Abständen mit Buttons. Diese unterscheiden sich durch das Bild, den Namen und ein Stichwort im Click_event.
Ich muss jedes mal zuerst das Bild erstellen, dann den Button erstellen, dann den Code kopieren und das Stichwort ändern. Da es sich immer um den gleichen Vorgang handelt, hätte ich dazu gern eine automatisierte Lösung.
Ziel der "Übung" ist folgendes: Ich möchte mir ein weiteres Userform bauen, wo ich in einer Combobox die Userform auswähle in der das Bild eingefügt werden soll, den Namen des Images und das Stichwort in jeweils ein Textfeld schreibe und der Rest beim klicken von OK automatisch geschieht.
PS: ich habe mich für images entschieden, da die ich bezüglich einfügen des Bildes flexibler bin.
Ich hoffe du verstehst was ich meine. Bei Fragen melde dich bitte.
lg mario
Anzeige
AW: Objektvariable nicht definierte (wenn...)
25.09.2019 19:01:02
Mario
ich kenn mich leider nicht so gut aus aber wenn ich die images nur zur Laufzeit hinzufüge sind Sie beim nächsten öffnen ja weg aber ich brauche sie da.
Ich erklär dir vielleicht den Hintergrund mal. Ich erweitere mein Userform (eigentlich meinE UserformS - siehe weiter unten) in unregelmäßigen Abständen mit Buttons. Diese unterscheiden sich durch das Bild, den Namen und ein Stichwort im Click_event.
Ich muss jedes mal zuerst das Bild erstellen, dann den Button erstellen, dann den Code kopieren und das Stichwort ändern. Da es sich immer um den gleichen Vorgang handelt, hätte ich dazu gern eine automatisierte Lösung.
Ziel der "Übung" ist folgendes: Ich möchte mir ein weiteres Userform bauen, wo ich in einer Combobox die Userform auswähle in der das Bild eingefügt werden soll, den Namen des Images und das Stichwort in jeweils ein Textfeld schreibe und der Rest beim klicken von OK automatisch geschieht.
PS: ich habe mich für images entschieden, da die ich bezüglich einfügen des Bildes flexibler bin.
Ich hoffe du verstehst was ich meine. Bei Fragen melde dich bitte.
lg mario
Anzeige
AW: Objektvariable nicht definierte (wenn...)
26.09.2019 13:51:16
Nepumuk
Hallo Mario,
jetzt hatte ich gerade eine neue Idee und die klappt bei mir:
Option Explicit

Public Sub Test()
    
    Dim sngPosition As Single
    Dim objImage As MSForms.Image
    Dim objControl As Control
    
    For Each objControl In ThisWorkbook.VBProject.VBComponents("UserForm1").Designer.Controls
        
        If TypeOf objControl Is MSForms.Image Then _
            sngPosition = Application.Max(sngPosition, objControl.Top + objControl.Height)
        
    Next
    
    Set objImage = ThisWorkbook.VBProject.VBComponents("UserForm1") _
        .Designer.Controls.Add("Forms.Image.1")
    
    With objImage
        .Top = sngPosition: .Left = 5: .Width = 100: _
            .Height = 20: .Name = "neuesbild"
    End With
    
    Set objImage = Nothing
End Sub

Gruß
Nepumuk
Anzeige
AW: Objektvariable nicht definierte (wenn...)
27.09.2019 07:19:03
Mario
Guten Morgen Nepumuk!
wahnsinn!!! ich habs soeben getestet! Es funktioniert!!! hab auch schon das angesprochene weitere Userform gebastelt und es läuft alles so wie ich es mir vorgestellt habe. VIELEN HERZLICHEN DANK! lg Mario

34 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige