Office: Laufzeitfehler 438

Helfe beim Thema Laufzeitfehler 438 in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Man hatte mir freundlicherweise schon geholfen und ich war ganz happy, weil auf meinem PC alles funktioniert. Leider gibt es jetzt auf anderen PCs... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Kathrin1984, 19. Juni 2009.

  1. Kathrin1984 Erfahrener User

    Laufzeitfehler 438


    Man hatte mir freundlicherweise schon geholfen und ich war ganz happy, weil auf meinem PC alles funktioniert. Leider gibt es jetzt auf anderen PCs Probleme, der Laufzeitfehler 438 tritt auf. Kann mir da jemand weiterhelfen? Wäre super!!!
    Danke schonmal, LG, Kathrin
     
    Kathrin1984, 19. Juni 2009
    #1
  2. Kathrin1984 Erfahrener User
    Ich glaube, dass das Makro bei mir läuft, weil ich die Excelversion 2002 habe und das Makro dafür ja auch geschrieben wurde. Allerdings muss das Makro auch mit anderen Versionen von Excel, z.B. 2000, funktionieren. Lässt sich da was machen? Bitte bitte anstrengen, ihr Fachleute da draußen :-) . DANKE!!!
     
    Kathrin1984, 19. Juni 2009
    #2
  3. Exl121150 Erfahrener User
    Hallo Kathrin,

    Um Dir helfen zu können, fehlen mir wichtige Information: denn ohne diese könnte der "Fehler" fast überall stecken. Eines ist aber bereits jetzt klar: es ist ein Problem, das von der Excel-Version abhängt.

    Zur Erklärung:
    In einem Excel-Arbeitsblatt gib es verschiedene Objekte: Zellen, Zeilen, Spalten, aber auch die Arbeitsblätter sind solche Objekte.
    Die einzelnen Objekte können verschiedene Eigenschaften haben:
    zB. eine Zelle hat die Eigenschaft 'Breite' oder 'Höhe' oder 'Hintergrundfarbe' etc.
    Die einzelnen Objekte können verschiedene Dinge tun (=Methoden):
    zB. Zellen oder Spalten können sich 'löschen' oder sich 'einfügen' etc.

    Die Programmiersprache VBA kann mit solchen Objekten umgehen, indem sie solche Objekte erzeugen kann, oder auch löschen; sie kann ihre Eigenschaften verändern oder mit ihnen etwas tun, wozu sie in der Lage sind.
    Das Vergleichsmakro ist in VBA geschrieben. So weit so gut - insgesamt eine gute und praktische Angelegenheit.

    Jetzt kommt das Problem: Microsoft hat bisher bereits eine ganze Reihe von Excel-Versionen geboren und in jeder neuen Version steckt wieder ein Objekt-System drinnen, das in der Regel wieder etwas mehr kann als das vorherige. Manchmal werden aber auch wieder Objekte/Eigenschaften/Methoden entfernt oder verändert.

    Und jetzt meine Anliegen, um weiterhelfen zu können:
    1) Daher ist es für mich wichtig, welche Excel-Version Du hast (da es bei Dir funktioniert) und welche Excel-Versionen die Leute haben, bei denen es nicht funktioniert (Excel2007, Excel2003, Excel2002, Excel2000, oder noch älter)
    2) Wichtiger als die Version ist für mich, zu wissen, wo oder woran es hakt: Welches Objekt streikt bzw. welche seiner Eigenschaften bzw. Methoden funktioniert in dieser Excel-Version nicht oder nicht so recht. Denn, wie bereits erwähnt, kann das Problem überall stecken.
    3) Um das herauszufinden: bitte das Makro für den Dateienvergleich auf einem PC, auf dem der Fehler 438 aufgetreten ist, nochmal ausführen, sodass es wieder zu der Fehlermeldung kommt.
    In diesem Fall erscheint ja ein Meldungsfenster mit folgendem Inhalt:
    Laufzeitfehler '438':
    Objekt unterstützt diese Eigenschaft oder Methode nicht
    Am unteren Rand gibt es 4 Schalter, wobei die Schalter 'Beenden' und 'Debuggen' und 'Hilfe' aktiv sind.
    Bitte jetzt auf keinen Fall auf 'Beenden' klicken, sondern auf 'Debuggen'. Dadurch verzweigt Excel in den VBA-Editor, zeigt den Makro-Code an und springt zu der Stelle, die das Problem darstellt - am linken Rand des Codefensters ist außerdem ein Pfeil auf diese Code-Zeile zu sehen.
    Diese Zeile (sie ist meist auch anders eingefärbt) mit der Maus markieren
    und sie durch Drücken der Tastenkombination Strg+C in die Zwischenablage kopieren.
    Aus der Zwischenablage kann sie dann wieder mit der Tastenkombination Strg+V geholt werden, damit Du sie mir hier mitteilen kannst.

    Ich bin also an 2 Dingen interessiert:
    1) Excel-Version Deines PCs bzw. Excel-Version der Problem-PCs
    2) Stelle im Makro, wo der Fehler auftritt.
     
    Exl121150, 19. Juni 2009
    #3
  4. Kathrin1984 Erfahrener User

    Laufzeitfehler 438

    Meine Version, bei der es funktioniert, ist die von 2002. Bei 2003 geht es auch. Aber bei 2004 und 2000 klappt es leider nicht.
    Bei 2000 und 2004 wird als Fehler
    With Application.FileDialog(msoFileDialogOpen)
    angezeigt.

    Problematisch ist, dass wir mehrere Personen sind, die offenbar mit ganz verschiedenen Excel-Versionen arbeiten. Optimal wäre, wenn das Makro für alle Excel-Versionen funktionsfähig wäre... ich weiß, ich hab da Sonderwünsche :-? .
    DANKE!!!
     
    Kathrin1984, 20. Juni 2009
    #4
  5. Exl121150 Erfahrener User
    Hallo Kathrin,

    die Versionen Excel2000, Excel2002 und Excel2003 sind mir bekannt, aber Excel2004 was ist denn das für eine Version? Ist das vielleicht eine für den Mac?

    Offenbar gab es Probleme bei Excel2000 und 2004 mit dem "neuen" Dateidialogobjekt. Ich habe jetzt, falls hier ein Fehler auftritt, diesen abgefangen und rufe in diesem Fall ein veraltetes Standarddialogfenster auf und hoffe, dass der Trick, mit dem ich dann ans Arbeitsmappenobjekt komme, auch wirklich funktioniert.

    Sonst habe ich im Prinzip nichts geändert, weil ich ja bis dato noch nicht weiß, ob noch weitere Problemstellen enthalten sind. Daher bleibt nichts anderes übrig, als dass Du das Makro erneut testest, insbesondere mit den Versionen 2000 bzw. 2004 (denn die übrigen Versionen sind ja schon ohne Hänger gelaufen).
    Falls es da wieder Probleme gibt, mir bitte die Stelle im Makro mitteilen, ferner die Fehlernummer und eventuell die Fehlerkurzbeschreibung.
    Diese Prozedur kann sich im schlimmsten Fall noch ein paar Mal wiederholen, bis ein Problem nach dem anderen ausgemerzt ist.

    Hier der Link zur neuen Version:
    http://www.file-upload.net/download-1714884/Dateien_Vergleichen2.xls.html
     
    Exl121150, 20. Juni 2009
    #5
  6. Kathrin1984 Erfahrener User
    Wird umgehend ausprobiert *Daumen-drück*.
    Nochmal ne andere Frage:
    Wir haben teils Listen mit mehreren Reitern. Kann man da auch den zweiten Reiter vergleichen lassen? Oder müsste man den Inhalt dann erst in zwei neue Dateien in die Tabelle 1 abspeichern?
    LG und bis bald, Kathrin
     
    Kathrin1984, 21. Juni 2009
    #6
  7. Kathrin1984 Erfahrener User
    In Excel 2000 kann man jetzt zwar den Vergleich ausführen, aber er ist irgendwie nicht komplett.
    Wir haben zum Test einen Artikel neu eingefügt (grün), das wird auch angezeigt.
    Wir haben bei einem Artikel die Anzahlen verändert (gelber Hintergrund), das geht auch problemlos.
    Aber der Artikel, der komplett gelöscht wurde (rot), erscheint nirgendwo.
     
    Kathrin1984, 21. Juni 2009
    #7
  8. Exl121150 Erfahrener User

    Laufzeitfehler 438

    Hallo Kathrin,

    das Makro ist im Prinzip bereits auf diesen Fall vorbereitet, nur eben nicht besonders komfortabel zur Zeit einstellbar:
    1) In der aktuellen Arbeitsmappe geht die Umstellung auf ein anderes Arbeitsblatt ganz einfach: einfach ein anderes Arbeitsblatt auswählen und das Makro ausführen.
    2) Ein anderes Problem ist die Excel-Datei, die mit Hilfe der Dateisuche ausgewählt wird: um dort ein anderes Arbeitsblatt als 'Tabelle1' bzw. das 1. Arbeitsblatt zu verwenden, musst Du zur Zeit noch folgendermaßen vorgehen:
    a) Du drückst die Tastenkombination Alt+F11, um den VBA-Editor aufzurufen
    b) Dann drückst Du die Tastenkombination Strg+R, um das VBA-Projekt einzublenden (falls es noch nicht sichtbar sein sollte).
    c) Im VBA-Projekt siehst Du eine Auflistung. Gegen Ende dieser Auflistung müsste zu lesen sein: 'Module' und 1 Zeile darunter 'Modul1'.
    Auf das Wort 'Modul1' machst Du einen Doppelklick mit der Maus. Dadurch wird der Makrocode, den ich programmiert habe, sichtbar.
    d) Die ersten 3 Zeilen lauten:
    Code:
    Option Explicit
    Const cFileExt$ = "*.xls;*.xlsx"
    Const cBlattAlt$ = "Tabelle1"
    In der 3.Zeile müsstest Du statt "Tabelle1" den Namen des Tabellenblattes, den Du aus der Vergleichsdatei verwenden möchtest, eingeben (auch wieder mit Anführungszeichen).
    3) Ein bequemerer Weg wäre folgender: Du müsstest mir sagen, in welche Arbeitsblattzelle des akutellen Arbeitsblattes Du diesen Arbeitsblattnamen der Vergleichsdatei eingeben möchtest, dann kann ich ihn von dort holen, um ihn zu verwenden. Falls diese von Dir genannte Zelle leer ist, würde mein Makro wie bisher das Arbeitsblatt 'Tabelle1' bzw. das 1. Arbeitsblatt der Vergleichsdatei verwenden.
     
    Exl121150, 21. Juni 2009
    #8
  9. Exl121150 Erfahrener User
    Hallo Kathrin,

    ich habe die Konstante in Verdacht, die die Insert-Methode des Range-Objektes verwendet. Ich habe sie durch eine von mir definierte Konstante ersetzt und hoffe, dass sie auch den für Excel2000 korrekten Wert verwendet.

    Hier der Link auf die neue Version:
    http://www.file-upload.net/download-1716844/Dateien_Vergleichen3.xls.html

    Was den Arbeitsblattnamen der externen Vergleichsdatei betrifft, warte ich noch auf einen Zellvorschlag (vgl. mein letztes Posting in diesem Thread).
     
    Exl121150, 21. Juni 2009
    #9
  10. Kathrin1984 Erfahrener User
    Wenn ich das richtig verstehe, soll ich dir eine Zelle nennen, die in unseren Tabellen immer leer ist, richtig?
    Da würde sich der Übersichtlichkeit halber vielleicht A100 anbieten, da die Tabellen maximal bis so etwa 60 oder 70 reichen.
    Leider kann ich das neue Makro ja selber nicht testen, da ja auch das alte bei mir ganz wunderbar funktioniert. Insofern muss ich noch ein bisschen warten, bis einer meiner Mitarbeiter Zeit findet.
    LG und bis bald, Kathrin
     
    Kathrin1984, 22. Juni 2009
    #10
  11. Kathrin1984 Erfahrener User
    Bei Excel 2000 scheint die neue Version zu funktionieren. Der Testlauf war jedenfalls erfolgreich. Bei mir geht auch immernoch alles :-D .
     
    Kathrin1984, 22. Juni 2009
    #11
  12. Exl121150 Erfahrener User
    Hallo Kathrin,

    ich habe Dir die Abfrage des Vergleichsarbeitsblattes (in Zelle A100 des aktuellen Arbeitsblattes) eingebaut; falls Du später einmal eine andere Zelle bevorzugen solltest, kann die Zelladresse leicht umgestellt werden.

    1) Im Folgenden zeige ich Dir den Anfang des Makros. Um an diese Makrostelle zu kommen, musst Du so vorgehen, wie ich es in meinem Posting vom 21.6.2009 um 18:33 Uhr beschrieben habe.

    2) Zur Erklärung dieser Programmzeilen:
    'Option Explicit' ist eine Compileranweisung: diese stets so stehen lassen, wie sie ist.
    'Daufault-Konstanten : Text hinter einfachem Hochkomma ist Kommentar (nur für einen menschlichen Leser bestimmt, wird vom Compiler übergangen).
    Die Konstante 'cFileExt$' enthält (wie der Kommentar in gleicher Zeile besagt) die Dateierweiterungen der Dateien, die im Dateidialog angezeigt werden (gilt jedoch nicht, wenn das alte Standarddateidialogfenster aufgerufen wird für Excel2000 bzw.2004).
    Die Konstante 'cBlattAlt$' enthält den Namen des Vergleichsarbeitsblattes, falls in Zelle A100 nichts enthalten ist. Gibt es in der Vergleichsdatei auch kein solches Arbeitsblatt, wird dort einfach das 1. Arbeitsblatt genommen.
    Die Konstante 'cBlattZelle$' enthält die Zelladresse, in der der Name des Vergleichsarbeitsblattes enthalten ist (falls sie nicht leer belassen wurde). Wurde die Zelle mit dieser Adresse leer belassen, wird der Inhalt von Konstante cBlattAlt$ als Vergleichsarbeitsblatt genommen; wenn kein solches gefunden werden kann in der Vergleichsdatei, wird das 1.Arbeitsblatt genommen.


    Code:
    Option Explicit
    
    'Default-Konstanten
    Const cFileExt$ = "*.xls;*.xlsx"   'Matchcodes für die Vergleichs-Excelmappe
    Const cBlattAlt$ = "Tabelle1"      'Default-Blatt in der Vergleichs-Excelmappe
    Const cBlattZelle$ = "A100"        'Zelladresse, in der das Vergleichsblatt enthalten ist
    Link auf die neue Version:
    http://www.file-upload.net/download-1717883/Dateien_Vergleichen4.xls.html
     
    Exl121150, 22. Juni 2009
    #12
  13. Kathrin1984 Erfahrener User

    Laufzeitfehler 438

    Hm... ich glaub, ich mach da irgendwas falsch.
    Bisher klappt es bei mir (Excel 2002) nicht, bei Excel 2000 hab ich es noch nicht ausprobieren können.
    Sagen wir mal, ich will jeweils die zweiten Reiter miteinander vergleichen.
    Dann kopier ich doch wie immer die aktuellere Liste ins Makro rein. Dann hab ich in die Zelle A100 den Namen des Reiters der Vergleichsliste eingegeben, sagen wir mal ListeB. Und dann hab ich, wie üblich, die Alt + F8 gedrückt usw. Daraufhin hat sich mein PC fast totgerechnet und ich musste Excel über Strg+Alt+Entf beenden, sonst ging da gar nix mehr.
    Was hab ich falsch gemacht?
     
    Kathrin1984, 22. Juni 2009
    #13
  14. Exl121150 Erfahrener User
    Hallo Kathrin,

    tut mir leid, das war leider meine Schuld. Ich habe leider nicht getestet, was passiert, wenn plötzlich außerhalb der zu vergleichenden Bereiche eine Zelle mit Inhalt hinzukommt.

    Ich habe das jetzt umgestellt, allerdings geht jetzt das Makro davon aus, dass die zu vergleichende Bereiche jeweils in Zelle A1 beginnen. Falls das nicht so sein sollte, müsstest Du mir eine Zelle mitteilen, die garantiert jeweils in den Vergleichsbereichen liegt. Alles Übrige wie in den vorigen Postings beschrieben.

    Hier der Link auf die korrigierte Version:
    http://www.file-upload.net/download-1720247/Dateien_Vergleichen4.xls.html
     
    Exl121150, 23. Juni 2009
    #14
  15. Kathrin1984 Erfahrener User
    Bei mir geht jetzt alles :-D !
    Ich drücke heftigst die Daumen, dass es auch bei allen anderen funktioniert! Vielen vielen Dank erstmal und toitoitoi, dass ich nie wieder nerven muss! DANKE :-)
     
    Kathrin1984, 23. Juni 2009
    #15
Thema:

Laufzeitfehler 438

Die Seite wird geladen...
  1. Laufzeitfehler 438 - Similar Threads - Laufzeitfehler 438

  2. VBA:Laufzeitfehler beim Einlesen in Variable

    in Microsoft Excel Hilfe
    VBA:Laufzeitfehler beim Einlesen in Variable: Hallo Excel Freaks, ich habe eine Frage, ein Problem wo ich nicht mehr weiter weis.... In eine Exceldatei kopiere ich mir über Makro auf ein Tabellenblatt von anderen Exceldateien das...
  3. Laufzeitfehler 438 für Set bei Workbook+Worksheet

    in Microsoft Excel Hilfe
    Laufzeitfehler 438 für Set bei Workbook+Worksheet: Hallo Zusammen, ich versuche grade meinen Code etwas übersichtlicher zu gestalten und habe die genutzten Workboks und Worksheets über Set kurzen Variablen zugewiesen. Dabei bin ich aber auf...
  4. laufzeitfehler 438: Objekt unterstützt Eigenschaft Methode nicht

    in Microsoft Excel Hilfe
    laufzeitfehler 438: Objekt unterstützt Eigenschaft Methode nicht: Hallo zusammen, ich habe bei folgendem Code den Laufzeitfehler 438 und komme einfach nicht weiter. Code: If Dir(varname) "" Then Set WB_C = Workbooks.Open(varname) Worksheets(strname).Select...
  5. Problem Laufzeitfehler 438

    in Microsoft Access Hilfe
    Problem Laufzeitfehler 438: Ich erhalte beim Starten meiner Anwendung in Acc2010 einen Laufzeitfehler '438' die Verweise habe ich geprüft, sind auch da und regestriert. was kann ich machen? in der Zeile Me!Gridliste.refrech...
  6. Laufzeitfehler 438 nach Benutzerkonten wechsel

    in Microsoft Excel Hilfe
    Laufzeitfehler 438 nach Benutzerkonten wechsel: Gute Tag, Wir haben hier eine Excel-Tabelle geschickt bekommen, welche für Arbeitszeiten berechnung genutzt werden soll. (Welche Version für die Programmierung genutzt wurde ist mir nicht...
  7. Laufzeitfehler '438'

    in Microsoft Excel Hilfe
    Laufzeitfehler '438': Hallo liebe Foren User, ich wollte eigentlich im VBA eine Wenn-Und-Dann-Sonst Funktion schreiben. Habe nach langer suche auch einen Ansatz gefunden, nur leider bringt er mir jetzt den Fehler...
  8. Makro -> Laufzeitfehler 438

    in Microsoft Excel Hilfe
    Makro -> Laufzeitfehler 438: Habe ein Makro, das für Excel 2002 geschrieben wurde. Das hatte mir hier freundlicherweise schon jemand gebastelt. http://www.office-hilfe.com/support/viewtopic.php?p=46570#46570 Das Makro...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden