Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1784to1788
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Einfügen an bestimmter Position

Einfügen an bestimmter Position
27.09.2020 21:51:30
xtian
Guten Abend zusammen,
leider bekomme ich mein Makro nicht mit dem gewünschten Erfolg zum laufen. Das liegt bestimmt an meinen
geringen VBA-Kenntnissen. Ich hoffe daher, dass mir jemand helfen kann. Meine Excel-Datei sieht in Spalte A
zum Anfang so aus:
Regal 1.0
Buch Titel A
Buch Titel B
Regal 2.0
Regal 2.1
Buch Titel C
Buch Titel D
Buch Titel E
Regal 3.0
Buch Titel F
Das Makro soll in der Spalte A vor bzw. über jeden Buchtitel die entsprechende Regalbezeichnung schreiben.
Beispielsweise soll das Makro über den Buch Titel B die Regalbezeichnung Regal 1.0 als Zeile einfügen. Vor
dem Buch Titel D müssten dann die Zeile Regal 2.0 und die Zeile Regal 2.1 eingefügt werden. Das Ergebnis
soll dann so aussehen:
Regal 1.0
Buch Titel A
Regal 1.0
Buch Titel B
Regal 2.0
Regal 2.1
Buch Titel C
Regal 2.0
Regal 2.1
Buch Titel D
Regal 2.0
Regal 2.1
Buch Titel E
Regal 3.0
Buch Titel F
Sub Einfuegen()
Dim RaZelle As Range
Dim LastRow As Long
LastRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
For Each RaZelle In Range("A1:A" & LastRow)
If RaZelle = "Regal" and if not "Regal" Cells(Rows.count, 1).End(xldown) Then
RaZelle.Offset(1, 0).Insert
End If
Next RaZelle
End Sub
Vielen Dank.
Gruß
Christian

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Einfügen an bestimmter Position
28.09.2020 09:58:27
Yal
Hallo Christian,
dein Problem ist nicht die Programmierung (wobei dein erster If ...) sondern die Algorythmik. Beschäftige dich zu dieser Fragestellung mit Status-Automate, dann kannst Du nachvollziehen, warum die hier vorgeschlagene Lösung.
Option Explicit
Private Enum enStand
enStand_sammeln
enStand_ausgeben
End Enum
Sub Einfuegen()
Dim RaZelle As Range
Dim LastRow As Long
Dim Stand As enStand
Dim Memory
Dim Elt
Stand = enStand_ausgeben
LastRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
For Each RaZelle In Range("A1:A" & LastRow)
If Left(RaZelle, 5) = "Regal" Then
If Stand = enStand_ausgeben Then
'Initieren/resetten und erste sammeln
Stand = enStand_sammeln
ReDim Memory(0)
Memory(0) = RaZelle.Value
Else
'weitere sammeln
ReDim Preserve Memory(UBound0(Memory) + 1)
Memory(UBound(Memory)) = RaZelle.Value
End If
Else 'nicht "Regal"
If Stand = enStand_sammeln Then
ReDim Preserve Memory(UBound0(Memory) + 1)
Stand = enStand_ausgeben
End If
Stand = enStand_ausgeben
Memory(UBound(Memory)) = RaZelle.Value
For Each Elt In Memory
'Me = ThisWorksheet
Me.Range("C10000").End(xlUp).Offset(1, 0) = Elt
Next
End If
Next RaZelle
End Sub
Public Function UBound0(Arr) As Long
'gibt -1 zurück, wenn der Arra noch nicht dimensioniert ist
On Error Resume Next
UBound0 = -1
UBound0 = UBound(Arr)
End Function
Viel Erfolg
Yal
Anzeige
AW: Einfügen an bestimmter Position
28.09.2020 11:04:01
xtian
Hallo Yal,
vielen Dank für deine Unterstützung. Ich bin erst seit einigen Tagen dabei, mich mit
VBA zu beschäftigen. Verstehe aber momentan leider noch nicht viel.
Dein Makro funktioniert leider nicht. Es kommt die Meldung "Unzulässige Verwendung des
Schlüsselwortes .Me".
Viele Grüße
Christian
AW: Einfügen an bestimmter Position
28.09.2020 11:31:12
Yal
Du muss den Code in den Code-Fenster des Arbeitsblatts ablegen, nicht in einem Modul.
Ansonsten ersetzt Me durch ActiveWorksheet
Activeworksheet.Range("C10000").End ...
AW: Einfügen an bestimmter Position
28.09.2020 12:19:44
xtian
Hallo Yal,
das mit Modul und Activeworksheet funktioniert leider nicht. Lege ich den Code in das
Arbeitsblatt funktioniert dieser. Vielen Dank.
Klasse wäre, wenn das Makro die Daten nicht in die Spalte C schreibt sondern das mit
den vorhandenen Daten in der Spalte A macht.
Geht das auch?
Gruß
Christian
Anzeige
AW: Einfügen an bestimmter Position
28.09.2020 12:33:35
Yal
Lass die Makro laufen und mache anschliessend, was Du vorhast unter "Makro aufzeichnen" (markieren, ausschneiden, einfügen). Schaue Dir anschliessend den Code und probiere die beide Teilen zusammen zu fügen.
Viel Erfolg
Yal

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige