Registriert seit: 04.12.2017
Version(en): 2003-2013
hi snb,
klar hab ich das in der Datei des TE probiert.
In einem Modul, warum geht das da nicht?
wenn den von dir angegeben Bereich markieren will funktioniert das nicht, sondern kommt ein Laufzeitfehler
Zitat:Tabelle2.Cells(1, 10).Resize(UBound(sp), UBound(sp, 2) + 1).Select
Die Datei die du im letzten Post angehängt hast, hat den selben Inhalt des TE, nur das der Code in einem Arbeitsblatt direkt drin ist
Was mache ich falsch? Bitte mit Erklärung
Danke im Voraus
-------------------------
Hallo Ego,
benenne deine Datei um, bei mir wurde ein (1) angehängt, da sie schon mal im Ordner war.
Dann öffne sie und du bekommst 3 Fehlermeldungen
Registriert seit: 29.09.2015
Version(en): 2030,5
11.01.2018, 16:03
(Dieser Beitrag wurde zuletzt bearbeitet: 11.01.2018, 16:40 von snb.)
Du solltest nie selektieren, sondern das Makro laufen lassen.: das ist das Zweck eines Makros.
Registriert seit: 21.06.2016
Version(en): 2021
Hallo,
Zitat:benenne deine Datei um, bei mir wurde ein (1) angehängt, da sie schon mal im Ordner war.
Dann öffne sie und du bekommst 3 Fehlermeldungen
habe ich gemacht. Bei mir erscheint keine Fehlermeldung.
Was mache ich falsch? Bitte mit Erklärung
helmut
Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.
Registriert seit: 17.11.2017
Version(en): 2016
Den Weg mit "Specialcells(2,1)" fand ich zwar interessant, aber mit über 6 Sekunden Laufzeit "kein Renner". Die bewährte Methode schafft es in ca. 0.24 Sekunden.
Code:
Sub Quick()
Start = Timer
Dim Res()
With Sheets("staffoutput")
Ar = .Range(.Cells(4, 1), .UsedRange.SpecialCells(xlCellTypeLastCell))
End With
ReDim Res(WorksheetFunction.CountIf(Sheets("staffoutput").Cells(4, 1).CurrentRegion, ">0"), 6)
For j = 5 To UBound(Ar, 2)
For i = 2 To UBound(Ar)
If IsNumeric(Ar(i, j)) And Ar(i, j) > 0 Then
r = r + 1
Res(r, 1) = Ar(i, 1)
Res(r, 2) = Ar(i, 2)
Res(r, 3) = Ar(i, 3)
Res(r, 4) = Ar(1, j)
Res(r, 5) = Ar(i, j)
End If
Next i
Next j
Sheets("Phi").Range("A1").Resize(UBound(Res), 6) = Res
Debug.Print Timer - Start '0,24 Sekunden
End Sub
Registriert seit: 04.12.2017
Version(en): 2003-2013
Hi EGO und snb
ich nehm alles zurück und behaupte das Gegenteil.
Irwie war gestern nicht mein Tag
Registriert seit: 29.09.2015
Version(en): 2030,5
Wir freuen uns um deine Zukunft. :19:
Registriert seit: 11.12.2017
Version(en): Microsoft Office Professional Plus 2013
Hallo zusammen,
bei der Lösung von snb habe ich leider auch einen Laufzeitfehler erhalten (Ursprungsdatei enthält 17000 Zeilen) und bei der Lösung von Phi.VBA hat es dann geklappt! :18:
Ebenso ein herzliches Dankeschön an alle anderen für ihr Engagement!
Liebe Grüsse,
Karo