Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Excel
  Objektzuweisung Worksheet Image zickt und Schaltfläche

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Objektzuweisung Worksheet Image zickt und Schaltfläche (1599 mal gelesen)
Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 01. Mrz. 2007 09:03    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo VBA-ler,

kann mir bitte jemand mal das hier erklären?

Code:
Private Sub optSatteldach_Click()
    Set wsStam = ThisWorkbook.Sheets("Stammdat")
    wsStam.Range("A3:B4").Select
    imgDachform.Picture = ThisWorkbook.Sheets("Stammdat").Image2.Picture
End Sub
Die sub steht in einer UserForm. wsStam ist ein Worksheet mit Stammdaten, wird in einem  Modul als Public und Worksheet deklariert. Zu diesem Zeitpunkt ist es noch nicht belegt, deshalb die 'Set'-Anweisung.
Die 'Range(...)'-Zeile ist nur zu Testzwecken da, ob wsStam nun erkannt wird, sprich belegt ist.
'imgDachform...' zeigt ein Image, das in der Mappe liegt, in einer UserForm an.

Sobald ich sowas mache:

Code:
imgDachform.Picture = wsStam.Image2.Picture
erscheint der nette Hinweis "Fehler beim Kompilieren: Methode oder Datenobjekt nicht gefunden", die erste Zeile der Sub wird markiert (gelb-debug) und '.Image2' blau hinterlegt.

Banaler Anfängerfehler? Schlauch? Was mache ich falsch?

[OTon] Und bevor ich anfange zu Editieren: Nun hakt's zur Abwechslung zwischendrin gleich mal bei 'Set...' (gleicher Aufruf). Jetzt habe ich 'Set...' und 'wsStam...' auskommentiert, ansonsten wie der erste Code, es klappt. Verwirrung - Hilfe! Es geht munter weiter: In VBA - "Datei wurde nicht gespeichert!" und "Systemfehler" (Aua!); jetzt muß Excel beendet werden. Na, Mahlzeit. OK, nach xls-Neustart ist wieder alles da. [OToff]

Ach, und wo wir gerade schon dabei sind: Was zum Teufel passiert mit der Makrozuweisung einer Benutzer-Schaltfläche, wenn ich ihm ein einziges Mal gesagt habe: Datei-Speichern unter..., diese (neue) Datei dann lösche, die alte (über den Explorer) wieder aufrufe, und Microsuck will dann auf die Macros der -nicht vorhandenen!- 'Unter...'-gespeicherten Datei zugreifen??? Habe ihm schon zweimal wieder das Makro aus 'Dieser' Mappe zugewiesen. Drücke ich auf's Knöpfchen, kommt wieder die Meldung, daß die andere Datei Macros enthält! Weiß hierzu vielleicht auch jemand Rat?

------------------
Gruß,
Frederik

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Andreas1964
Mitglied
Programmierer


Sehen Sie sich das Profil von Andreas1964 an!   Senden Sie eine Private Message an Andreas1964  Schreiben Sie einen Gästebucheintrag für Andreas1964

Beiträge: 35
Registriert: 14.11.2005

erstellt am: 01. Mrz. 2007 12:22    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Paulchen 10 Unities + Antwort hilfreich

Zu Deinem "Set"-Problem kann ich nicht sehr viel sagen, das müsste ich mir direkt ankucken, sprich das Excelfile haben.

Zu Deinem "Speichern unter"-Problem: Excel merkt sich die Makro's und in welcher aktuellen Datei sie sind.

Das gleiche "Phenomen" kann man beobachten wenn man ein 2tes Excelfile öffnet in dem ein Makro beim Start auf eine Tastenkombination gelegt wird, dieses aber beim Beenden die Belegung nicht wieder rückgängig macht.

D.h. wird das 2te Excelfile beendet und man drückt auf die Tastenkombination, dann öffnet Excel das 2te Excelfile und führt anschließend das entsprechende Makro aus.

Abhilfe dafür (und für Dein Problem) ist das komplette Schließen und wieder öffnen von Excel.

Mit freundlichem Gruß,
Andreas Killer, Arbeitsvorbereitung und NC-Programmierung
KLÖCKNER HÄNSEL
PROCESSING GmbH
Lister Damm 19
D-30163 Hannover

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 01. Mrz. 2007 12:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Andreas1964,
Mappe uppen möchte ich vermeiden - z.T. sensibel.
Zitat:
Abhilfe dafür (und für Dein Problem) ist das komplette Schließen und wieder öffnen von Excel.
OK, vermutlich habe ich das sogar schonmal gemacht, konnte aber keinen Regelmäßigkeit feststellen. Werde das gelegentlich mal ausprobieren und gesondert darauf achten. Momentan läuft's, d.h. ich will gerade mal nix ändern... Danke schön!

------------------
Gruß,
Frederik

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 03. Mrz. 2007 10:23    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Zitat:
und Zitat vom Zitat: Schließen und wieder öffnen von Excel.
Jetzt habe ich da nochmal bewußt drauf geachtet - und nix is! Schließen, Beenden, erneutes Öffnen... Xls 2k macht munter, was es will, bis ich ihm wenigstens 1x händisch die Makros in der gewünschten [meist: DIESER] Mappe zugewiesen habe. Echt nervig!

------------------
Gruß,
Frederik

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Nepumuk
Mitglied
Entwicklungsleiter


Sehen Sie sich das Profil von Nepumuk an!   Senden Sie eine Private Message an Nepumuk  Schreiben Sie einen Gästebucheintrag für Nepumuk

Beiträge: 351
Registriert: 16.10.2004

erstellt am: 03. Mrz. 2007 16:18    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Paulchen 10 Unities + Antwort hilfreich

Hallo Frederik,

zu Set:

deine Objektvariable ist ein Standardsheet, welches keine speziellen Objekte enthält. Auch durch die Set - Anweisung kann das nicht als Imageobjekt sondern als Shape (welches dann das Imageobjekt darstellt) hinzugefügt werden. Also müsstest du so auch das Picture - Objekt zugreifen:

Code:
imgDachform.Picture = wsStam.Shapes("Image1").OLEFormat.Object.Object.Picture

Würde ich aber nicht so machen, denn wenn du die Tabelle mal umbenennst, dann kannst du deine ganzen Prozeduren nach falschen Set – Anweisungen durchsuchen. Arbeite mit den Objekten selbst, dann ist der Name auf der Exceloberfläche völlig egal. Die Objektnamen der Tabelle sind die, welche im Projektexplorer vor der Klammer stehen und im Eigenschaftsfenster ganz oben. Das ist die sogenannte CodeName – Eigenschaft der Tabelle. Damit würde dann deine Zuweisung z.B. so aussehen:

Code:
imgDachform.Picture = Tabelle1.Image1.Picture

Eine andere Möglichkeit wäre, deine Objektvariable direkt als die Tabelle zu deklarieren, welche sie darstellen soll. Da musst du auch wieder mit dem Objektnamen der Tabelle arbeiten.

Code:
Public wsStam As Tabelle1

Damit würde dann deine ursprüngliche Idee wieder funktionieren.

Code:
Set wsStam = Tabelle1
imgDachform.Picture = wsStam.Image1.Picture

Alledings ist der Verweis an eine Objektvariable, welche dann nur einmal verwendet wird, keine sonderlich sinnvolle Programmierung.

------------------
Gruß
Nepumuk 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 05. Mrz. 2007 13:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Nepumuk,

läuft leider nicht wie erhofft. Deine erste Zeile liefert mir einen Laufzeitfehler (Namen stimmen); die anderen Zeilen habe ich mir auch angesehen. Nun ja, ich muß gestehen, daß ich mein ursprüngliches Konzept inzwischen verworfen habe und nun die Variante von startrek verwende; auch mein Tabellenblatt mit den Stammdaten gibt es nicht mehr, habe das jetzt direkt über den Code gelöst.

Zitat:
Alledings ist der Verweis an eine Objektvariable, welche dann nur einmal verwendet wird, keine sonderlich sinnvolle Programmierung.
Na, das nenne ich mal höflich für "Sauklaue"! ;-) War ja nicht nur dafür gedacht - es lagen noch Bildchen und ein paar Zeilen Text in den "Stammdaten" drin, wurde also durchaus mehrfach angesprochen. Wie erwähnt: Ist eh alles anders. Ich bin Dir sehr dankbar für Deine geduldige Unterstützung und den Tip mit den CodeNames!

------------------
Gruß,
Frederik

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz