Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA Bestimmte Zeilen in andere Tabelle kopieren und fixieren
#1
Hallo Zusammen,

ich hätte eine eilige Aufgabe wo ich mit dem makro aufzeichner leider nicht mehr vorankomme und bitte um Hilfe, da ich bisher nix mit Vba zu tun hatte.


Ich hab eine Excel Liste mit Aufgaben vorgegeben. In der Spalte E dieser Liste wird gekennzeichnet welche aufgaben erledigt( =x ), unerledigt( =u ) oder in Bearbeitung( =b ) sind.
 Nun möchte ich die offenen Aufgaben (also alles außer x) in die Tabelle2 kopieren, abspeichern und am besten den Tabellenblattnamen mit dem letzten Datum und Uhrzeit des Speichervorgangs benennen.....und das alles mit einem Knopf auf einen Button/Schaltfläche. 

Ich habs mit Makro einigermaßen hin gekriegt. Bloß muss ich immer bevor ich den makro ausführe in die erste Zelle der Liste gehen und in die erste Zelle von Tabelle2, da er mir sonst es dahin kopiert wo ich als letztes hingeklickt habe bzw. nur das kopiert was ich in der Liste auswähle. 

Ich hätte gerne, dass ich vor ausführen des Makro nirgendswo hinklicken muss und dass er mir alles nur in die Spalten A - F aufgelistet kopiert. Gerne hätte ich auch dass mit dem Tabellenblattnamen oder dass der letzter Status( Letzte Uhrzeit und Datum beim Abspeichern) in einer Zelle neben der Liste in Tabelle2 erscheint.     


Hier mein Versuch und Danke im Voraus



Sub Offene_Themen_nach_Tabelle2_kopieren()



 ActiveSheet.Range ("$E$1:$E$900").AutoFilter Field:=1, Criteria1:="=b", _
       Operator:=x1Or, Criteria:="=u"
 ActiveCell.Range ("$A$1:$F$900").Select
 Selection.Copy
 Sheets("Tabelle2").Select
 ActiveCell.Range ("$A$1:$F$900").Select
 ActiveSheet.Paste
 ActiveCell.Select
 Sheets("Tabelle1").Select
 ActiveSheet.Range ("$E$1:$E$900").AutoFilter Field:=1
 Application.CutCopyMode = False
 ActiveWindow.SmallScroll Down:=-3
 ActiveCell.Range ("A1").Select
 ActiveWorkbook.Save
 Sheets("Tabelle1").Select

End Sub


Bin für jede Hilfe dankbar
Antworten Top
#2
Hola,

zur Info:

http://www.vba-forum.de/forum/View.aspx?...d_fixieren

Gruß,
steve1da
Antworten Top
#3
Hallo,

Zitat:Ich hätte gerne, dass ich vor ausführen des Makro nirgendswo hinklicken muss und dass er mir alles nur in die Spalten A - F aufgelistet kopiert.

.... und verrätst Du auch, wie Du das Makro starten willst?

Irgendwann braucht das Ding ja nunmal einen Anschubser
damit es weiß, daß es nun aktiv sein und was tun soll.

Übrigens: Es ist beneidenswert, wie virtuos Du mit Copy&Paste umgehen kannst
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

Grüße aus Norderstedt, Peter
Antworten Top
#4
Hallöchen,

wo hast DU denn dieses Makro her? In dem Makro hast DU z.B. solche Zeilen drin:
ActiveCell.Range("A1").Select
Was willst Du damit erreichen? Excel verarbeitet die Zelladresse hier relativ, d.h. von der momentan aktiven Zelle aus. Und wenn Du z.B. in X64 aktiv bist, wird X64 selektiert.

Wenn Du A1 selectieren willst, dann geht das so:
Range("A1").Select
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • cantona
Antworten Top
#5
Moin!
(das mit der eiligen Aufgabe und dem Crossposting habe ich geflissentlich überlesen)

Ich frage mich ernsthaft, warum Du diese redundante Datenhaltung haben willst.
Wenn Du "x" im Autofilter abwählst, hast Du doch bereits das gewünschte Ergebnis.
Dies kannst Du in Ruhe betrachten oder auch ausdrucken, da braucht es doch kein zusätzliches Arbeitsblatt?
Zum Code schreibe ich jetzt mal lediglich, dass Du Dich mit der Referenzierung von (Tabellen-)Objekten beschäftigen solltest:
http://www.online-excel.de/excel/singsel_vba.php?f=78

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • cantona
Antworten Top
#6
Und zusätzlich:
Zitat:Nun möchte ich die offenen Aufgaben (also alles außer x) in die Tabelle2 kopieren, abspeichern und am besten den Tabellenblattnamen mit dem letzten Datum und Uhrzeit des Speichervorgangs benennen....

Schreibe in eine beliebige Zelle im Druckbereich =JETZT()
Und wenn Du das Tabellenblatt beim Speichern umbenennen willst, reicht folgendes im Modul DieseArbeitsmappe:

Microsoft Excel Objekt DieseArbeitsmappe
Option Explicit 
 
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 
Tabelle1.Name = Format(Now, "yymmdd_hhnn") 
End Sub 

Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • cantona
Antworten Top
#7
Hallo,

teste mal so:
Sub Offene_Themen_nach_Tabelle2_kopieren()
 With Sheets("Tabelle1").Range("$A$1").CurrentRegion
   .AutoFilter Field:=5, Criteria1:="=b", Operator:=xlOr, Criteria2:="=u"
   .Range("A:D").Copy Tabelle2.Range("$A$1")
   .AutoFilter Field:=5
 End With
 Tabelle2.Name = Format(Now, "dd.mm.yyyy_hh-nn-ss")
'  ActiveWorkbook.Save
End Sub
Zur Geschichte mit dem Button guckst Du: Makro einer Schaltfläche zuweisen

Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • cantona
Antworten Top
#8
Danke hat mir sehr geholfen...hatte mit vba bisher nix zu tun und habe bisher nur mit dem Makro-Aufzeichner gearbeitet
Antworten Top
#9
Also ich habe es jz zu 99 Prozent. danke vielmals

Mein einziges Problem ist, dass mein Makro beim 2ten Mal Durchlaufen die Tabelle2 nicht erkennt, da ich es ja mit dem aktuellen Datum versehen habe.

Die JETZT() funktion hilft nicht besonders, da sie sich beim Öffnen der Datei ja auch wieder ändert. Dabei will ich ja den Status beim letzten Abspeichern.

Vielleicht habe ich ja auch was beim implementieren falsch gemacht. 

Hier meine aktueller Code und danke im voraus



 Sub offene_Themen_nach_Tabelle2_kopieren()
'
' offene_Themen_nach_Tabelle2_kopieren Makro
'

'
    ActiveSheet.Range("$E$1:$E$900").AutoFilter Field:=1, Criteria1:="=b", _
        Operator:=xlOr, Criteria2:="=u"
    Range("A1:F900").Select
    Selection.Copy
    Sheets("Tabelle2").Select
    Range("A1").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Sheets("Tabelle1").Select
    ActiveSheet.Range("$E$1:$E$900").AutoFilter Field:=1
    Range("A1").Select
    Tabelle2.Name = Format(Now, "dd.mm.yyyy_hh-nn-ss")
    ActiveWorkbook.Save
End Sub
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste