Anzeige
Archiv - Navigation
764to768
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
764to768
764to768
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Laufzeitfehler 1004 Anwendungs- oder ojekdef. F.

Laufzeitfehler 1004 Anwendungs- oder ojekdef. F.
16.05.2006 07:07:40
Oliver
Hallo,
ich habe gestern den ganzen Abend in verschiedenen Foren nach einer Lösung für mein Problem gesucht und festgestellt, dass es diese Fehlermeldung (s. o.) oft und aus unterschiedlichster Ursache gibt. Nur für mein Problem konnte ich bis jetzt keinen guten Hinweis finden. Vielleicht hat ja jemand von euch ne Idee (oder findet evt. einen Tippfehler oder so was :-)
Ich möchte eine Zeile von einem Tabellenblatt in ein anderes Blatt der selben Arbeitsmappe kopieren, wenn bestimmte Zellen dieser Zeile bestimmte Vorraussetzungen erüfllen. Dazu habe ich folgenden Code geschrieben:

Private Sub CommandButton1_Click()
Dim Quellzeile, Zielzeile As Integer
Dim Solldatum, Prüfdatum As Variant
Quellzeile = 4
Zielzeile = 5
Sheets("Statistik").Select
'ActiveSheet.Range(Cells(Quellzeile, 1), Cells(Quellzeile, 7)).Select ***Test: hier funktioniert die Anweisung
Solldatum = ActiveSheet.Cells(1, 10).Value
Do While Quellzeile < 200
Sheets("drucken").Select
Prüfdatum = ActiveSheet.Cells(Quellzeile, 5).Value
If Prüfdatum = "" Then Prüfdatum = 1
ActiveSheet.Cells(Quellzeile, 1).Select
If ActiveCell.Value = "" Then
Quellzeile = Quellzeile + 1
'ActiveSheet.Range(Cells(Quellzeile, 1), Cells(Quellzeile, 7)).Select   ***Test: hier funktioniert die Anweisung
ElseIf Prüfdatum > Solldatum Then
Quellzeile = Quellzeile + 1
'ActiveSheet.Range(Cells(Quellzeile, 1), Cells(Quellzeile, 7)).Select  ***Test: hier funktioniert die Anweisung nicht!! Liegts am "else?"
Else
'ActiveSheet.Range("A5", "G5").Select '***Test: das funktioniert
'ActiveSheet.Cells(Quellzeile, 1).Select ***Test: das funktioniert
ActiveSheet.Range(Cells(Quellzeile, 1), Cells(Quellzeile, 7)).Select 'hier soll diese Anweisung tatsächlich stehen, bringt aber die Fehlermeldung
Selection.Copy
Sheets("Statistik").Select
ActiveSheet.Cells(Zielzeile, 1).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Quellzeile = Quellzeile + 1
Zielzeile = Zielzeile + 1
End If
Loop
End Sub

An den auskommentierten Zeilen seht ihr, was ich schon alles versucht habe. Ich kann die von mir benötigte Anweisung überall hinschreiben und sie wird ausgeführt, nur nicht hinter "Else" oder "ElseIf".
Außerdem kann ich an diese Stelle durch ähnliche Anweisungen Zellen markieren, nur genau das, was ich brauche, geht nicht.

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler 1004 Anwendungs- oder ojekdef.
16.05.2006 08:34:22
bst
Morgen,
wo liegt denn der Code der Routine CommandButton1_Click ?
Wenn's im Codebereich einer Tabelle sein sollte geht sowas nicht:
Sheets(xyz).Select
ActiveSheet.Range(Cells(Quellzeile, 1), Cells(Quellzeile, 7)).Select
da sich Range und Cells nach wie vor auf die Tabelle (mit dem Code) beziehen!, nicht auf
ActiveSheet. (Falls zufällig die beiden Tabellen identisch sein sollten geht's doch).
Nimm hier sowas:
Sheets(xyz).Select
ActiveSheet.Range(ActiveSheet.Cells(Quellzeile, 1), ActiveSheet.Cells(Quellzeile, 7)).Select
oder besser noch benutze hier With:
Sheets(xyz).Select
With ActiveSheet
.Range(.Cells(Quellzeile, 1), .Cells(Quellzeile, 7)).Select
End With
FWIW, auf die Selects könntest Du hier eigentlich - wie meistens - auch verzichten.
cu, Bernd
Anzeige
AW: Laufzeitfehler 1004 Anwendungs- oder ojekdef.
16.05.2006 16:40:19
Oliver
Vielen dank, das hat geholfen. Was die "Select"s angeht: Das habe ich jetzt schon öfter gelesen. Muss mir vielleicht doch mal ein gute Buch kaufen. Aber bisher bin ich mit dem Aufnahme-Tool und ein paar Grundkenntnissen vom Programmieren hingekommen. :-)
Was ist eigentlich so schlecht an "Select"?
AW: Laufzeitfehler 1004 Anwendungs- oder ojekdef.
17.05.2006 09:03:51
bst
Morgen Oliver,
&gt Was ist eigentlich so schlecht an "Select"?
Es ist meistens unnötig und es kostet Zeit.
Starte sowas mal von Excel aus, nicht von VBA.
Das sollte abschreckend genug sein in Zukunft auf Select's zu verzichten ;-)
cu, Bernd
--
Option Explicit

Sub Test()
    Dim t As Long
    
    Worksheets(1).Range("A1:A2000").FormulaR1C1 = "=ROW()"
    
    t = Timer
    Call MitSelect
    MsgBox Timer - t, , "Benötigte Zeit"
    t = Timer
    Call OhneSelect
    MsgBox Timer - t, , "Benötigte Zeit"
End Sub

Sub MitSelect()
    Dim i As Long
    
    For i = 1 To 2000
        Worksheets(1).Activate
        Cells(i, 1).Select
        Selection.Copy
        Worksheets(2).Activate
        Cells(i, 2).Select
        ActiveSheet.Paste
    Next
End Sub

Sub OhneSelect()
    Dim i As Long
    
    For i = 1 To 2000
        Worksheets(1).Cells(i, 1).Copy Worksheets(2).Cells(i, 3)
    Next
End Sub



Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige