VBA: deutsche OK - englische Version: Error 13



Excel-Version: 2000 / 97
nach unten

Betrifft: VBA: deutsche OK - englische Version: Error 13
von: Dominik
Geschrieben am: 03.05.2002 - 12:58:38

Folgeproblem:

In einem Arbeitsblatt, erstellt in Excel 2000, kann in einer Zelle die Zeit ohne ":" eingegeben werden. Der ":" wird durch folgendes Makro ersetzt:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Row <> 20 Or Target.Column <> 9 Then Exit Sub
FormatTime (Target.Address(False, False))
End Sub

Sub FormatTime(Zelle)
Dim h%, m%
With Range(Zelle)
If .Value = "" Then Exit Sub
If IsNumeric(.Value) And InStr(.Value, ":") = 0 And InStr(.Value, ",") = 0 Then
If Len(.Value) > 2 Then
h = VBA.Left(.Value, Len(.Value) - 2)
m = VBA.Right(.Value, 2)
Else
h = .Value
m = 0
End If
.Value = h & ":" & m
End If
End With
End Sub

Dank Hans W. Herber läuft dieses Makro nun problemlos unter XL2000 und XL97, jedoch nur in der deutschen Version. Unter den englischen Versionen von Windows 2000 Professionell in Kombination mit Excel2000 stoppt der Compiler bei:

h = VBA.Left(.Value, Len(.Value) - 2)

mit der Meldung:

Runtime Error 13, type mismatch

kann h nicht interpretiert werden?

Ideen? Danke
Dominik

nach oben   nach unten

Re: VBA: deutsche OK - englische Version: Error 13
von: UDF
Geschrieben am: 03.05.2002 - 14:08:14

Hallo Dominik,

schreibe mal vor dem FormatTime-Aufruf ein Call, dann müsste es funktionieren.

Gruss
Markus


nach oben   nach unten

Re: VBA: deutsche OK - englische Version: Error 13
von: geht leider nicht
Geschrieben am: 03.05.2002 - 14:43:37

hab es probiert, selbes Problem...

nach oben   nach unten

Re: VBA: deutsche OK - englische Version: Error 13
von: UDF
Geschrieben am: 06.05.2002 - 09:00:56

Hallo Dominik,

schreib doch mal die Zeile ohne das vorangehende VBA.Left, sondern nur Left, bzw. nutze die WorksheetFunction.Left einmal.

Der Fehler 13 wird in der englischen Version wohl extremer behandelt und vielleicht solltest Du die Zeilen mal so abändern.


            h = Left(Str(.Value), Len(Str(.Value)) - 2)
            m = Right(Str(.Value), 2)

Gruss
Markus

 nach oben

Beiträge aus den Excel-Beispielen zum Thema "VBA: deutsche OK - englische Version: Error 13 "