Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Excel vba Fehlermeldung "Typen unverträglich"
#1
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!
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antwortento top
#2
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
[-] Folgende(r) 1 Benutzer sagt Danke an Elex für diesen Beitrag:
  • sharky51
Antwortento top
#3
Smile 
Hallo Elex,

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

Herzlichen Dank und noch einen schönen Tag!
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antwortento top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste