Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1696to1700
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
Speichern von Bildern aus Userform
11.06.2019 09:19:34
Bildern
Servus Leute,
ich habe von Nepumuk folgendem Code für das Speichern von Bilder aus einer Maske bekommen. Leider funktioniert er nicht und im anderen Chat kann ich nicht mehr drauf zugreifen. Es sollte wie folgt funktionieren
Bild speichern.
Image1 enthält bereits ein Bild ja / nein?
' wenn nein Speicher es dort ab, wenn ja überprüfe Image 2
Image2 enthält ein Bild ja / nein?
' wenn nein Speicher es dort ab, wenn ja überprüfe Image 2
und diese Schleife soll circa 20 mal durchlaufen.
Habe den Code leicht geändert.
Private Sub Beispiel()
Dim lngIndex As Long
Dim blnFound As Boolean
With Activesheet
For lngIndex = 1 To 20
With .OLEObjects("Image" & CStr(lngIndex)).Object
If .Picture Is Nothing Then
Set .Picture = LoadPicture(Filename:="Mein Pfad aus der Maske")
blnFound = True
Exit For
End If
End With
Next
If Not blnFound Then _
Call MsgBox("Kein leeres Image-Control gefunden.", vbExclamation, "Hinweis")
End With
End Sub
Was ist an dem Coe noch falsch bzw. was habe ich daran übersehen?

23
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Speichern von Bildern aus Userform
11.06.2019 12:28:43
Bildern
Hallo Sören,
"funktioniert nicht" ist als Fehlerbeschreibung unzureichend. Was passiert wenn du das Makro startest?
Gruß
Nepumuk
AW: Speichern von Bildern aus Userform
11.06.2019 12:55:03
Bildern
Bei mir kommt die Fehlermeldung 438. Objekt untersützzt diese Eigenschaft nicht
AW: Speichern von Bildern aus Userform
11.06.2019 13:16:07
Bildern
Hallo Sören,
und welche Zeile markiert der Debugger?
Gruß
Nepumuk
AW: Speichern von Bildern aus Userform
11.06.2019 13:27:10
Bildern
Leider keine. Deswegen ist es für noch schwieriger den Fehler zu finden. Aber vielleicht stelle ich mal die Frage, wo der Code rein muss?
Ich habe den Code in einem CommandButton hinterlegt, der zum speichern gedacht ist, oder muss der woanders rein?
AW: Speichern von Bildern aus Userform
11.06.2019 13:27:19
Bildern
Leider keine. Deswegen ist es für noch schwieriger den Fehler zu finden. Aber vielleicht stelle ich mal die Frage, wo der Code rein muss?
Ich habe den Code in einem CommandButton hinterlegt, der zum speichern gedacht ist, oder muss der woanders rein?
Anzeige
AW: Speichern von Bildern aus Userform
11.06.2019 14:15:10
Bildern
Hallo Sören,
CommandButton ist schon ok, aber ohne die Zeile zu kennen kann ich dir so nicht weiterhelfen. Kannst du eine Mustermappe, in welcher der Fehler auftritt, hochladen?
Gruß
Nepumuk
AW: Speichern von Bildern aus Userform
12.06.2019 08:24:04
Bildern
Hallo Nepumuk,
habe dir mal eine Beispieldatei gebastelt. Hier tritt der Fehler ebenfalls auch.
https://www.herber.de/bbs/user/130343.xlsm
Ich hoffe du kannst mir helfen?
Gruß Sören
AW: Speichern von Bildern aus Userform
12.06.2019 08:24:13
Bildern
Hallo Nepumuk,
habe dir mal eine Beispieldatei gebastelt. Hier tritt der Fehler ebenfalls auch.
https://www.herber.de/bbs/user/130343.xlsm
Ich hoffe du kannst mir helfen?
Gruß Sören
Anzeige
AW: Speichern von Bildern aus Userform
12.06.2019 08:44:41
Bildern
Hallo Nepumuk,
habe dir mal eine Beispieldatei gebastelt. Hier tritt der Fehler ebenfalls auch.
https://www.herber.de/bbs/user/130343.xlsm
Ich hoffe du kannst mir helfen?
Gruß Sören
AW: Speichern von Bildern aus Userform
12.06.2019 09:25:56
Bildern
Hallo Sören,
in der LoadPicture-Funktion müsstest du einen Dateipfad angeben. Aber so geht es auch:
Set .Picture = Eingabemaske.Image1.Picture
Gruß
Nepumuk
AW: Speichern von Bildern aus Userform
12.06.2019 10:06:40
Bildern
Hallo Nepumuk,
das habe ich auch schon versucht. Hat aber leider nichts gebracht.
Es wird immer noch die Fehlermeldung 438. Objekt unterstützt diese Eigenschaft oder Methode nicht.
Könnte es noch an was anderen liegen?
Gruß Sören
Anzeige
AW: Speichern von Bildern aus Userform
12.06.2019 10:20:14
Bildern
Hallo Sören,
jetzt hab ich es gesehen. Du hast die Zeile geändert in welcher abgefragt wird ob die .Picture-Eigenschaft des Bildes in der Tabelle leer ist. Also:
    With Tabelle1
For lngIndex = 1 To 10
With .OLEObjects("Image" & CStr(lngIndex)).Object
If .Picture Is Nothing Then
Set .Picture = Eingabemaske.Image1.Picture
blnFound = True
Exit For
End If
End With
Next
If Not blnFound Then _
Call MsgBox("Kein leeres Image-Control gefunden.", vbExclamation, "Hinweis")
End With

Gruß
Nepumuk
AW: Speichern von Bildern aus Userform
12.06.2019 11:08:53
Bildern
Hallo Nepumuk,
vielen vielen Dank. Jetzt funktioniert es endlich :) Es lag wirklich an if . Picture is Nothing then
Ich hoffe du beantwortest mir noch eine weitere Frage zu diesem Thema.
Was müsste ich am Code ändern, wenn ich möchte, dass ausgewählte Bilder durch einen Click überschrieben werden sollen?
Also wenn zum Beispiel die Daten aus Zeile 3 angezeigt werden und man nun das Bild überschreiben will.
Danke im Voraus. Gruß Sören
Anzeige
AW: Speichern von Bildern aus Userform
12.06.2019 11:48:46
Bildern
Hallo Sören,
wie willst du die Zeile 3 auswählen?
Gruß
Nepumuk
AW: Speichern von Bildern aus Userform
12.06.2019 12:54:03
Bildern
Hallo Nepumuk,
Neben einer Eingabemaske habe ich auch eine Ausgabemaske. Sie ist genau so aufgebaut wie die Eingabemaske. Zusätzlich habe ich eine Textbox und eine Listbox. Die Listbox zeigt alle Daten an aus der Station die in die TextBox eingeben wurde. Also gibt mal in der TextBox 2 ein und klickt auf Suche, werden alle dazueghörigen Daten angezeigt. . Und wenn man dann auf die Listbox die Zeile anklickt, werden die restlichen Daten in der Maske angezeigt. Hoffentlich ist das halbwegs verständlich erklärt.
Jetzt muss neben den anderen Daten die ja auch angezeigt werden sollen, auch das entsprechnde Bild angezigt werden. Man kann die Daten nun bearbeiten und wenn man auf Speichern klickt, werden diese überschrieben.
Nun will ich einen Code schreiben, der einerseits ersteinmal die bilder wieder anzeigen lässt und beim Speichern die bilder überschreibt durch die neunen.
Verstehst du was ich meine? oder soll ich eine Vorlage mal basteln.
Hoffe kannst mir helfen.
Gruß Sören
Anzeige
AW: Speichern von Bildern aus Userform
12.06.2019 14:45:16
Bildern
Hallo Sören,
wie speicherst du die Zeilennummer in der ListBox, oder hast du noch nicht daran gedacht? Zeig mal den Code zum befüllen der ListBox.
Gruß
Nepumuk
AW: Speichern von Bildern aus Userform
17.06.2019 11:07:22
Bildern
Hallo Nepumuk,
die Daten aus der Listbox werden nicht gespeichert, sondern dienen nur darum, um 2 wichtige Daten anzuzeigen. Je nach dem was man wählt, werden die restlichen Daten in der Maske angezeigt. und hier müsste ja dann eig auch der Code für die Biler stehen. Oder Irre ich mich.
Hier der Coe für die Lsitbox.
Private Sub ListBox1_Click()
Dim intC As Integer
Dim lngR As Long
Dim ausg As Integer
With ListBox1
If .ListCount = 0 Then Exit Sub
If .List(.ListIndex, 0) = "" Then Exit Sub
lngR = CLng(.List(.ListIndex, 4))
zeile = lngR
End With
Me.StationStart.Value = Cells(zeile, 1)
' Me.Image1.Picture = ActiveSheet.Picture
Me.Endgeraet.Value = Cells(zeile, 7)
Me.Stationsseite.Value = Cells(zeile, 14)
Me.Endgeraeteanzahl.Value = Cells(zeile, 12)
Me.Ortungszone.Value = Cells(zeile, 16)
Me.Hardwareposition.Value = Cells(zeile, 19)
Me.Sationsname.Value = Cells(zeile, 22)
Me.VisuArt.Value = Cells(zeile, 30)
Me.VisuArt1.Value = Cells(zeile, 31)
Me.VisuArt2.Value = Cells(zeile, 32)
Me.VisuArt3.Value = Cells(zeile, 33)
Me.VisuArt4.Value = Cells(zeile, 34)
Me.VisuArt5.Value = Cells(zeile, 35)
Me.VisuArt6.Value = Cells(zeile, 36)
Me.VisuArt7.Value = Cells(zeile, 37)
Me.VisuArt8.Value = Cells(zeile, 38)
Me.VisuArt9.Value = Cells(zeile, 39)
Me.VisuArt10.Value = Cells(zeile, 40)
Me.VisuArt11.Value = Cells(zeile, 41)
Me.VisuArt12.Value = Cells(zeile, 42)
Me.VisuArt13.Value = Cells(zeile, 43)
Me.VisuArt14.Value = Cells(zeile, 44)
Me.VisuArt15.Value = Cells(zeile, 45)
Me.PosFeldbezeichnung.Value = Cells(zeile, 46)
Me.Feldbereich.Value = Cells(zeile, 48)
Me.Ausgabetext.Value = Cells(zeile, 56)
Me.Codebedingungen.Value = Cells(zeile, 64)
Me.Bemerkungen.Value = Cells(zeile, 68)
Me.Exotenalarm.Value = Cells(zeile, 76)
Me.Exotenalarm1.Value = Cells(zeile, 77)
Me.Exotenalarm2.Value = Cells(zeile, 78)
Me.Exotenalarm3.Value = Cells(zeile, 79)
Me.Exotenalarm4.Value = Cells(zeile, 80)
Me.Exotenalarm5.Value = Cells(zeile, 81)
Me.Exotenalarm6.Value = Cells(zeile, 82)
Me.Exotenalarm7.Value = Cells(zeile, 83)
Me.Exotenalarm8.Value = Cells(zeile, 84)
Me.Exotenalarm9.Value = Cells(zeile, 85)
Me.Exotenalarm10.Value = Cells(zeile, 86)
Me.Exotenalarm11.Value = Cells(zeile, 87)
Me.Exotenalarm12.Value = Cells(zeile, 88)
Me.Exotenalarm13.Value = Cells(zeile, 89)
Me.Exotenalarm14.Value = Cells(zeile, 90)
Me.Exotenalarm15.Value = Cells(zeile, 91)
Me.Taktart.Value = Cells(zeile, 92)
Me.IStrang.Value = Cells(zeile, 94)
StationSuche.SetFocus
Anzeige
AW: Speichern von Bildern aus Userform
17.06.2019 18:46:29
Bildern
Hallo Sören,
wie ich an deiner Prozedur erkennen kann speicherst du die Zeilennummer schon in der ListBox. Dann kannst du so auf das Image in der Tabelle zugreifen:
Private Sub ListBox1_Click()
    
    Dim zeile As Long
    Dim objOLEObject As OLEObject
    
    With ListBox1
        zeile = Clng(.List(.ListIndex, 4))
    End With
    
    For Each objOLEObject In ActiveSheet.OLEObjects
        If TypeOf objOLEObject.Object Is MSForms.Image Then
            If objOLEObject.TopLeftCell.Row = zeile Then
                Set Image1.Picture = objOLEObject.Object.Picture
                Exit For
            End If
        End If
    Next
    Set objOLEObject = Nothing
    
    StationStart.Value = Cells(zeile, 1).Value
    Endgeraet.Value = Cells(zeile, 7).Value
    Stationsseite.Value = Cells(zeile, 14).Value
    Endgeraeteanzahl.Value = Cells(zeile, 12).Value
    Ortungszone.Value = Cells(zeile, 16).Value
    Hardwareposition.Value = Cells(zeile, 19).Value
    SationsnaValue = Cells(zeile, 22).Value
    VisuArt.Value = Cells(zeile, 30).Value
    VisuArt1.Value = Cells(zeile, 31).Value
    VisuArt2.Value = Cells(zeile, 32).Value
    VisuArt3.Value = Cells(zeile, 33).Value
    VisuArt4.Value = Cells(zeile, 34).Value
    VisuArt5.Value = Cells(zeile, 35).Value
    VisuArt6.Value = Cells(zeile, 36).Value
    VisuArt7.Value = Cells(zeile, 37).Value
    VisuArt8.Value = Cells(zeile, 38).Value
    VisuArt9.Value = Cells(zeile, 39).Value
    VisuArt10.Value = Cells(zeile, 40).Value
    VisuArt11.Value = Cells(zeile, 41).Value
    VisuArt12.Value = Cells(zeile, 42).Value
    VisuArt13.Value = Cells(zeile, 43).Value
    VisuArt14.Value = Cells(zeile, 44).Value
    VisuArt15.Value = Cells(zeile, 45).Value
    PosFeldbezeichnung.Value = Cells(zeile, 46).Value
    Feldbereich.Value = Cells(zeile, 48).Value
    Ausgabetext.Value = Cells(zeile, 56).Value
    Codebedingungen.Value = Cells(zeile, 64).Value
    Bemerkungen.Value = Cells(zeile, 68).Value
    Exotenalarm.Value = Cells(zeile, 76).Value
    Exotenalarm1.Value = Cells(zeile, 77).Value
    Exotenalarm2.Value = Cells(zeile, 78).Value
    Exotenalarm3.Value = Cells(zeile, 79).Value
    Exotenalarm4.Value = Cells(zeile, 80).Value
    Exotenalarm5.Value = Cells(zeile, 81).Value
    Exotenalarm6.Value = Cells(zeile, 82).Value
    Exotenalarm7.Value = Cells(zeile, 83).Value
    Exotenalarm8.Value = Cells(zeile, 84).Value
    Exotenalarm9.Value = Cells(zeile, 85).Value
    Exotenalarm10.Value = Cells(zeile, 86).Value
    Exotenalarm11.Value = Cells(zeile, 87).Value
    Exotenalarm12.Value = Cells(zeile, 88).Value
    Exotenalarm13.Value = Cells(zeile, 89).Value
    Exotenalarm14.Value = Cells(zeile, 90).Value
    Exotenalarm15.Value = Cells(zeile, 91).Value
    Taktart.Value = Cells(zeile, 92).Value
    IStrang.Value = Cells(zeile, 94).Value
    
    StationSuche.SetFocus
    
End Sub

Jetzt brauchst du wahrscheinlich noch eine Prozedur um das Image im UserForm zu ändern und eine zum zurückschreiben des geänderten Images in die richtige Zeile der Tabelle. Oder?
Die beiden Exit Sub's kannst du dir sparen den das Click-Event der ListBox wird nur getriggert wenn du auf einen Eintrag klickst.
Gruß
Nepumuk
Anzeige
AW: Speichern von Bildern aus Userform
18.06.2019 22:50:20
Bildern
Hallo Nepumuk,
du bist der beste. Ich konnte deinen Code 1 zu 1 bei mir einfügen und es hat wunderbar funktioniert.
Und zu dem was du am Ende geschrieben hast, hast du zum teil recht.
"Jetzt brauchst du wahrscheinlich noch eine Prozedur um das Image im UserForm zu ändern und eine zum zurückschreiben des geänderten Images in die richtige Zeile der Tabelle. Oder?"
Zum ändern des Image verwende ich die selbe Prozedur wie in meiner Eingabemaske und das klappt wunderbar. Was mir aber jetzt noch fehlt, ist das überschreiben bzw. zurückschreiben des geänderten Images in die richtige Zeile der Tabelle bzw. in das richtige Immage Control.
Gruß Sören
Anzeige
AW: Speichern von Bildern aus Userform
19.06.2019 05:14:05
Bildern
Hallo Sören,
dazu kannst du den selben Code benutzen, du musst nur die Zeile umdrehen.
Also an Stelle:
Set Image1.Picture = objOLEObject.Object.Picture

einfach:
Set objOLEObject.Object.Picture = Image1.Picture

Gruß
Nepumuk
AW: Speichern von Bildern aus Userform
19.06.2019 14:00:08
Bildern
Hallo Nepumuk,
Danke, klappt wunderbar. Ich habe leider noch ein Problem :). Ich habe noch die Möglichkeit die Daten zu löschen. Wenn ich das mache werden auch alle Daten aus der Zeile plus das Bild gelöscht.
Das Bild wird so gelöscht: Image1.Picture = LoadPicture("")
Wenn ich jetzt aber neue Daten eingebe und speicher, werden die Daten in einer neuen Zeile abgespeichert.
Beispiel:
Zeile A Daten
Zeile B Daten
Nun lösche ich Zeile A. Anschließend werden neue Daten eingepflegt. Die Daten werden nun in Zeile C gespeichert und das Bild in Zeile A. Genau das möchte ich nicht. Die Daten und das Bild sollen ja zusammen in einer Zeile gespeichert werden.
Mein Probelm ist also nun, dass die Daten immer eine Zeile darunter gespeichert werden, und nach dem Code von dir die Bilder immer im nächsten freien Image Control.
Speichern der Daten Beispiel:
Dim last As Integer
last = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
Wie bekomme ich es hin, das die Daten und Bilder in der selben Zeile gespeichert werden. Meine Überleung war nun, dass ich nach dem Löschen der Daten und des Bildes auch die komplette Zeile lösche. Wäre glaub ich die einfachste Lösung. Probiere auch gerade viel aus, leider funktioniert es nicht.
Hättest du da eine Idee?
Gruß Sören
Anzeige
AW: Speichern von Bildern aus Userform
19.06.2019 16:13:31
Bildern
Hallo Sören,
gibt es zu jedem Datensatz ein Bild? Dann könnte der neue Datensatz in der Zeile eingefügt werden in der sich das erste leere Image in der Tabelle befindet.
Bild löschen machst du besser so:
Set Image1.Picture = Nothing
Das spart die LoadPicture - Methode.
Gruß
Nepumuk
AW: Speichern von Bildern aus Userform
25.06.2019 09:14:52
Bildern
Hallo Nepumuk,
genau. zu jedem Datensatz kommt ein Bild. und die bilder werden nicht in eine freie Zeile gespeichert, sondern nach dem Prinzip, immer eine Zeile weiter runter gehen. Hier der Code:
Dim last As Integer
last = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
Wenn man das umschreiben könnte, das z.B ab zeile 3 immer in der ersten freien Zeile was gespeichert wird und nicht untereinander würde es doch mit dem Bilder passen oder?
Gruß Sören

33 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige