Bestimmte Spalten einer Zeite kopieren

Bild

Betrifft: Bestimmte Spalten einer Zeite kopieren
von: Martin
Geschrieben am: 16.05.2015 20:05:24

Hallo liebe Community,
ich bin gerade dabei mir VBA-Kenntnisse anzueignen mit mehr oder weniger Erfolg :)
Denke bei der Sub werden einige den Kopf schütteln, aber ist halt mit meinen geringen Kenntnissen etwas zusammengestückelt.
Gerade stehe ich vor folgendem Problem. Ich habe in Tabelle1 Daten verschiedener Abteilungen und Ressourcen gesammelt. In der Tabelle7 möchte ich, wenn zwei Kriterien erfüllt sind (Kann ich per dropdown ändern), bestimmte Zellen einer Zeile von Tabelle1 per Button kopieren. Die Kriterien sind: KST-A, B, C,.. (Anlagengruppen) und 1,2,3,4 (Anlagengruppen der Aufträge). Ich habe es nun soweit hinbekommen, dass jeweils die ganze Zeile kopiert wird. Ich möchte aber nur B, C, E, F,G kopieren.
Danke schon mal für jede Hilfe.

Option Explicit
Sub DatenAusTabelleKopieren()
    Dim Zeile As Long
    Dim Zeilemax As Long
    Dim n As Long
    Dim intOben As Long
    Dim intLinksGruppe As Long
        
    intOben = Application.Names("StartTabelle").RefersToRange.Row - 1
        
    Tabelle7.Range("A4:J200").ClearContents
    With Tabelle1
        Zeilemax = .UsedRange.Rows.Count
        n = 1
        For Zeile = 2 To Zeilemax
        If Tabelle7.Cells(1, 4).Value = "KST-A" And .Cells(Zeile, 1).Value = 1 Then
        .Rows(Zeile).Copy
        Tabelle7.Rows(intOben + n).PasteSpecial xlValues
        n = n + 1
        ElseIf Tabelle7.Cells(1, 4).Value = "KST-B" And .Cells(Zeile, 1).Value = 2 Then
        .Rows(Zeile).Copy
        Tabelle7.Rows(intOben + n).PasteSpecial xlValues
        n = n + 1
        ElseIf Tabelle7.Cells(1, 4).Value = "KST-C" And .Cells(Zeile, 1).Value = 3 Then
        .Rows(Zeile).Copy
        Tabelle7.Rows(intOben + n).PasteSpecial xlValues
        n = n + 1
        ElseIf Tabelle7.Cells(1, 4).Value = "KST-D" And .Cells(Zeile, 1).Value = 4 Then
        .Rows(Zeile).Copy
        Tabelle7.Rows(intOben + n).PasteSpecial xlValues
        n = n + 1
        End If
        Next Zeile
    End With
    
    
End Sub

Bild

Betrifft: AW: Bestimmte Spalten einer Zeite kopieren
von: Gerd L
Geschrieben am: 17.05.2015 11:10:51
Hallo Martin,
ich habe unterstellt, dass "vorne" u. am Stück in Tabelle7 eingefügt werden soll.

Sub DatenAusTabelleKopierenII()
    
    
    Dim Zeile As Long, n As Long, intOben As Long
    
    intOben = Application.Names("StartTabelle").RefersToRange.Row - 1
    Tabelle7.Range("A4:J200").ClearContents
    With Tabelle1
        
        For Zeile = 2 To .UsedRange.Rows.Count
        
            Select Case Tabelle7.Cells(1, 4).Value
                
                Case "KST-A", "KST-B", "KST-C", "KST-D"
                    Select Case .Cells(Zeile, 1).Value
                    Case 1, 2, 3, 4
                        n = n + 1
                        Union(.Range(.Cells(Zeile, 2), .Cells(Zeile, 3)), _
                        .Range(.Cells(Zeile, 5), .Cells(Zeile, 7))).Copy
                        Tabelle7.Cells(intOben + n, 1).PasteSpecial xlPasteValues
                        Application.CutCopyMode = False
                    End Select
            
            End Select
        
        Next Zeile
    
    End With
    
    
End Sub
Gruß Gerd

Bild

Betrifft: AW: Bestimmte Spalten einer Zeite kopieren
von: Martin
Geschrieben am: 17.05.2015 12:16:56
Hallo Gerd,
danke für deine Hilfe, ich habe dein Programm getestet.
Es gibt mir die richtigen Spalten aus, finde ich gut, aber leider für alle Gruppen A,B,C,D / 1,2,3,4 auf einmal, egal was ich in Tabelle 7 einstelle.
Wahrscheinlich hab ich mich auch ungenau ausgedrückt. Immer nur bei KST-A und 1 / KST-B und 2 / usw. sollten die Werte zurückgegeben werden. Denke daran hapert es, oder ich verstehe nicht (kann gut sein), wie er die beiden Werte verheiratet.
Ich habe noch einen Vorschlag von jemand bekommen, der funktioniert.
Wenn du trotzdem prüfst was nicht geklappt hat, sehe ich mir das gerne an.
Gruß,
Martin

Bild

Betrifft: AW: Bestimmte Spalten einer Zeite kopieren
von: Gerd L
Geschrieben am: 17.05.2015 15:44:02
Hallo Martin,
ich hatte deine Beschreibung nur ungenau gelesen.
Ersetze
Case 1, 2, 3, 4
durch
Case Asc(Right$(Tabelle7.Cells(1, 4).Value, 1)) - 64
Gruß Gerd

Bild

Betrifft: AW: Bestimmte Spalten einer Zeite kopieren
von: Martin
Geschrieben am: 17.05.2015 16:32:54
Hallo Gerd,
hab es gleich getestet und es funktioniert bestens :)
Vielen Dank für deine Hilfe,
Martin

Bild

Betrifft: AW: Bestimmte Spalten einer Zeite kopieren
von: Uwe Küstner
Geschrieben am: 17.05.2015 11:13:07
Hallo Martin,
teste mal so:

Sub DatenAusTabelleKopieren()
  Dim Zeile As Long
  Dim Zeilemax As Long
  Dim n As Long
  Dim intOben As Long
  Dim intLinksGruppe As Long
  Dim rngSpalten As Range
  
  intOben = Application.Names("StartTabelle").RefersToRange.Row - 1
      
  Tabelle7.Range("A4:J200").ClearContents
  With Tabelle1
    Zeilemax = .UsedRange.Rows.Count
    Set rngSpalten = .Range("B:B,C:C,E:E,F:F,G:G")
    n = 1
    For Zeile = 2 To Zeilemax
      If Tabelle7.Cells(1, 4).Value = "KST-A" And .Cells(Zeile, 1).Value = 1 Or _
         Tabelle7.Cells(1, 4).Value = "KST-B" And .Cells(Zeile, 1).Value = 2 Or _
         Tabelle7.Cells(1, 4).Value = "KST-C" And .Cells(Zeile, 1).Value = 3 Or _
         Tabelle7.Cells(1, 4).Value = "KST-D" And .Cells(Zeile, 1).Value = 4 Then
            Application.Intersect(rngSpalten, .Rows(Zeile)).Copy
            Tabelle7.Cells(intOben + n, 1).PasteSpecial xlValues
            n = n + 1
      End If
    Next Zeile
  End With
End Sub
Gruß Uwe

Bild

Betrifft: AW: Bestimmte Spalten einer Zeite kopieren
von: Martin
Geschrieben am: 17.05.2015 12:23:27
Guten Morgen Uwe,
vielen Dank für deine Hilfe, dein Programm funktioniert sehr gut.
Ich bin nicht faul im Googeln und suchen, aber Set rngSpalten habe ich nicht gefunden / gesehen.
Manchmal sucht man auch nach dem falschen, wenn man nicht genau weiß, was.
Gruß,
Martin

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Bestimmte Spalten einer Zeite kopieren"