Frage von Gutefrageguest, 111

Excel Makro! Wenn Zeile beschrieben, dann nächste Zeile... Wer kann mir bei diesem Problemchen behilflich sein?

Hallo,

ich möchte eine Exceltabelle für Artikel herstellen. Die Daten, die ich einfügen möchte, sind in Spaltenform gelistet ( von oben nach unten. Ich brauche die Daten jedoch in der Zeilenform. Um den Vorgang zu automatisieren habe ich ein Makro erstellt. Jedoch schreibt er mir die Daten immer in die gleiche Zeilen. Ich habe es leider, mit meinem Laienwissen, nicht hinbekommen eine "wenn, dann" Funktion einzufügen.

Meine Formel lautet folgendermaßen:

Sub Makro2()
'
' Makro2 Makro
'
' Tastenkombination: Strg+e
'
    Range("D23:D29").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("E9:K9").Select
    ActiveSheet.Paste
    Range("D23:D29").Select
    Application.CutCopyMode = False
    Selection.ClearContents
End Sub

Bei "Range("E9:K9").Select" brauche ich eine Funktion, die wenn der Wert zwischen E9:K9 besetzt/beschrieben sein sollte es dann auf E10:K10 die Daten einfügt.

Ich würde mich sehr freuen, wenn mir jemand mit meinem Problemchen behilflich sein könnte.

Vielen Dank

Expertenantwort
von Oubyi, Community-Experte für Excel, 89

So richtig verstehe ich Dein Vorhaben noch nicht, aber ich zeige Dir mal, was in mir zusammengereimt habe.
Dabei gehe ich erstmal davon aus, dass nur die Zeilen 9 und 10 beschrieben werden sollen. So hast Du es erklärt.
Wenn das erweitert werden soll, sag nochmal Bescheid.
Ich schau morgen wieder vorbei.

Sub Makro2()
'
' Makro2 Makro
'
' Tastenkombination: Strg+e
'
With ActiveSheet
.Range("D23:D29").Copy
If IsEmpty(.Range("E9")) Then
.Range("E9").PasteSpecial Paste:=xlPasteAll, Transpose:=True
Else: .Range("E10").PasteSpecial Paste:=xlPasteAll, Transpose:=True
.Range("D23:D29").ClearContents
End If
End With
Application.CutCopyMode = False
End Sub
Kommentar von Gutefrageguest ,

Hallo,

vielen Dank für die schnelle Antwort. Mir ist soeben mein kleiner Fehler aufgefallen. 

Ich möchte die Daten die zwischen D23:D29 sind in die Zeilen E9:K9 transponieren. Falls jedoch diese Zeilen besetzt sein sollten, möchte ich dass er diese in die unteren Zeilen einsetzt. Also in diesem Falle dann in die Zeilen E10:K10. Im Makro habe ich dann anschließend die Daten zwischen D23:D29 löschen lassen, damit ich die nächsten Artikelmerkmale sofort einfügen kann.Könnte man natürlich auch direkt draufkopieren.

Ich bedanke mich schon mal für alle Antworten. 

Kommentar von Oubyi ,

So läuft mein Code doch, oder?
Wenn immer in die nächst freie Zelle ab E9 kopiert werden soll, dann sollte das so klappen:

Sub Makro2()
'
' Makro2 Makro
'
' Tastenkombination: Strg+e
'
Dim Zelle As Range
Dim Bereich As Range
Set Bereich = Range("E9:E1000")
For Each Zelle In Bereich
If IsEmpty(Zelle) Then Exit For
Next Zelle
With ActiveSheet
.Range("D23:D29").Copy
Zelle.PasteSpecial Paste:=xlPasteAll, Transpose:=True
.Range("D23:D29").ClearContents
End With
Application.CutCopyMode = False
End Sub
Kommentar von Gutefrageguest ,

So ist das Problem aus der Welt. Vielen Dank!

Kommentar von Oubyi ,

Gern geschehen ☼

Keine passende Antwort gefunden?

Fragen Sie die Community