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

Vba verschieben in tabellenblatter

Vba verschieben in tabellenblatter
13.09.2017 12:01:35
Thomas
Guten morgen:-)
ich hätte da mal ein anliegen.
in mein Tabellenblatt Daten steht von Spalte A bis M Daten drin. Ab zeile 7
Jetzt möchte ich das wenn in Spalte K das Wort ( Dropdown) Schrauben vorkommt soll die gabze zeile in das Tabellenblatt Werkzeug ab zeile2 eingefügt werden und vom Tabellenblatt ydaten gelöscht und nachgerutscht werden.
Wenn das Wort Wolle vorkommt dann ins Tabellenblatt Textil
und wenn das Wort Cola borkommt ins Tabellenblatt getränke.
Das alles soll über einen Button angesteuert werden.
Ist sowas möglich?
danke

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Vba verschieben in tabellenblatter
13.09.2017 13:10:04
Bernd
Servus,
z.B. so:

Sub sortieren()
Dim wsWerkzeug As Worksheet
Dim wsTextil As Worksheet
Dim wsGetränke As Worksheet
Dim ws As Worksheet
Dim intLZ As Integer
Dim i As Integer
Set ws = ThisWorkbook.Sheets("Tabelle1")
Set wsWerkzeug = ThisWorkbook.Sheets("Werkzeug")
Set wsTextil = ThisWorkbook.Sheets("Textil")
Set wsGetränke = ThisWorkbook.Sheets("Getränke")
intLZ = ws.Cells(Rows.Count, 1).End(xlUp).Row
For i = intLZ To 2 Step -1
Select Case ws.Cells(i, 11).Value
Case Is = "Schrauben"
ws.Rows(i).Copy Destination:=wsWerkzeug.Cells((wsWerkzeug.Cells(Rows.Count, 1).End(xlUp). _
Row + 1), 1)
ws.Rows(i).EntireRow.Delete
Case Is = "Wolle"
ws.Rows(i).Copy Destination:=wsTextil.Cells((wsTextil.Cells(Rows.Count, 1).End(xlUp).Row +  _
1), 1)
ws.Rows(i).EntireRow.Delete
Case Is = "Cola"
ws.Rows(i).Copy Destination:=wsGetränke.Cells((wsGetränke.Cells(Rows.Count, 1).End(xlUp). _
Row + 1), 1)
ws.Rows(i).EntireRow.Delete
Case Else
MsgBox "Benennung nicht bekannt"
End Select
Next i
Set ws = Nothing
Set wsWerkzeug = Nothing
Set wsTextil = Nothing
Set wsGetränke = Nothing
End Sub
Grüße, Bernd
Anzeige
AW: Vba verschieben in tabellenblatter
13.09.2017 13:25:48
Werner
Hallo Thomas,
da ich mir jetzt auch schon die Mühe gemacht habe, auch noch meine Version. Ist ähnlich wie die von Bernd.
Option Explicit
Public Sub Verschieben()
Dim loLetzteQ As Long
Dim loLetzteZ As Long
Dim i As Long
Dim wsZiel As Worksheet
Dim strTreffer As String
With Worksheets("Daten")
loLetzteQ = .Cells(.Rows.Count, 11).End(xlUp).Row
For i = loLetzteQ To 7 Step -1
Select Case .Cells(i, 11).Value
Case "Schrauben"
Set wsZiel = Worksheets("Werkzeug")
strTreffer = .Cells(i, 11).Value
Case "Wolle"
Set wsZiel = Worksheets("Textil")
strTreffer = .Cells(i, 11).Value
Case "Cola"
Set wsZiel = Worksheets("Getränke")
strTreffer = .Cells(i, 11).Value
Case Else
End Select
If Not wsZiel Is Nothing Then
If .Cells(i, 11).Value = strTreffer Then
loLetzteZ = wsZiel.Cells(wsZiel.Rows.Count, 1).End(xlUp).Row + 1
.Rows(i).Copy wsZiel.Cells(loLetzteZ, 1)
.Rows(i).Delete shift:=xlUp
End If
End If
Next i
End With
Set wsZiel = Nothing
End Sub
Gruß Werner
Anzeige
AW: Vba verschieben in tabellenblatter
13.09.2017 15:30:57
Thomas
Werde es morgen beide testen.
@Werner: gibt es bei dir auch eine Fehlermeldungen ? wenn kein das wort nucht vorkommt.
und die formeln sollen nicht mitgenimmen werden sondern als fester Wert
AW: Vba verschieben in tabellenblatter
13.09.2017 15:44:40
Werner
Hallo Thomas,
nö, da kommt keine Fehlermeldung.
Wenn nur die Werte übertragen werden sollen dann so:
Option Explicit
Public Sub Verschieben()
Dim loLetzteQ As Long
Dim loLetzteZ As Long
Dim i As Long
Dim wsZiel As Worksheet
Dim strTreffer As String
With Worksheets("Daten")
loLetzteQ = .Cells(.Rows.Count, 11).End(xlUp).Row
For i = loLetzteQ To 7 Step -1
Select Case .Cells(i, 11).Value
Case "Schrauben"
Set wsZiel = Worksheets("Werkzeug")
strTreffer = .Cells(i, 11).Value
Case "Wolle"
Set wsZiel = Worksheets("Textil")
strTreffer = .Cells(i, 11).Value
Case "Cola"
Set wsZiel = Worksheets("Getränke")
strTreffer = .Cells(i, 11).Value
Case Else
End Select
If Not wsZiel Is Nothing Then
If .Cells(i, 11).Value = strTreffer Then
loLetzteZ = wsZiel.Cells(wsZiel.Rows.Count, 1).End(xlUp).Row + 1
Application.ScreenUpdating = False
.Rows(i).Copy
wsZiel.Cells(loLetzteZ, 1).PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
Application.ScreenUpdating = True
.Rows(i).Delete shift:=xlUp
End If
End If
Next i
End With
Set wsZiel = Nothing
End Sub
Gruß Werner
Anzeige
AW: Vba verschieben in tabellenblatter
13.09.2017 15:48:14
Thomas
wo würde ich denn eine Fehlermeldung einbauen ?
AW: Vba verschieben in tabellenblatter
13.09.2017 15:52:15
Werner
Hallo Thomas,
du schreibst, dass du erst morgen testen kannst. Gleichzeitig schreibst du von einer Fehlermeldung. Was jetzt? Hast du getestet oder nicht? Wenn ja, dann welche Fehlermeldung in welcher Codezeile?
Gruß Werner
AW: Vba verschieben in tabellenblatter
13.09.2017 16:07:32
Thomas
ich hab es schnell getestet. :-)
War zu neugierig ob es geht :-)
Ja wo die fehlermeldung hinkommt.
nach End Select ?
z.b.
Case Else
MSGbox= "keine Daten eingetragen zum übertrag"
weiß aber nicht ob es richtig ist da ich wenig Ahnung in vba habe
Der code vom Bernd hängt leider das Excel auf.
Anzeige
AW: Vba verschieben in tabellenblatter
13.09.2017 16:23:27
Werner
Hallo Thomas,
ich glaube wir haben da ein wenig aneinander vorbei gesprochen. Du willst dass eine Meldung ausgegeben wird, wenn keine Daten übertragen werden, weil die entsprechenden Werte in Spalte K nicht vorhanden sind.
Dann so:
Option Explicit
Public Sub Verschieben()
Dim loLetzteQ As Long
Dim loLetzteZ As Long
Dim i As Long
Dim wsZiel As Worksheet
Dim strTreffer As String
Dim boSchalter As Boolean
With Worksheets("Daten")
loLetzteQ = .Cells(.Rows.Count, 11).End(xlUp).Row
For i = loLetzteQ To 7 Step -1
Select Case .Cells(i, 11).Value
Case "Schrauben"
Set wsZiel = Worksheets("Werkzeug")
strTreffer = .Cells(i, 11).Value
boSchalter = True
Case "Wolle"
Set wsZiel = Worksheets("Textil")
strTreffer = .Cells(i, 11).Value
boSchalter = True
Case "Cola"
Set wsZiel = Worksheets("Getränke")
strTreffer = .Cells(i, 11).Value
boSchalter = True
Case Else
End Select
If Not wsZiel Is Nothing Then
If .Cells(i, 11).Value = strTreffer Then
loLetzteZ = wsZiel.Cells(wsZiel.Rows.Count, 1).End(xlUp).Row + 1
Application.ScreenUpdating = False
.Rows(i).Copy
wsZiel.Cells(loLetzteZ, 1).PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
Application.ScreenUpdating = True
.Rows(i).Delete shift:=xlUp
End If
End If
Next i
If Not boSchalter Then
MsgBox "Keine Daten für Übertrag vorhanden."
End If
End With
Gruß Werner
Anzeige
AW: Vba verschieben in tabellenblatter
13.09.2017 17:55:36
Thomas
Ah super Werner,
bist der beste :-)
Danke
danke auch an Bernd
Gerne u. Danke für die Rückmeldung. o.w.T.
13.09.2017 18:07:41
Werner

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige