3.5k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo zusammen,

ich hab doch nochmal eine Frage.

Ich habe zwei Tabellenblätter:

1)

Zelle A1 = Name
Zelle A2 = Vorname
Zelle A3 = Anschrift

usw. wie viele genau weiß ich aber noch nicht. Ungefähr soll das erste Tabellenblatt 20 Einträge haben

Wenn jetzt die 20 Einträge gemacht sind, möchte ich die per Makro in ein zweites Tabellenblatt einfügen. Und zwar so das dich 20 Einträge dann in die nächst mögliche leere Zeile nebeneinander, also über 20 Spalten, eingefügt werden.

Wenn ich ein Makro per Hand aufzeichne, wird das leider immer in die selbe Zeile eingetragen.

Nun kann man ja ein MAkro das aufgezeichnet wurde, auch verändern. Nur hier scheitert es an meinen Kompetenzen und ganz von Hand ein Makro schreiben kann ich auch nicht.

Eventuell weiß jemand, wie man den Eintrag in dem aufgezeichneten Makro ändern muss?

Wie gesagt ich weiß auch noch nicht genau wie viel Felder ich im Endeffekt brauche.

Vielen Dank und Gruß

Alex

16 Antworten

0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi Alex,

hier mal einige Erläuterungen was im Code abläuft (nur auf den zuletzt geposteten):


' bezieht sich alles auf das Tabellenblatt Datensammlung
With Sheets("Datensammlung")
' erste freie Zeile in Spalre A ermitteln
lngErste = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp).Row, .Rows.Count) + 1
' Bereich B6:B18 aus Dateneingabe kopieren
Sheets("Dateneingabe").Range("B6:B18").Copy
- in die erst freie Zelle der Spalte A einfügen und dabei transponieren (aus Spaltenanordnung Zeilenanordnung machen)
.Cells(lngErste, 1).PasteSpecial Paste:=xlAll, Transpose:=True
' die Kopier-Umrahmung wieder löschen
Application.CutCopyMode = False
End With


Und in diesem Teil aus dem vorhergehenden Beitrag:


' Bereich B7:B18 leeren
Sheets("Dateneingabe").Range("B7:B18").ClearContents
' in B6 die vorhandene Zahl ersetzen durch vorhandene Zahl + 1
Sheets("Dateneingabe").Range("B6") = Sheets("Dateneingabe").Range("B6") + 1


Vielleicht wird es dadurch etwas verständlicher.

Bis später,
Karin
0 Punkte
Beantwortet von
Hallo Karin,

vielen Dank für die Erläuterung. So kommt ein wenig Licht ins Dunkel ;)

Eine Frage ist doch nocht aufgekommen. Wie muss ich denn den Befehl Copy anpassen, wenn ich nur den Wert der Zelle (also im Prinzip Inhalte Einfügen - Werte) einfügen möchte und nicht die Formel.

Vielen Dank schonmal und beste Grüße

Alex
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi Alex,

ändere Paste:=xlAll in Paste:=xlValues

Bis später,
Karin
0 Punkte
Beantwortet von
Hallo Karin,

vielen Dank, auch das hat natürlich bestens funtktioniert. Ein letzte Frage hätte ich noch:

Ich habe zwei Variante - die erste funktioniert:

Range("S" & Zeile).PasteSpecial Paste:=xlValues ---Zeile hat bspw. den Wert 3, also wird was in meine Zelle S3 eingetragen

Die zweite bringt einen Laufzeitfehler:

Der Wert Spalte S ist 19 - Ich habe also die Variable Spalte1 mit dem Wert 19 belegt, aber er findet die Zelle S3 nun nicht, bzw. bringt den Laufzeitfehler 1004

Range(Cells(Zeile, Spalte1)).PasteSpecial Paste:=xlValues

Hast du dafür, oder jemand anderes, eine Lösung?

Danke und Gruß Alex
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi Alex,

Wenn du Range und Cells vrwendest, erwartet Excel mindestens 2 Zellen - müsste also syntaxmäßig heißen:

Range(Cells(Zeile, Spalte), Cells(Zeile, Spalte)).PasteSpecial Paste:=xlValues


Da du aber nur 1 Zelle hast, ist es so korrekt:

Cells(Zeile, Spalte).PasteSpecial Paste:=xlValues


Bis später,
Karin
0 Punkte
Beantwortet von
Hallo Karin

Ok darauf muss man ersteinmal kommen, dass dann zwei Cellen erwartet werden. Vielen lieben Dank für die schnelle und super hilfreichen Infos.

Beste Grüße

Alex
...