Clever-Excel-Forum

Normale Version: Excel vba Fehlermeldung "Typen unverträglich"
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

ich habe mal wieder ein kleines Problem und hoffe auf Eure Hilfe.

In einer Tabelle gebe ich in Spalte B, C und D Uhrzeiten ein, entsprechend formatiert in "[hh]:mm"
Wenn ich nun eine der Uhrzeiten manuell lösche, egal in welcher Spalte (Zelle) funktioniert das Makro ohne Probleme.
Markiere ich aber gleichzeitig alle drei Zeiteiträge in einer Zeile, meckert das Makro mit der Fehlermeldung "Typen unverträglich".

Wie kann man dies unterbinden?

Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
  With Target
      If .Column = 2 Or .Column = 3 Or .Column = 4 Then
        Application.EnableEvents = False
        With Target

        If .Value = "" Then
        Application.EnableEvents = True
        Exit Sub
        End If
            If .Value <> "" Then
              .Value = CDate(Left(Format(Target, "0000"), 2) & ":" & Right(Target, 2))
              .NumberFormat = "[hh]:mm"
            Else
              .Value = CDate(Left(Format(Target, "0000"), 2) & ":" & Right(Target, 2))
              .NumberFormat = "[hh]:mm"
            End If
        End With
      End If
  End With
ErrorHandler:
  Application.EnableEvents = True
End Sub

Bedanke mich für einen Hinweis wie das zu lösen wäre!
Hallo

Versuch mal den Code.
Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
On Error GoTo ErrorHandler
  With Target.Cells(1)
     If .Column > 1 And .Column < 5 And .Value <> "" Then
        Application.EnableEvents = False
        .NumberFormat = "[hh]:mm"
        .Value = Right("0" & Left(.Value, (Len(.Value) = 3) + 2) & ":" & Right(.Value, 2), 5)
     End If
  End With

ErrorHandler:
  Application.EnableEvents = True
End Sub

Gruß Elex
Hallo Elex,

cool... funktioniert wie gewünscht!
Wieder etwas gelernt.

Herzlichen Dank und noch einen schönen Tag!