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.

Copy Past aus einer Tabelle
#1
Hallo Community, 

ich habe vor kurzen gelernt, wie man in Excel ein wenig VBA programmiert, aber bin halt noch blutiger Anfänger. Beim googlen komme ich auch nicht wirklich weiter, deswegen frage ich euch jetzt um eure Hilfe. 
Folgendes Problem. Bei uns gibt es einen Fragenbogen, der über Dropdwons in Excel ausgefüllt wird. Auf einem zweiten Tabellenblatt wird dann ein Datensatz generiert. Ich bekomme sehr viele Fragebögen zurück, und wollte diese so halbautomatisch verarbeiten. Dazu muss ich den Schutz in der Datei aufheben, das versteckte Datenblatt sichtbar machen und den Bereich dann in eine neue Tabelle kopieren. Ich habe fast alles so weit hinbekommen, aber was ich nicht schaffe ist, dass er die Zeile mit den Daten kopiert und in der anderen Arbeitsmappe einfügt. Da ist die Schwierigkeit für mich, dass er ja immer in die nächste freie Zeile springen soll.  Hier mal mein Code

With Sheets("Datensatz")
    Set Datenquelle = .Range(A3, AN3)
    End With
    Zielspalte = 1
    Zielzeile = 2
   
    Datenquelle.Select
    Selection.Copy
    Workbooks("Datenimport.xlsm").Activate
    Do
    If Cells(Zielzeile, Zielspalte) = "" Then Exit Do
    Zielzeile = Zeilzeile + 1
    Loop
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False


Wichtig zu wissen. Das Tabellenblatt Datensatz ist das aus dem ich kopieren möchte, das ist auch schon das aktive Datenblatt aus dem Makro vorher. Die Daten wären in der formatierten Tabelle, welche Tabelle15 heißt. Aber man könnte auch sagen, dass sich diese im Bereich A3:AN3 befinden. Die Kopie der Daten soll dann in die Mappe Datenimport, Tabellenblatt Statistikdaten. Dort halt die Zeile 1 Überschriften und ab Zeile 2 soll er einfügen. Dann Zeile 3, Zeile 4 usw. Quasi immer wenn die letzte Zeile voll ist, dann in die nächste drauf kopieren. 

Ich hoffe ich könnt mir helfen! Schon mal vielen Dank!
Antworten Top
#2
Hallo,
 
schreibe mal in die erste Zeile des Modul in dem diese Sub steht: Option Explicit
Dann zeigt dir der VBA Editor alle nicht deklarierten Variablen, fehlende Zeichen etc. an.
Sollte dann noch was nicht so laufen wie gewollt, lade eine anonymisierte Datei mit ein paar Datensätzen, welche für das gewünschte Ergebnis relevant sind hier hoch. Da kann man dir dann auch besser helfen.
 
Gruß Uwe
Antworten Top
#3
Hallöchen,

Du kannst Dir mal per schrittweiser Ausführung (F8) anschauen, was da eigentlich passiert. Beim Kopieren weißt Du, dass da die Zelle oder der Bereich irgendwie markiert ist. Prüfe das mal nach dem Öffnen der Zieldatei...

Für die nötige Codänderung (Reihenfolge) ein Hinweis zu Select...

Es geht statt

Datenquelle.Select
Selection.Copy

dann

Datenquelle.Copy

auch wenn die Quelle nicht das aktive Blatt ist. Für Select müsstest Du ggf. wechseln ...
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#4
Hallo,

schau Dir mal diese Zeile genau an!

Zielzeile = Zeilzeile + 1

Das hast Du sicher nicht beabsichtigt, das Zielzeile immer 1 bleibt. Wink
Wie Uwe (Egon12) schon anmerkte:
Mit Option Explicit in der ersten Modulzeile müsstest Du alle verwendeten Variablen deklarieren, so dass der Buchstabendreher sofort angemeckert werden würde.

Aber auch die Berichtigung dieser Codezeile würde nicht viel bringen, da Du die Variable Zielzeile beim PasteSpecial gar nicht verwendest.

Und hier noch eine kürzere Variante ohne Variablen und Schleifen:

Workbooks("Datenimport.xlsm").Worksheets("Statistikdaten").Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(1, 40).Value = ActiveSheet.Range("A3:AN3").Value

Gruß Uwe
Antworten Top


Gehe zu:


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