Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1508to1512
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

Zeile mittels Klick in Tabelle 2 und umgekehrt

Zeile mittels Klick in Tabelle 2 und umgekehrt
25.08.2016 08:48:08
Franz
Guten Morgen liebe Experten,
ich beschäftige mich erst seit kurzem mit VBA und zugehörigen Funktionen. Ich bin noch dabei mich in den Basics einzulesen, möchte aber auch anhand euren Empfehlungen und Hinweisen lernen; daher auch meine zugehörige Frage:
Derzeit möchte ich jeweilige Tabellen-Zeilen mit einem Button (und diesen mit einem Marko) versehen. In der Zeile sind bspw. Name und Anschrift hinterlegt. Mittels klick möchte ich die entsprechende Zeile in das Tabellenblatt 2 innerhalb der Arbeitsmappe überführen. Bspw. sollen in Tabelle 1 alle aktiven Mitglieder und in Tabelle 2 alle inaktiven Mitglieder stehen. Wird ein aktives Mitglied inaktiv, möchte ich am Ende der Zeile klicken, um die Zeile nicht händisch entfernen und in Tabelle 2 einfügen zu müssen.
Sofern möglich, möchte ich für inaktive Mitglieder, die wiederum zu aktiven Mitglieder werden, ebenso verfahren.
Wie würdet ihr so etwas umsetzen?

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeile mittels Klick in Tabelle 2 und umgekehrt
25.08.2016 09:46:40
UweD
Hallo
So hab ich mal den Aufbau der beiden Tabellen angenommen:

Aktiv
 ABCDE
1NameVornameStraße /Nr. PLZOrt
2MüllerLisaJenseits 122222Himmelreich


Inaktiv
 ABCDE
1NameVornameStraße /Nr. PLzOrt
2MeierErwinHolzweg 233333Hier
3MustermannMaxNirgedwo 1212345Dort

Dieses Makro in die beiden Tabellenblätter
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    Dim Sp As Integer 
    Sp = 5 'Spalte E 
    If Target.Column = Sp And Target.Row > 1 Then
        Cancel = True
        Dim Nach As String
        Select Case Me.Name
            Case "Aktiv"
                Nach = "Inaktiv"
            Case "Inaktiv"
                Nach = "Aktiv"
            Case Else
                Exit Sub
        End Select
        Call Tauschen(Me.Name, Nach, Target.Row)
    End If
End Sub

Das hier in ein normals Modul
Sub Tauschen(Von As String, Nach As String, Zeile As Integer)
    Dim LR As Integer
    LR = Sheets(Nach).Cells(Sheets(Nach).Rows.Count, "A").End(xlUp).Row 'letzte Zeile der Spalte 
    Sheets(Von).Rows(Zeile).Copy Sheets(Nach).Rows(LR + 1)
    Sheets(Von).Rows(Zeile).Delete xlUp
End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 15 - mit VBAHTML 12.6.0

Beim Rechtsclick in Spalte E (kannst du ja abändern) wird das jeweilige Makro ausgeführt...
LG UweD
AW: Zeile mittels Klick in Tabelle 2 und umgekehrt
ChrisL

Hi Franz
Damit du nicht in jede Zeile einen Button einsetzen musst würde ich vorschlagen, dass du das Makro mittels BeforeDoubleClick Ereignis auslöst.
Im Beispiel Doppelklick in Spalte A (Target.Column = 1)
Alt+F11, links Doppelklick auf die Tabelle, Code einfügen:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 1 Then
Rows(Target.Row).Copy Worksheets("Tabelle2").Cells(Rows.Count, 2).End(xlUp).Offset(1, -1)
Rows(Target.Row).Delete
Cancel = True
End If
End Sub

Die nächste freie Zeile wird anhand von Spalte B (Zahl 2) ermittelt. Offset "-1" korrigiert das Einfügen auf Spalte A.
Willst du z.B. Spalte D zur Ermittlung der letzten Zeile verwenden, dann...
Cells(..., 4)
Offset(..., -3)
cu
Chris
AW: Zeile mittels Klick in Tabelle 2 und umgekehrt
Franz

Vielen lieben Dank ihr beiden. Genau das habe ich gesucht, ohne über ein nunmehr entstehendes Problem nachzudenken.
Vor dem eigentlichen Tabellenbereich, in dem die jeweiligen Mitglieder stehen, habe ich eine Nummerierung 1 - x (Abhängig von der Anzahl der Mitglieder) eingefügt. Also 1. Mitglied 2. Mitglied usw.!
Bei Anwendung des Makros bei Mitglied 1. wandert selbiges, inkl. "1." (Spalte A), wie gewollt in die Inaktiv-Tabelle. Klicke ich das nunmehr inaktive Mitglied 1. wieder in ein aktives Mitglied, wird dieses unter allen anderen Mitgliedern in der Aktiv-Tabelle eingefügt, aber leider ist die Nummerierung dann hinüber.... Gleiches gilt für die Inaktiv-Tabelle.
Wie füge ich noch eine Funktion ein, die jedes Mal die Nummeriung in Spalte A neu anstößt?
AW: Zeile mittels Klick in Tabelle 2 und umgekehrt
ChrisL

Hi Franz
Wenn eine Nummer laufend ändert, wozu dann eine Nummer (heute bin ich Mitglied 7, morgen bin ich Mitglied 10).
Vielleicht mit Formel abhängig von der Zeilennummer
=ZEILE()
cu
Chris
AW: Zeile mittels Klick in Tabelle 2 und umgekehrt
Franz

Hi ChrisL,
auch wieder wahr. Ich mag es halt gerne chronologisch, aber eigentlich macht es wirklich kein Sinn.
Dankeschön!
AW: Zeile mittels Klick in Tabelle 2 und umgekehrt
UweD

Hallo
Du kannst natürlich in der Zieltabelle nach dem Einfügen noch sortieren.
füge das noch ein..
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
   If Target.Column = 1 Then
       Rows(Target.Row).Copy Worksheets("Tabelle2").Cells(Rows.Count, 2).End(xlUp).Offset(1, -1)
       Rows(Target.Row).Delete
       '*****Sortieren Start 
       With Worksheets("Tabelle2").Sort
            .SortFields.Clear
            .SortFields.Add Key:=Range("A1"), _
                SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
                xlSortTextAsNumbers
            .SetRange Range("A:E")
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
       End With
       '*****Sortieren Ende 
       Cancel = True
   End If
End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 15 - mit VBAHTML 12.6.0


Gruß UweD
AW: Zeile mittels Klick in Tabelle 2 und umgekehrt
Franz

Ich muss nochmal zurückkommen auf die "unsortierte" Variante. Innerhalb des ersten Tabellenblattes ("Aktive Mitglieder")habe ich eine Tabelle erstellt, in der die Mitglieder verzeichnet sind. Durch das Doppelklicken (in das Tabellenblatt "Inaktive Mitglieder" in die dortige Tabelle) wird jedes Mitglieder UNTERHALB der jeweiligen Tabelle eingefügt. D.h. außerhalb der Tabelle.
Wie bekomme ich das "doppelgeklickte" Mitglied denn in die jeweilige Tabelle?
AW: Zeile mittels Klick in Tabelle 2 und umgekehrt
ChrisL

Hi Franz
Verstehe ich nicht. Geht es vielleicht um Formatierungen? Lade mal bitte eine Beispieldatei.
cu
Chris
AW: Zeile mittels Klick in Tabelle 2 und umgekehrt
Franz

Ich habe leider noch keine Möglichkeit Dateien hochzuladen (Beschränkung des Firmenrechners).
Ich versuche es nochmal zu erklären:
In dem Tabellenblatt "Aktive Mitglieder" habe ich einen Bereich als Tabelle formatiert. Dort habe ich die jeweiligen Mitglieder eingetragen. Der gleiche Tabellenaufbau befindet sich im Tabellenblatt "Inaktive Mitglieder" (ist jedoch leer - die dortige Tabelle reicht bis Zeile 8).
Klicke ich nun ein Mitglied mit Doppelklick an, um es in das andere Tabellenblatt ("Inaktive Mitglieder") zu überführen, funktioniert dies auch ABER genanntes Mitglied wird unterhalb des Tabellenbereich im Tabellenblatt "Inaktive Mitglieder" eingefügt. Also in Zeile 9. Gleiches gilt für ein nochmaliges Anklicken um das Mitglieder wieder auf die Aktive Liste zu überführen.
Wie muss ich VBA anpassen, dass die Überführung das Mitglied jeweils in den anderen Tabellenbereich und nicht unterhalb der jeweiligen Tabelle einfügt?
AW: Zeile mittels Klick in Tabelle 2 und umgekehrt
ChrisL

offen, ich kann mich im Moment zeitlich leider nicht damit beschäftigen
ich auch nicht, aber
Michael

Hi,
hier zwei Vorschläge:
a) "Tabellen" in Blättern aufheben, wenn es ohne die funktioniert.
b) wozu überhaupt ZWEI Listen? Für meinen Geschmack ist das eine zu viel!
Es würde doch reichen, in einer weiteren Spalte ein Kennzeichen zu setzen: die Überschrift heißt dann meinetwegen "Aktiv", und nach Bedarf wird ein "x" reingesetzt oder eben auch nicht.
Das Makro würde dadurch deutlich einfacher werden...
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 7 Then ' 7 entspricht "G" oder welche auch immer
If Target = "" Then Target = "x" Else Target = ""
Cancel = True
End If
End Sub

... UND vor allem wären sämtliche Überlegungen zur Nummerierung von vornherein überflüssig.
Arbeiten läßt sich damit ganz easy, indem Du nach Bedarf auf "x" oder nicht "x" filterst.
Evtl. *könnte* man (ich halte das für überflüssig, außerdem verlangsamt es Excel) noch eine bedingte Formatierung anbringen, die Zeilen ohne "x" z.B. auf hellgrau setzt.
Schöne Grüße,
Michael
AW: Zeile mittels Klick in Tabelle 2 und umgekehrt
ChrisL

Hi Franz
Wie man die Spalte anpasst, anhand derer die letzte freie Zeile ermittelt wird, ist in den Beispielcodes beschrieben. Allerdings werden reine Formatierungen hierbei nicht berücksichtigt, vermutlich hast du zusätzliche Zellen mit Inhalt befüllt.
Wenn du nicht weiter kommst hilft nur noch eine Beispieldatei.
cu
Chris
http://excel-inn.de/dateien/vba_beispiele/tabellenanzeige_in_html_addin.zip
Anzeige
AW: Zeile mittels Klick in Tabelle 2 und umgekehrt
25.08.2016 09:47:22
ChrisL
Hi Franz
Damit du nicht in jede Zeile einen Button einsetzen musst würde ich vorschlagen, dass du das Makro mittels BeforeDoubleClick Ereignis auslöst.
Im Beispiel Doppelklick in Spalte A (Target.Column = 1)
Alt+F11, links Doppelklick auf die Tabelle, Code einfügen:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 1 Then
Rows(Target.Row).Copy Worksheets("Tabelle2").Cells(Rows.Count, 2).End(xlUp).Offset(1, -1)
Rows(Target.Row).Delete
Cancel = True
End If
End Sub

Die nächste freie Zeile wird anhand von Spalte B (Zahl 2) ermittelt. Offset "-1" korrigiert das Einfügen auf Spalte A.
Willst du z.B. Spalte D zur Ermittlung der letzten Zeile verwenden, dann...
Cells(..., 4)
Offset(..., -3)
cu
Chris
Anzeige
AW: Zeile mittels Klick in Tabelle 2 und umgekehrt
25.08.2016 11:01:12
Franz
Vielen lieben Dank ihr beiden. Genau das habe ich gesucht, ohne über ein nunmehr entstehendes Problem nachzudenken.
Vor dem eigentlichen Tabellenbereich, in dem die jeweiligen Mitglieder stehen, habe ich eine Nummerierung 1 - x (Abhängig von der Anzahl der Mitglieder) eingefügt. Also 1. Mitglied 2. Mitglied usw.!
Bei Anwendung des Makros bei Mitglied 1. wandert selbiges, inkl. "1." (Spalte A), wie gewollt in die Inaktiv-Tabelle. Klicke ich das nunmehr inaktive Mitglied 1. wieder in ein aktives Mitglied, wird dieses unter allen anderen Mitgliedern in der Aktiv-Tabelle eingefügt, aber leider ist die Nummerierung dann hinüber.... Gleiches gilt für die Inaktiv-Tabelle.
Wie füge ich noch eine Funktion ein, die jedes Mal die Nummeriung in Spalte A neu anstößt?
Anzeige
AW: Zeile mittels Klick in Tabelle 2 und umgekehrt
25.08.2016 11:09:58
ChrisL
Hi Franz
Wenn eine Nummer laufend ändert, wozu dann eine Nummer (heute bin ich Mitglied 7, morgen bin ich Mitglied 10).
Vielleicht mit Formel abhängig von der Zeilennummer
=ZEILE()
cu
Chris
AW: Zeile mittels Klick in Tabelle 2 und umgekehrt
25.08.2016 11:30:13
Franz
Hi ChrisL,
auch wieder wahr. Ich mag es halt gerne chronologisch, aber eigentlich macht es wirklich kein Sinn.
Dankeschön!
AW: Zeile mittels Klick in Tabelle 2 und umgekehrt
25.08.2016 11:55:09
UweD
Hallo
Du kannst natürlich in der Zieltabelle nach dem Einfügen noch sortieren.
füge das noch ein..
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
   If Target.Column = 1 Then
       Rows(Target.Row).Copy Worksheets("Tabelle2").Cells(Rows.Count, 2).End(xlUp).Offset(1, -1)
       Rows(Target.Row).Delete
       '*****Sortieren Start 
       With Worksheets("Tabelle2").Sort
            .SortFields.Clear
            .SortFields.Add Key:=Range("A1"), _
                SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
                xlSortTextAsNumbers
            .SetRange Range("A:E")
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
       End With
       '*****Sortieren Ende 
       Cancel = True
   End If
End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 15 - mit VBAHTML 12.6.0


Gruß UweD
Anzeige
AW: Zeile mittels Klick in Tabelle 2 und umgekehrt
25.08.2016 12:22:14
Franz
Ich muss nochmal zurückkommen auf die "unsortierte" Variante. Innerhalb des ersten Tabellenblattes ("Aktive Mitglieder")habe ich eine Tabelle erstellt, in der die Mitglieder verzeichnet sind. Durch das Doppelklicken (in das Tabellenblatt "Inaktive Mitglieder" in die dortige Tabelle) wird jedes Mitglieder UNTERHALB der jeweiligen Tabelle eingefügt. D.h. außerhalb der Tabelle.
Wie bekomme ich das "doppelgeklickte" Mitglied denn in die jeweilige Tabelle?
AW: Zeile mittels Klick in Tabelle 2 und umgekehrt
25.08.2016 12:26:02
ChrisL
Hi Franz
Verstehe ich nicht. Geht es vielleicht um Formatierungen? Lade mal bitte eine Beispieldatei.
cu
Chris
AW: Zeile mittels Klick in Tabelle 2 und umgekehrt
26.08.2016 11:45:30
Franz
Ich habe leider noch keine Möglichkeit Dateien hochzuladen (Beschränkung des Firmenrechners).
Ich versuche es nochmal zu erklären:
In dem Tabellenblatt "Aktive Mitglieder" habe ich einen Bereich als Tabelle formatiert. Dort habe ich die jeweiligen Mitglieder eingetragen. Der gleiche Tabellenaufbau befindet sich im Tabellenblatt "Inaktive Mitglieder" (ist jedoch leer - die dortige Tabelle reicht bis Zeile 8).
Klicke ich nun ein Mitglied mit Doppelklick an, um es in das andere Tabellenblatt ("Inaktive Mitglieder") zu überführen, funktioniert dies auch ABER genanntes Mitglied wird unterhalb des Tabellenbereich im Tabellenblatt "Inaktive Mitglieder" eingefügt. Also in Zeile 9. Gleiches gilt für ein nochmaliges Anklicken um das Mitglieder wieder auf die Aktive Liste zu überführen.
Wie muss ich VBA anpassen, dass die Überführung das Mitglied jeweils in den anderen Tabellenbereich und nicht unterhalb der jeweiligen Tabelle einfügt?
Anzeige
AW: Zeile mittels Klick in Tabelle 2 und umgekehrt
26.08.2016 12:37:25
ChrisL
offen, ich kann mich im Moment zeitlich leider nicht damit beschäftigen
ich auch nicht, aber
26.08.2016 16:09:25
Michael
Hi,
hier zwei Vorschläge:
a) "Tabellen" in Blättern aufheben, wenn es ohne die funktioniert.
b) wozu überhaupt ZWEI Listen? Für meinen Geschmack ist das eine zu viel!
Es würde doch reichen, in einer weiteren Spalte ein Kennzeichen zu setzen: die Überschrift heißt dann meinetwegen "Aktiv", und nach Bedarf wird ein "x" reingesetzt oder eben auch nicht.
Das Makro würde dadurch deutlich einfacher werden...
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 7 Then ' 7 entspricht "G" oder welche auch immer
If Target = "" Then Target = "x" Else Target = ""
Cancel = True
End If
End Sub

... UND vor allem wären sämtliche Überlegungen zur Nummerierung von vornherein überflüssig.
Arbeiten läßt sich damit ganz easy, indem Du nach Bedarf auf "x" oder nicht "x" filterst.
Evtl. *könnte* man (ich halte das für überflüssig, außerdem verlangsamt es Excel) noch eine bedingte Formatierung anbringen, die Zeilen ohne "x" z.B. auf hellgrau setzt.
Schöne Grüße,
Michael
Anzeige
AW: Zeile mittels Klick in Tabelle 2 und umgekehrt
27.08.2016 08:16:57
ChrisL
Hi Franz
Wie man die Spalte anpasst, anhand derer die letzte freie Zeile ermittelt wird, ist in den Beispielcodes beschrieben. Allerdings werden reine Formatierungen hierbei nicht berücksichtigt, vermutlich hast du zusätzliche Zellen mit Inhalt befüllt.
Wenn du nicht weiter kommst hilft nur noch eine Beispieldatei.
cu
Chris

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige