Autor
|
Thema: Excel VBA (721 / mal gelesen)
|
uwehinku Mitglied Rentner
Beiträge: 4 Registriert: 13.03.2016
|
erstellt am: 13. Mrz. 2016 14:22 <-- editieren / zitieren --> Unities abgeben:
Hallo, habe folgendes Problem: ich Tabelle 1 habe ich in Spalte b eine 4 stehen. So wie die 4 mit return bestätigt ist, möchte ich den entsprechenden Text aus Spalte C, F + E in eine Tabelle 2 kopieren. Kann mir jemand helfen? Ich bin Anfänger! Gruß uwehinku ------------------ Uwe Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9732 Registriert: 01.12.2003
|
erstellt am: 13. Mrz. 2016 15:32 <-- editieren / zitieren --> Unities abgeben: Nur für uwehinku
|
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 Office 2010; Office365 Visual Basic
|
erstellt am: 13. Mrz. 2016 15:38 <-- editieren / zitieren --> Unities abgeben: Nur für uwehinku
Hallo Uwe, Willkommen im Forum Hoffe Deine Anfrage richtig interpretiert zu haben, das wäre ein möglicher Code. Kopiere ihn in den Code der Tabelle1 (zu öffnen entweder über Makros - Visual Basic Editor oder rechte Maus auf Tabellenblatt und Code anzeigen)
Code:
Private Sub Worksheet_Change(ByVal Von As Range) ' Überprüfe ob auslösendes Element Spalte B mit Inhalt 4 war ' und übergebe die auslösende Zeile zum Kopieren If Von.Count = 1 Then ' nur durchführen wenn eine Zelle geändert wurde If Von.Column = 2 And Von.Value = 4 Then Call B4_Werte_Kopieren(Von.Row) End If End SubSub B4_Werte_Kopieren(Zeile As Long) ' Wenn in Spalte B der Wert 4 eingegeben wurde ' kopiere die Werte der Spalten C, E und F nach Tabelle2 Dim Spalte As Long Spalte = 3 ' C Cells(Zeile, Spalte).Copy Destination:=Worksheets("Tabelle2").Cells(Zeile, Spalte) Spalte = 5 ' E Cells(Zeile, Spalte).Copy Destination:=Worksheets("Tabelle2").Cells(Zeile, Spalte) Spalte = 6 ' F Cells(Zeile, Spalte).Copy Destination:=Worksheets("Tabelle2").Cells(Zeile, Spalte) End Sub
Grüße Klaus [Edit] Code auf untersuchen einer einzelnen Zelle geändert da es ansonsten zu Fehlern beim Kopieren mehrerer Zellen kommen kann [Diese Nachricht wurde von KlaK am 13. Mrz. 2016 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
uwehinku Mitglied Rentner
Beiträge: 4 Registriert: 13.03.2016
|
erstellt am: 13. Mrz. 2016 20:57 <-- editieren / zitieren --> Unities abgeben:
Hallo Klaus, danke erst einmal. Diese Applikation funktioniert nicht. Nochmals. Tabelle 1 hat in Spalte B in unterschiedlichen Zeilen die Zahlen 1,2,3 und 4. Bei Änderung oder bei einer bereits bestehenden 4 sollen verschiedene Spalten z.B C, E,+ F aus Tabelle 1 in eine Tabelle 2 kopiert werden. Würde nun die 3 zu einer 4 werden, müssen die Texte in die nächste leere Zeile in Tabelle 2 kopiert werden Gruß Uwe ------------------ Uwe Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 Office 2010; Office365 Visual Basic
|
erstellt am: 13. Mrz. 2016 21:22 <-- editieren / zitieren --> Unities abgeben: Nur für uwehinku
Hallo Uwe, Eine Beispieltabelle wäre hilfreich oder Bilder wie es vor nach Änderung aussehen soll So wie Du das beschreibst müßte ja bei einer Änderung die Tabelle 2 jedesmal komplett geändert werden. Was soll den geschehen wenn aus einer 4 eine 5 (oder andere Zahl wird? Was passiert mit nachfolgenden Zeilen die schon eine 4 (mit kopieren) hatten, soll trotzdem der neue Wert 4 unten angefügt werden? Kann es passieren dass die 4 wieder zu einer 3 wird? Müßte die Zeile dann gelöscht werden? Fragen über Fragen ... Grüße Klaus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
uwehinku Mitglied Rentner
Beiträge: 4 Registriert: 13.03.2016
|
erstellt am: 13. Mrz. 2016 22:11 <-- editieren / zitieren --> Unities abgeben:
|
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 Office 2010; Office365 Visual Basic
|
erstellt am: 13. Mrz. 2016 22:50 <-- editieren / zitieren --> Unities abgeben: Nur für uwehinku
Hallo Uwe, war zwar nicht die Exceldatei aber ist ja schnell umgewandelt Beiliegend das Beispiel, allerdings wird das Ereignis nicht bei einem Enter in der Spalte B ausgeführt, sondern wenn der Wert in der Zelle auf 4 geändert wird. Kopiert Zeilen in Tabelle2 Grüße Klaus PS.: Ist der gleiche Code wie oben, den Du anscheinend falsch eingegeben hast. PPS: Für nur am Code interessierte, hier der geänderte Code:
Code:
Private Sub Worksheet_Change(ByVal Von As Range) ' Überprüfe ob auslösendes Element Spalte B mit Inhalt 4 war ' und übergebe die auslösende Zeile zum Kopieren If Von.Count = 1 Then ' nur durchführen wenn eine Zelle geändert wurde If Von.Column = 2 And Von.Value = 4 Then Call B4_Werte_Kopieren(Von.Row) End If End SubSub B4_Werte_Kopieren(Zeile As Long) ' Wenn in Spalte B der Wert 4 eingegeben wurde ' kopiere die Werte der Spalten C, E und F nach Tabelle2 Dim CS As Worksheet ' neue Tabelle Set CS = Worksheets("Tabelle2") ' <= Hier könnte jedes andere Tabellenblatt eingestellt werden Dim NZ As Long ' festlegen der neuen Zeile Dim Spalte As Long ' nächste freie Zeiel suchen, Zeile 1 = Überschrift NZ = 2 While Not IsEmpty(CS.Cells(NZ, 1)) NZ = NZ + 1 Wend Spalte = 1 ' A Cells(Zeile, Spalte).Copy Destination:=CS.Cells(NZ, Spalte) Spalte = 3 ' C Cells(Zeile, Spalte).Copy Destination:=CS.Cells(NZ, Spalte) End Sub
[Diese Nachricht wurde von KlaK am 13. Mrz. 2016 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
uwehinku Mitglied Rentner
Beiträge: 4 Registriert: 13.03.2016
|
erstellt am: 14. Mrz. 2016 06:30 <-- editieren / zitieren --> Unities abgeben:
|
Beverly Mitglied Dipl.-Geologe (Rentner)
Beiträge: 394 Registriert: 11.08.2007
|
erstellt am: 14. Mrz. 2016 08:02 <-- editieren / zitieren --> Unities abgeben: Nur für uwehinku
Hi Uwe, mit folgendem Code kann die 4 in Spalte B auch gleichzeitig in mehrere Zellen eingetragen werden: Code: Private Sub Worksheet_Change(ByVal Target As Range) Dim lngLetzte As Long If Target.Column = 2 Then With Worksheets("Tabelle9") ' letzte belegte Zeile in Spalte A ermitteln lngLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp).Row, .Rows.Count) ' Schleife über alle Eingabezellen For Each Target In Intersect(Target, Columns(2)) If Target = 4 Then ' Zellen Spalte C, D und F in erste freie Zeile kopieren Union(Cells(Target.Row, 3), Cells(Target.Row, 4), Cells(Target.Row, 6)).Copy .Cells(lngLetzte + 1, 1) ' nächste freie Zeile lngLetzte = lngLetzte + 1 End If Next Target End With End If End Sub
------------------ Bis später, Karin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |