6.9k Aufrufe
Gefragt in Tabellenkalkulation von b25812 Mitglied (515 Punkte)
Ich habe folgendes problem, ich möchte einen teil aus einer tabelle in eine andere kopieren und dann erscheint folgende fehlermeldung.
Laufzeitfehler '1004'
die select-methode des range-objektes konnte nicht ausgeführt werden


Die formel sieht so aus :
Private Sub CommandButton3_Click()
Range("B5:Y7").Select
Selection.Copy
ActiveSheet.Next.Select
Range("B5").Select
ActiveSheet.Paste
End Sub

was stimmt dort nicht ???
gleich vorab ich kann nur ActiveSheet.Next. machen, da die tabellen blätter wechseln

danke für eine schnelle antwort

27 Antworten

0 Punkte
Beantwortet von b25812 Mitglied (515 Punkte)
Danke für schnelle antwort. aber wo sage ich ihm das die spalte a "liste" heißt??
gruß andi
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi Andi,

den Namen kannst du doch selbst festlegen. Unter "Name definieren" -> "Namen in der Arbeitsmappe:" gibst du ein Liste und unter "Bezieht sich auf" trägst du die Formel ein. Falls sich die Liste nicht dynamisch erweitert, kannst du da auch einen festen Zellbereich eintragen - z.B. =A1:A500.

Bis später,
Karin
0 Punkte
Beantwortet von b25812 Mitglied (515 Punkte)
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
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi Andi,

das kann ich so nicht nachprüfen, da der Code in meiner Arbeitsmappe ja korrekt funktioniert. Da müsstest du schon mal deine Mappe mal hochladen.

Bis später,
Karin
0 Punkte
Beantwortet von b25812 Mitglied (515 Punkte)
wo kann ich sie hochladen ???
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi Andi,

1. fehlt in deiner Mappe das Modul mdlAllgemein. Ändere dort auch den Bereich in Range("C10:C94"), da es ja ein anderer ist als in meinem Beispiel
2. ändere in der Prozedur Worksheet_SelectionChange die Zeile vor .Activate in dieses: .Object = Format(.Object, "hh:mm")
3. ändere in der Prozedur DropDownZoom_Change diese Zeilen:
' Wert aus der betreffenden Zelle des Quellbereichs in aktuelle Zelle eintragen
' ListIndex beginnt bei 0, deshalb + 1
Range(DropDownZoom.TopLeftCell.Address) = _
Worksheets("Datenquelle").Range(DropDownZoom.ListFillRange).Cells(DropDownZoom.ListIndex + 1)
' aktuelle Zelle wie Ausgangszelle formatieren
Range(DropDownZoom.TopLeftCell.Address).NumberFormat = _
Worksheets("Datenquelle").Range(DropDownZoom.ListFillRange).Cells(DropDownZoom.ListIndex + 1).NumberFormat

Die Angabe des Tabellenblattes vor Range ist erforderlich, da sich die Uhrzeitenliste in deiner Mappe auf einem anderen Tabellenblatt befinden.

4. würde ich dir empfehlen, den Namen Liste so zu definieren wie in meinem Beispiel, weil du andernfalls viele Leereinträge in deinem Kombinationsfeld hast, da du ja die gesamte Spalte als Bereich angegeben hast unter "Bezieht sich auf". Durch die Verwendung von BEREICH.VERSCHIEBEN() passt sich die Länge der Liste automatisch an die Anzahl der vorhandenen Daten an.

Bis später,
Karin
0 Punkte
Beantwortet von b25812 Mitglied (515 Punkte)
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Intersect(Target, Range("a1:a10")) Is Nothing Then
ActiveWindow.Zoom = 75
Else
ActiveWindow.Zoom = 100
End If
End Sub

wie kann ich den bereich auch auf die spalte c und e erweitern ???

danke für jede hilfe :-)
...