hat geklappt danke. jetzt habe ich das nächste, er stellt mir nur eine dezimalzahl dar anstatt eine zeit, obwohl ich alles als zeit definiert habe. und kommt noch der fehler
die methode 'range' für das objekt '_worksheet' ist fehlgeschlagen
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'**************************************************
'* 24.12.10 *
'* erstellt von Karin,
http://beverly.excelhost.de*
'* beverly@excelhost.de *
'**************************************************
Dim oobElement As OLEObject ' Variable für das Steuerelement als OLEObject
On Error Resume Next
ActiveSheet.OLEObjects("DropDownZoom").Delete
On Error GoTo 0
If Not Intersect(Target, Range("C10:C94")) Is Nothing Then
' Bildschirmaktualisierung aus
Application.ScreenUpdating = False
' ComboBox erstellen
Set oobElement = OLEObjects.Add(ClassType:="Forms.ComboBox.1", Left:=0, Top:=0, Width:=0, Height:=0)
With oobElement
.Top = ActiveCell.Top ' Position oben
.Left = ActiveCell.Left ' Position links
.Width = Range(ActiveCell, ActiveCell.Offset(0, 1)).Width ' Breite
.Height = Range(ActiveCell, ActiveCell.Offset(1, 0)).Height ' Höhe
.ListFillRange = "Zeit" ' Quellbereich, per Name "Liste" definiert
.Name = "DropDownZoom" ' Name zuweisen
.Object.MatchRequired = True ' nur vorhandene Einträge
.Object.ListRows = 14 ' Zeilenanzahl der Liste
.Object.Font.Size = 20 ' Schriftgröße
.Object.DropDown ' DropDown öffnen
.Object.ListIndex = 0 ' 1. Eintrag auswählen
' Umwandeln in ein Datum - nur erforderlich wenn die Auswahl aus Datumswerten besteht
If IsDate(Range(.ListFillRange).Cells(1)) Then .Object = CStr(CDate(.Object))
.Activate ' aktivieren
' erforderlich, da andernfalls der 1. Eintrag nicht in die Zelle eingetragen werden kann,
' weil seine Auswahl kein Change-Ereignis auslöst da er bereits ausgwählt ist
' mit dem Makro "Eintrag" wird der 1. Eintrag in die Zelle geschrieben
Application.OnTime Now + TimeValue("00:00:00"), "Eintrag"
End With
' Bildschirmaktualisierung ein
Application.ScreenUpdating = True
End If
End Sub
Private Sub DropDownZoom_Change()
'**************************************************
'* 24.12.10 *
'* erstellt von Karin,
http://beverly.excelhost.de*
'* beverly@excelhost.de *
'**************************************************
' Wert aus der Liste wurde gewählt
If DropDownZoom.MatchFound Then
' Umwandeln in eine Uhrzeit
DropDownZoom = Format(DropDownZoom, "hh:mm") '<==eventuell anpassen an dein Format
' Wert nicht in Liste vorhanden
Else
' leeren
DropDownZoom = ""
End If
' Wert aus der betreffenden Zelle des Quellbereichs in aktuelle Zelle eintragen
' ListIndex beginnt bei 0, deshalb + 1
Range(DropDownZoom.TopLeftCell.Address) = _
Range(DropDownZoom.ListFillRange).Cells(DropDownZoom.ListIndex + 1)
' aktuelle Zelle wie Ausgangszelle formatieren
Range(DropDownZoom.TopLeftCell.Address).NumberFormat = _
Range(DropDownZoom.ListFillRange).Cells(DropDownZoom.ListIndex + 1).NumberFormat
End Sub