Microsoft Excel

Herbers Excel/VBA-Archiv

VBA: Zellwerte kopieren -> Fehler 424

Betrifft: VBA: Zellwerte kopieren -> Fehler 424 von: Schmitty
Geschrieben am: 16.09.2014 08:40:09

Guten Morgen zusammen.

Ich möchte den Inhalt einiger Zellen (ohne Formatierung) einer Excel-Datei in eine andere Excel Datei (die noch geschlossen ist) mittels VBA kopieren. Dazu habe ich mir folgenden Code überlegt:

Workbooks.Open Filename:="Z:\kartei\Adressen.xlsm"
ActiveWorkbook.Worksheets("Schmitz GmbH").Range("D4:H4").Value = Workbooks(Adressen.xlsm). _
Worksheets("Schmitz GmbH").Range("D4:H4").Value
Leider bekomme ich dann immer die Fehlermeldung "Laufzeitfehler 424 - Objekt erforderlich"

Wo könnte der Fehler liegen?

Gruß
Christian

  

Betrifft: AW: VBA: Zellwerte kopieren -> Fehler 424 von: Luschi
Geschrieben am: 16.09.2014 09:03:35

Hallo Christian,

schau mal da fehlt etwas:

Workbooks("Adressen.xlsm").Worksheets("Schmitz GmbH").Range("D4:H4").Value

Gruß von Luschi
aus klein-Paris


  

Betrifft: Falls die Adresse stimmt, öffnest du ... von: Luc:-?
Geschrieben am: 16.09.2014 09:10:13

Adressen.xlsm, Christian,
das dadurch das aktive Wb wird. Dann willst du in dessen ZellBereich die Werte des gleichen Wb übernehmen? Oder heißen die beide gleich → das würde den Fehler erklären, denn es können keine 2 Dateien gleichen Namens gleichzeitig geöffnet wdn. Eigentlich müsstest du auch eine entsprd Warnung bekommen (falls die nicht vom Pgm unterdrückt wird). Die 2.Datei wird dann jedenfalls nicht geöffnet, was allerdings die 2.CodeZeile nicht stören dürfte, falls das vorher aktive Wb dadurch nicht den Fokus verloren hat, was ich aber nur äußerst ungern testen wollte… ;-]
Morrn, Luc :-?


  

Betrifft: Primär natürlich Luschis AW! Das Andere ... von: Luc:-?
Geschrieben am: 16.09.2014 09:12:43

…kommt anschließend… ;-)
Luc :-?


  

Betrifft: AW: VBA: Zellwerte kopieren -> Fehler 424 von: Schmitty
Geschrieben am: 16.09.2014 09:54:19

Hallo Luschi, hallo Luc:-?.

Danke für Eure Antworten. Natürlich hattet Ihr beide recht.
@ Luschi: Die Anführungszeichen sind mir einfach nicht aufgefallen... :-(
@ Luc:-?: Daran habe ich nicht gedacht, dass ja bei dem Öffnen einer neuen Excel-Datei diese als "aktiv" gilt ;-)

Jetzt kopiert VBA die Werte, wie ich es möchte.

Code:

    Workbooks.Open Filename:="Z:\kartei\Adressen.xlsm"
    Workbooks("Adressen.xlsm").Worksheets("Schmitz GmbH").Range("D4:H4").Value = Workbooks(" _
Recherche.xlsm"). _
    Worksheets("Schmitz GmbH").Range("D4:H4").Value
Aber:

Ich habe eine Sache nicht bedacht, bzw. sie ist mir erst jetzt mit dem funktionierenden Code aufgefallen.
In der Zieldatei (Adressen.xlsm) werden mit den kopierten Zellwerten mittels eines weiteren VBA-Codes Autofilter gesteuert. Das funktioniert soweit ich die Daten in die jeweilige Zelle eintrage ohne Probleme. Nutze ich aber den oben genannte VBA-Code, sind die Ziel-zellen zwar ausgefüllt, nur der Autofilter arbeitet nicht.

Wie kann ich dieses Problem denn jetzt lösen?

Gruß
Christian


  

Betrifft: AW: VBA: Zellwerte kopieren -> Fehler 424 von: Daniel
Geschrieben am: 16.09.2014 14:00:34

Hi
wie - dh mit welchem Code und Makro - steuerst du denn den Autofilter?

Gruß Daniel


  

Betrifft: AW: VBA: Zellwerte kopieren -> Fehler 424 von: Schmitty
Geschrieben am: 16.09.2014 14:22:53

Hallo,

z.B. für die Zelle F4:

  If Target.Address = "$F$4" Then
  ActiveSheet.Unprotect Password:=""
    If Not IsEmpty(Target) Then
      Selection.AutoFilter Field:=5, Criteria1:="*" & Range("F4") & "*"
    Else
      Selection.AutoFilter Field:=5
    End If
    ActiveSheet.Protect Password:="", AllowFiltering:=True
  End If
Gruß
Christian


  

Betrifft: AW: VBA: Zellwerte kopieren -> Fehler 424 von: Daniel
Geschrieben am: 16.09.2014 14:44:28

Hi
die Adresse des Targets ist ja $D$4:$H$4 und damit ungleich $F$4.
dein Event reagiert nur dann, wenn F4 allein die geänderte Zelle ist.
wird F4 zusammen mit mehrern Zellen im verbund geändert, so ist dieser Fall mit dieser Bedingung ausgeschlossen:
If Target.Address = "$F$4" Then

soll der Filter auch dann gesetzt werden, musst du das so abändern:

  If Not Intersect(Target, Range("F4")) is Nothing Then
  ActiveSheet.Unprotect Password:=""
    If Not IsEmpty(Range("F4")) Then
      Selection.AutoFilter Field:=5, Criteria1:="*" & Range("F4") & "*"
    Else
      Selection.AutoFilter Field:=5
    End If
    ActiveSheet.Protect Password:="", AllowFiltering:=True
  End If
Gruß Daniel


  

Betrifft: AW: VBA: Zellwerte kopieren -> Fehler 424 von: Schmitty
Geschrieben am: 16.09.2014 15:51:50

Hallo Daniel,

danke für deinen Code.

Leider erzeugt dein Code schon das nächste Problem. Wenn ich die Autofilter zurücksetzten will, werden alle Autofilter mit einem "*" ausgefüllt. Bei Text-Spalten ist das kein Problem, es wird trotzdem alles angezeigt. Jedoch habe ich auch Ziffern-Spalten und dort funktioniert das "*" nicht und es wird nichts angezeigt.

Folgenden Code nutze ich um alle Autofilter (es sind 24 Stück!) auf dem Arbeitsballt zu leeren:

    Sheets("Schmitz GmbH").ShowAllData
    
    ActiveWorkbook.Worksheets("Schmitz GmbH").AutoFilter.Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Schmitz GmbH").AutoFilter.Sort.SortFields.Add Key _
        :=Range("B5:B2195"), SortOn:=xlSortOnValues, Order:=xlAscending, _
        DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Schmitz GmbH").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
  
    Range("B4:X4") = ""
    Range("AA4") = ""
    
Gruß
Christian


  

Betrifft: AW: VBA: Zellwerte kopieren -> Fehler 424 von: Daniel
Geschrieben am: 16.09.2014 16:05:55

Hi

um alle Autofilter auf einem Blatt zurück zu setzen, sollte ein

ActiveSheet.ShowAllData

ausreichen.

um eine einzelne Filterspalte zu deaktivieren das hier: (x sei die Nummer der Spalte innerhalb des zu filternden Zellbereichs)
.... .Autofilter Field:=x

dh das Criteria1 wird ganz weggelassen.
der "*" steht ja für "Text in beliebiger Länge" und das schließt Zahlen logischerweise aus.

Gruß Daniel


  

Betrifft: AW: VBA: Zellwerte kopieren -> Fehler 424 von: Schmitty
Geschrieben am: 17.09.2014 08:32:59

Hallo Daniel,

ich habe jetzt weiter gebaut. Ich bekomme zwar wieder einen (neuen, unabhängigen) Fehler, jedoch läuft dein Makro soweit durch.

Aber:

Der Autofilter reagiert auf die kopierten Werte immer noch nicht...

Gruß
Christian


  

Betrifft: AW: VBA: Zellwerte kopieren -> Fehler 424 von: Schmitty
Geschrieben am: 17.09.2014 08:58:06

Kommando zurück,

hab den "Fehler" gefunden.

Wenn ich das Zeil-Tabellenblatt vor dem Kopieren anzeigen lasse, funktioniert der Autofilter!

So sieht der Code jetzt aus:

    Workbooks.Open Filename:="Z:\kartei\Adressen.xlsm"
    Workbooks("Adressen.xlsm").Worksheets("Schmitz GmbH").Select
    Workbooks("Adressen.xlsm").Worksheets("Schmitz GmbH").Range("D4:X4").Value = Workbooks(" _
Recherche.xlsm"). _
    Worksheets("Schmitz GmbH").Range("D4:X4").Value

Gruß
Christian


 

Beiträge aus den Excel-Beispielen zum Thema "VBA: Zellwerte kopieren -> Fehler 424"