Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Excel VBA Makro funktioniert auf anderem PC nicht

Forumthread: Excel VBA Makro funktioniert auf anderem PC nicht

Excel VBA Makro funktioniert auf anderem PC nicht
05.02.2008 03:25:00
Christoph
Ich habe für meinen Arbeitgeber ein Excel Makro in VBA programmiert. Auf meinem Rechner funktioniert das Makro ohne Probleme doch sobald er es ausführt bekommt er einen Laufzeitfehler:
Laufzeitfehler "13": Typen unverträglich
Beim Debuggen sehe ich das der Fehler an Folgender stelle auftritt:
...
WENN datum UNGLEICH "" And datum UNGLECIH "#" And datum UNGLEICH " " Then
currentDate = CDate(datum)
....
in datum ist beim abbruch folgendes gespeichert: "31.07.2006"
Wie gesagt, auf meinem PC funktioniert das Makro ohne probleme, bei ihm nicht? Kann mir da jemand weiterhelfen

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel VBA Makro funktioniert auf anderem PC ni
05.02.2008 07:26:00
ChrisL
Hallo Christoph
Ich vermute der Wurm steckt in...
currentDate = CDate(datum)
(kannst ja mal ohne IF Then testen)
Stelle sicher, dass die Variable currentDate als Datum deklariert ist.
Dim currentDate as Date
Ggf. pruefe mal die Einstellungen, vielleicht wird das Datum als "00/00/0000" erwartet.
Ist 'datum' eine Variable? Ein Textstring? Wie kommt die Variable zu stande?
Gruss
Chris

Anzeige
AW: Excel VBA Makro funktioniert auf anderem PC ni
05.02.2008 09:19:58
Christoph
Danke für deine Antwort.
currentDate ist bereits als Datum deklariert.
Wo kann ich die einstellungen überprüfen ob das Datum als 00/00/0000 erwartet wird?
datum wird aus einem Excel Sheet ausgelesen, ist der inhalt einer Spalte. Ist eigentlich ein String den ich mittels CDate auf ein Date caste. Das Datum steht in dieser Spalte immer als 00.00.0000.

Anzeige
AW: Excel VBA Makro funktioniert auf anderem PC ni
05.02.2008 10:43:11
Christoph
ich deklariere Weiter oben currentDate as Date. Daran kann es also nicht liegen.
Durch viel Debuggen bin ich jetzt auf folgendes gestoßen.
Ich nachdem ich current Date als Datum deklariere ...
Dim currentDate as Date
...steht bei mir und meinem Arbeitgeber "00:00:00" in currentDate.
Wenn ich nun
currentDate = DateSerial(1800, 1, 1)
ausführe, also currentDate auf den 1.1.1800 setze ist bei mir in currentDate "01.01.1800" gespeichert, bei meinem Arbeitgeber ist jedoch "01/01/1800".
Ich vermute das der Typenkonflikt daher kommt.
Kann man das Datumsformat einer Date Variable irgendwie setzen (also DD.MM.YYYY anstatt DD/MM/YYYY)?

Anzeige
AW: Excel VBA Makro funktioniert auf anderem PC ni
06.02.2008 01:14:29
ChrisL
Hallo Christoph
Ich denke die Einstellung ist in Windows, Start, Settings, Control Panel, Regional Options
Vermutlich willst du die Einstellungen nicht aendern, daher hier ein Workaround:
Dim currentDate As Date
Dim strDate As String
strDate = "1.1.2008"
strDate = WorksheetFunction.Substitute(strDate, ".", Application.International(xlDateSeparator))
currentDate = CDate(strDate)
cu
Chris
Anzeige
;
Anzeige

Infobox / Tutorial

Excel VBA Makro funktioniert auf anderem PC nicht


Schritt-für-Schritt-Anleitung

  1. Überprüfe die Datentypen: Stelle sicher, dass die Variable currentDate als Datum deklariert ist:
    Dim currentDate As Date
  2. Debugging: Füge eine Debugging-Anweisung ein, um den Inhalt der Variablen datum vor der Verwendung zu überprüfen:
    Debug.Print datum
  3. Regional-Einstellungen prüfen: Gehe zu den Windows-Einstellungen und überprüfe die Regionaleinstellungen. Das kann die Art und Weise beeinflussen, wie Daten interpretiert werden, insbesondere das Datumsformat.
  4. Fehlerbehebung des Typs: Wenn der Fehler "Laufzeitfehler 13: Typen unverträglich" auftritt, könnte das daran liegen, dass dein PC und der PC deines Kollegen unterschiedliche Datumsformate verwenden (z.B. DD.MM.YYYY vs. DD/MM/YYYY).
  5. Anpassung des Datumsformats: Verwende den folgenden Code, um das Datum korrekt zu formatieren, bevor du es in currentDate umwandelst:
    Dim strDate As String
    strDate = "31.07.2006"
    strDate = WorksheetFunction.Substitute(strDate, ".", Application.International(xlDateSeparator))
    currentDate = CDate(strDate)

Häufige Fehler und Lösungen

  • Laufzeitfehler 13: Dieser Fehler tritt häufig auf, wenn der Datentyp nicht dem erwarteten entspricht. Überprüfe, ob datum tatsächlich ein String ist und ob die Umwandlung zu einem Datum korrekt ist.
  • Unterschiedliche Datumsformate: Wenn auf deinem PC das Datumsformat DD.MM.YYYY verwendet wird und auf einem anderen PC DD/MM/YYYY, kann das zu Problemen führen. Stelle sicher, dass du die Formatierung vor der Umwandlung anpasst.

Alternative Methoden

Eine alternative Methode besteht darin, die Datumseingabe in ein einheitliches Format zu bringen, bevor du CDate verwendest. Du kannst Format verwenden, um das Datum korrekt zu formatieren:

currentDate = CDate(Format(datum, "DD.MM.YYYY"))

Diese Methode sorgt dafür, dass das Datum unabhängig von den regionalen Einstellungen korrekt interpretiert wird.


Praktische Beispiele

Hier ist ein praktisches Beispiel, das zeigt, wie du ein Datum aus einer Excel-Tabelle liest und in ein Datum umwandelst, während du die regionalen Einstellungen berücksichtigst:

Sub BeispielMakro()
    Dim currentDate As Date
    Dim datum As String
    datum = Worksheets("Tabelle1").Cells(1, 1).Value ' Wert aus Zelle A1

    ' Datum formatieren und umwandeln
    datum = WorksheetFunction.Substitute(datum, ".", Application.International(xlDateSeparator))
    currentDate = CDate(datum)

    Debug.Print currentDate
End Sub

Dieses Makro stellt sicher, dass das Datum korrekt verarbeitet wird, egal auf welchem PC es läuft.


Tipps für Profis

  • Dokumentiere deinen Code: Füge Kommentare hinzu, um zu erklären, wie die Daten verarbeitet werden. Dies ist besonders wichtig, wenn andere Benutzer dein Makro auf ihren PCs verwenden.
  • Verwende Fehlerbehandlungsroutinen: Implementiere On Error Resume Next, um Laufzeitfehler abzufangen und benutzerfreundliche Fehlermeldungen anzuzeigen.
  • Testen auf verschiedenen PCs: Wenn möglich, teste dein Makro auf verschiedenen Rechnern mit unterschiedlichen regionalen Einstellungen, um sicherzustellen, dass es überall funktioniert.

FAQ: Häufige Fragen

1. Warum funktioniert mein Excel Makro nicht auf einem anderen PC?
Das kann an unterschiedlichen regionalen Einstellungen oder Datumsformaten liegen. Stelle sicher, dass das Datum korrekt formatiert und umgewandelt wird.

2. Wie kann ich sicherstellen, dass mein Makro auf allen PCs funktioniert?
Verwende die Application.International-Eigenschaft, um sicherzustellen, dass dein Makro unabhängig von den regionalen Einstellungen funktioniert. Achte darauf, dass die Datentypen korrekt sind und teste dein Makro auf verschiedenen PCs.

3. Was ist der beste Weg, um Datumsformate in VBA zu handhaben?
Der beste Weg ist, die Datumsformate einheitlich zu halten und die CDate-Funktion in Kombination mit WorksheetFunction.Substitute zu verwenden, um Datumsstrings vor der Umwandlung anzupassen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige