Hallo, habe eine Frage das ist ein Modul namens kopieren,
warum hört er nicht auf, wenn Zelle leer ist, die Kriterien
müssten aber stimmten.
k.A.
Hallo Wischnor,
probiere mal dieses
Sub kopieren()
Dim Zei
Zei = Sheets("Kriterien").Cells(Rows.Count, 2).End(xlUp).Row
Sheets("Kriterien").Range(Cells(6, 2), Cells(Zei, 2)).Copy Destination:=Sheets("Entscheidungsmatrix").Cells(11, 2)
End Sub
es gibt keinen Grund, die Schleife zu beenden. Auszug aus der VBA-Hilfe:
IsEmpty gibt den Wert True zurück, wenn die Variable nicht initialisiert ist oder explizit auf Empty gesetzt wurde, andernfalls wird False zurückgegeben. Die IsEmpty-Funktion gibt immer den Wert False zurück, wenn Ausdruck mehrere Variablen enthält. IsEmpty gibt nur für Variant-Werte sinnvolle Informationen zurück.
Gruß Ralf
bevor ich zu deiner Frage komme ein paar Anmerkungen.
Es ist völlig überflüssig, die verschiedenen Tabellen ständig zu activieren und zu selektieren. Die kostet nur überflüssig Zeit.
Ich nehme an, dass du erst ein Makro aufgezeichnet und das dann bearbeitet hast. Da spricht nichts gegen, aber
und das geht viel schneller.
Zum anderen hat Reinhard schon einen sehr guten Vorschlag unterbreitet. Kopiere nicht einzelne Zellen, sondern immer ganze Blöcke -> nochmal schneller.
Ich hätte im übrigens
Jetzt zu deiner eigendlichen Frage.
Der Einwand von drambeldier kan ich nicht gelten lassen, denn der Ausdruck, den du mit IsEmpty abfragst ist zwar initialisiert, kann aber trotzdem auf den Wert Empty gesetzt sein.
Da er das offensichtlich nicht ist, liegt der Verdacht nahe, dass die Zellen unterhalb der einträge, die du haben willst nicht wirklich leer (im Excel-Sinne) sind. Z.B. könnte ein Leerzeichen drinnstehen.
(In dem Fall könnten die Lösungen von Reinhard und mir zu unerwünschten Ergebnissen führen.)
Das kann ich natürlich nicht beurteilen.
Sonst kannst du den Code ja auch mal Schrittweise im Debugger durchlaufen lassen und dir anzeigenlassen, was ActiveCell.value für einen Wert annnimmt.
bekomme ich immer einen Fehler Laufzeitfehler 1004 Objektdefinierter Fehler. Weiss jemand wie ich das beheben kann, habe es schon mit Worksheets versucht aber ohne Erfolg.
Ihr habt recht, es ist besser einen ganzen Block auf einmal zu kopieren, aber ich habe es noch nicht erwähnt, ich muss die einzelnen Zellen unterscheiden. Ob Sie zur Gruppe 1 oder zur Gruppe 2 gehören.
bekomme ich immer einen Fehler Laufzeitfehler 1004
Objektdefinierter Fehler. Weiss jemand wie ich das beheben
kann, habe es schon mit Worksheets versucht aber ohne Erfolg.
Blattschutz? Vebundene Zellen?
Ihr habt recht, es ist besser einen ganzen Block auf einmal zu
kopieren, aber ich habe es noch nicht erwähnt, ich muss die
einzelnen Zellen unterscheiden. Ob Sie zur Gruppe 1 oder zur
Gruppe 2 gehören.
Was für Gruppen?
Lade mal eine Beispielmappe hoch, FAQ:2861
Hey, ich habe es hinbekommen, vielleicht als info ich arbeite mit Excel 2007, ist etwas pingelig wahrscheinlich
Mein code sieht folgendermaßen aus
Set wks1 = Worksheets(„T1“)
Set wks2 = Worksheets(„T2“)
If wks1.Cells(6 + i, muss) „“ Then
wks1.Cells(6 + i, 2).Copy _
Destination:=wks2.Cells(11 + i_Entscheidungsmatrix, 2)
i_Entscheidungsmatrix = i_Entscheidungsmatrix + 1
End If
Das funktioniert ganz gut.
Problem ist, er kopiert die ganze Zellen also auch Rand usw. kann ich das irgendwie verhindern, das er nicht die Ränder mitkopiert??
Hey, ich habe es hinbekommen, vielleicht als info ich arbeite
mit Excel 2007, ist etwas pingelig wahrscheinlich
sag bitte die Version immer mit dazu.
Problem ist, er kopiert die ganze Zellen also auch Rand usw.
kann ich das irgendwie verhindern, das er nicht die Ränder
mitkopiert??
Sub tt()
Set wks1 = Worksheets("T1")
Set wks2 = Worksheets("T2")
If wks1.Cells(6 + i, muss) "" Then
wks2.Cells(11 + i\_Entscheidungsmatrix, 2) = wks1.Cells(6 + i, 2).Value
i\_Entscheidungsmatrix = i\_Entscheidungsmatrix + 1
End If
End Sub
PS: Macht das echt so einen gewaltigen Unterschied zwischen
Word 2002 und 2007
Hi Wischnor,
gewaltig ist relativ, sie sind halt nicht 100% kompatibel in Excel, bei 1000 zeilen Vba-Code haste halt erstmal Beschäftigung alles durchzuprüfenm ggfs. abzuändern.