Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1940to1944
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

Tabellen durch Makro um Zeile erweitern

Tabellen durch Makro um Zeile erweitern
15.08.2023 14:53:19
Zyen
Hallo zusammen,

Ich baue eine ToDo-Liste und möchte durch ein BeforeDoubleClick-Makro mir einige Dinge erleichtern.
Meine Beispielmappe hat 4 Arbeitsblätter.
Jedes Arbeitsblatt besitzt eine Tabelle von Spalte A bis M mit Kopfzeile (in Zeile 1).
Arbeitsblatt A ist ein Übersichtsblatt
Die Zeilen aus Arbeitsblatt A werden auf Arbeitsblatt B, C und D verteilt.
Dies geschieht durch Doppelklick in Arbeitsblatt A auf eine Zelle in Spalte J.
Es wird durch eine If-Funktion geprüft, in welches Arbeitsblatt eingefügt werden soll. Die zugehörige Zeile wird kopiert, in das durch die If-Prüfung ausgewählte Arbeitsblatt B, C oder D am Ende der Tabelle eingefügt und aus Arbeitsblatt A gelöscht.
Das funktioniert mit folgendem Code auch ziemlich gut.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Dim lngZiel As Long
If Target.Column = 10 Then
If Target = "B" Then
Cancel = True
With Worksheets("B")
lngZiel = IIf(IsEmpty(.Cells(.Rows.Count, 2)), .Cells(.Rows.Count, 2).End(xlUp).Row, .Rows.Count) + 1
Target.EntireRow.Copy .Cells(lngZiel, 1)
End With
Rows(Target.Row).Delete
ElseIf Target = "C" Then
Cancel = True
With Worksheets("C")
lngZiel = IIf(IsEmpty(.Cells(.Rows.Count, 2)), .Cells(.Rows.Count, 2).End(xlUp).Row, .Rows.Count) + 1
Target.EntireRow.Copy .Cells(lngZiel, 1)
End With
Rows(Target.Row).Delete
ElseIf Target = "D" Then
Cancel = True
With Worksheets("D")
lngZiel = IIf(IsEmpty(.Cells(.Rows.Count, 2)), .Cells(.Rows.Count, 2).End(xlUp).Row, .Rows.Count) + 1
Target.EntireRow.Copy .Cells(lngZiel, 1)
End With
Rows(Target.Row).Delete
End If
End If
End Sub



Leider wird die Tabelle in Arbeitsblatt B, C und D nicht durch eine Zeile erweitert. Dadurch ist die eingefügte Zeile nicht in der Tabelle inbegriffen.
Wie kann ich also die Zeile so einfügen, dass meine Tabelle die eingefügte Zeile umschließt?

(Der Code ist aus verschiedenen Foren-Einträgen zusammenkopiert und mit ein wenig kontextuellem Verständnis angepasst worden. Bin auch offen für Verbesserungsvorschäge)

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellen durch Makro um Zeile erweitern
15.08.2023 15:02:43
onur
Ist das überhaupt eine "intelligente" Tabelle? Sowas geht nur mit Diesen.
Tabellen durch Makro um Zeile erweitern
15.08.2023 15:08:40
Zyen
Ich bin leider nicht sicher, was eine intelligente Liste sein soll.
Ich habe lediglich über Einfügen -> Tabelle diese eingefügt.
AW: Tabellen durch Makro um Zeile erweitern
15.08.2023 15:09:33
onur
Poste mal die Datei, damit ich weiss, was du meinst...
Tabellen durch Makro um Zeile erweitern
15.08.2023 17:04:19
snb
Schau mal

Userbild
Tabellen durch Makro um Zeile erweitern
15.08.2023 17:09:34
Zyen
Ja, das sind Filter um Sortierungen vorzunehmen oder Daten ein und auszublenden. Ist aber nicht, wonach ich gefragt hab.
Anzeige
Tabellen durch Makro um Zeile erweitern
15.08.2023 15:07:08
Rudi Maintaire
hallo,
teste mal:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Dim rngTarget As Range, wksTarget As Worksheet
If Target.Column = 10 Then

Select Case Target.Value
Case "B", "C", "D"
Set wksTarget = Worksheets(Target.Value)
End Select

If Not wksTarget Is Nothing Then
Cancel = True

With wksTarget
Set rngTarget = .Cells(.Rows.Count, 2).End(xlUp).Offset(1, -1)
Target.EntireRow.Copy rngTarget
End With

Target.EntireRow.Delete
End If

End If
End Sub

Gruß
Rudi
Anzeige
Tabellen durch Makro um Zeile erweitern
15.08.2023 15:27:00
Zyen
Leider kein Unterschied. Trotzdem danke für die Hilfe!
Tabellengröße anpassen
15.08.2023 15:44:18
Rudi Maintaire
Hallo,
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Dim rngTarget As Range, wksTarget As Worksheet
If Target.Column = 10 Then

Select Case Target.Value
Case "B", "C", "D"
Set wksTarget = Worksheets(Target.Value)
End Select

If Not wksTarget Is Nothing Then
Cancel = True

With wksTarget
Set rngTarget = .Cells(.Rows.Count, 2).End(xlUp).Offset(1, -1)
Target.EntireRow.Copy rngTarget
.ListObjects(1).Resize .Cells(1, 1).CurrentRegion
End With

Target.EntireRow.Delete
End If

End If
End Sub

Gruß
Rudi
Anzeige
Tabellengröße anpassen
15.08.2023 16:02:30
Zyen
Ändert leider immernoch nichts…
Tabellengröße anpassen
15.08.2023 17:47:20
Rudi Maintaire
Hallo,
ich verstehe nicht, was du meinst. Die Tabellengrößen werden angepasst.

Gruß
Rudi

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige