Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1312to1316
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
Inhaltsverzeichnis

Laufzeitfehler 438 beim Aufbau einer Schleife

Laufzeitfehler 438 beim Aufbau einer Schleife
02.06.2013 18:26:58
Harald
Hallo zusammen, ich möchte mit einer For-Next-Schleife feststellen, ob bestimmte Zellen leer sind; sind sie es nicht, sollen Werte in ein anderes Blatt kopiert werden und im Quellblatt einige Daten gelöscht. Beim Bau der Schleife komme ich nur bis zum Versuch, die Startzelle festzulegen, dann erscheint der Lauafzeitfehler 438 "Objekt unterstützt diese Eigenschaft oder Methode nicht".
Das geschieht sowohl am Mac mit MS-Excel 2010 für Mac als auch am PC mit Excel 2003.
Zuerst habe ich es versucht mit: ''ursprünglicher Ausdruck:If wb.ws1.Cells(n, "AT") 0 Then'' und dann (als das zum Fehler führte) damit, vorher die Startzelle als Range festzulegen. Beides endete im Fehler.
Ich habe lange experimentiert, jetzt sehe ich den Wald vor Bäumen nicht mehr.
Wer kann helfen? Hier der vorbereitete Code:
Option Explicit
Sub Archiviere()
Dim wb As Workbook  'Dimensionierung der Arbeitsmappe
Dim ws1 As Worksheet 'Dimensionierung des Arbeitsblattes 1 ("Auswertung")
Dim ws2 As Worksheet  'Dimensionierung des Arbeitsblattes 2 ("Schadwagenarchiv")
Dim iRow, jRow As Long  'Dimensionierung der Zeilenzähler
Dim n As Long  'Dimensionierung der Zeilenzahl für die Schleife
Dim rng As Range  'Dimensionierung eines Zellbereichs
Set wb = Workbooks("Auswertung Kopie2003.xls")  'Wert für die Arbeitsmappe setzen
Set ws1 = wb.Worksheets("Auswertung")  'Wert für das Arbeitsblatt "Auswertung" setzen
Set ws2 = wb.Worksheets("Schadwagenarchiv")  'Wert für das Arbeitsblatt "Schadwagenarchiv"  _
setzen
iRow = ws1.Cells(Rows.Count, "B").End(xlUp).Row  ' letzte belegte Zeile im Arbeitsblatt " _
Auswertung" auslesen
jRow = ws2.Cells(Rows.Count, "A").End(xlUp).Row  ' letzte belegte Zeile im Arbeitsblatt " _
Schadwagenarchiv" auslesen
n = 4  ' ' im Zuge der Versuche eingefügt
rng = wb.ws1.Cells(n, "AT") ''im Zuge der Versuche eingefügt
For n = 4 To iRow Step 1
If rng  0 Then
' ursprünglicher Ausdruck:If wb.ws1.Cells(n, "AT")  0 Then
jRow = jRow + 1  ' erste freie Zeile im Arbeitsblatt "Schadwagenarchiv"  _
aufsuchen
wb.ws2.rng(jRow, "A") = wb.ws1.rng(n, "B")  ' Wagennummer aus " _
Auswertung" nach "Archiv" kopieren; stehen lassen
wb.ws2.rng(jRow, "B") = wb.ws1.rng(n, "C")  ' Bearbeitung dito
wb.ws2.rng(jRow, "C") = wb.ws1.rng(n, "AP")  ' "schadhaft seit" aus  _
"Auswertung" nach "Archiv" kopieren
wb.ws1.rng(n, "AP").ClearContents   ' "schadhaft seit" in " _
Auswertung" löschen
wb.ws2.rng(jRow, "D") = wb.ws1.rng(n, "AQ")  ' usw. für die nä _
chsten Spalten der aktuellen Zeile
wb.ws1.rng(n, "AQ").ClearContents  ' usw. für die nächsten  _
Spalten der aktuellen Zeile
wb.ws2.rng(jRow, "E") = wb.ws1.rng(n, "AR")  ' usw. für die nä _
chsten Spalten der aktuellen Zeile
wb.ws1.rng(n, "AR").ClearContents  ' usw. für die nächsten  _
Spalten der aktuellen Zeile
wb.ws2.rng(jRow, "F") = wb.ws1.rng(n, "AS")  ' usw. für die nä _
chsten Spalten der aktuellen Zeile
wb.ws1.rng(n, "AS").ClearContents  ' usw. für die nächsten  _
Spalten der aktuellen Zeile
wb.ws2.rng(jRow, "G") = wb.ws1.rng(n, "AT")  ' "schadhaft bis" aus " _
Auswertung" nach "Archiv" kopieren
wb.ws1.rng(n, "AT").ClearContents  '  "schadhaft bis" in " _
Auswertung" löschen
wb.ws2.rng(jRow, "H") = wb.ws1.rng(n, "AU")  '  usw. für die nä _
chste Spalte der aktuellen Zeile
wb.ws1.rng(n, "AU").ClearContents  ' usw. für die nächste  _
Spalte der aktuellen Zeile
jRow = jRow + 1                                             ' erste freie  _
Zeile im Arbeitsblatt "Schadwagenarchiv" weiterzählen
End If
Next n
End Sub

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler 438 beim Aufbau einer Schleife
02.06.2013 18:59:26
Franc
Hmm ka woran das liegt aber das scheint nur dann aufzutreten wenn du es mit dem Workbbook verbindest.
mach eine Kopie, ersetz alle "wb." durch nichts
"If ws1.Cells(n, "AT") 0 Then" wieder rein
rng = wb.ws1.Cells(n, "AT") löschen bzw. auskommentieren
Dann sollte es erstmal funkionieren und ich lass die Frage offen falls uns wer sagen kann wie man den Bezug mit der Arbeitsmappe einbinden kann. ^^

Lass das wb. weg! (owT)
02.06.2013 19:01:26
EtoPHG

Warum kein wb.
02.06.2013 19:04:37
EtoPHG
Hallo zusammen,
Mit Set ws1 = wb.Worksheets("Auswertung") ist ws1 vollständig qualifiziert, d.h. einem bestimmten Blatt einer bestimmten Arbeitsmappe (wb.) zugeordnet.
wb.ws1. wäre dann doppelt gemoppelt, bzw. führt zum Fehler!
Gruess Hansueli

Anzeige
Herzlichen Dank
02.06.2013 19:37:43
Harald
Hallo und herzlichen Dank für die Antworten - es funzt.

nicht mehr offen - Herzlichen Dank an alle
02.06.2013 19:39:48
Harald
Hallo und vielen Dank, jetzt geht's.

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige