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

IF THEN ELSE mit FOR Schleife

IF THEN ELSE mit FOR Schleife
02.03.2020 15:49:54
NH
Hallo,
ich bin relativ neu in VBA und habe eine spezielle Frage die mit einer IF THEN ELSE Verzweigung zu tun hat. Ich vermute ich benötige weiterhin noch eine FOR Schleife, weiß aber nicht genau, wie ich diese korrekt einbinde.
Ich möchte folgendes tun:
  • In Spalte F gibt es eine Auswahlliste, je nachdem was dort ausgewählt wurde, möchte ich die Zellen in Spalte B, C und D in ein anderes Worksheet aus einem anderen Excel Dokument kopieren. In dem anderen Excel-Dokument gibt es 3 Worksheets die den Bezeichnungen in der Auswahlliste entsprechen.

  • Das Kopieren und die IF Verzweigung funktionieren grundsätzlich auch. Ich scheitere aktuell daran, dass meine IF Verzweigung immer auf eine Zeile basiert also z.b. immer auf F3 (in Zeile 3 beginnt meine Tabelle). Ich habe daher versucht eine FOR Schleife einzubauen, die allerdings nicht funktioniert.
    Ich hoffe ich habe mich verständlich ausgedrückt. Könnte jemand helfen? Nachfolgend mal der aktuelle Code inkl. der nicht funktionierenden FOR Schleife:
    Sub Test()
    ' Test
    ' Find the last row of data
    FinalRow = Cells(Rows.Count, 1).End(xlUp).Row
    ' Loop through each row
    For x = 3 To FinalRow
    ' Decide based on column F
    ThisValue = Cells(x, 6).Value
    If ThisValue = "MV2400" Then
    Range("B3:B30").Select
    Selection.Copy
    Windows("maschinen.xlsm").Activate
    Worksheets("Mitsubishi MV 2400S").Activate
    NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
    Range("B3:B30").Select
    ActiveSheet.Paste
    Windows("Teilefertigung-WZB.xlsm").Activate
    Range("C3:C30").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("maschinen.xlsm").Activate
    Worksheets("Mitsubishi MV 2400S").Activate
    NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
    Range("C3:C30").Select
    ActiveSheet.Paste
    Windows("Teilefertigung-WZB.xlsm").Activate
    Range("D3:D30").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("maschinen.xlsm").Activate
    Worksheets("Mitsubishi MV 2400S").Activate
    NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
    Range("D3:D30").Select
    ActiveSheet.Paste
    Windows("Teilefertigung-WZB.xlsm").Activate
    ElseIf ThisValue = "MV1200" Then
    Range("B3:B30").Select
    Selection.Copy
    Windows("maschinen.xlsm").Activate
    Worksheets("Mitsubishi MV1200S").Activate
    NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
    Range("B3:B30").Select
    ActiveSheet.Paste
    Windows("Teilefertigung-WZB.xlsm").Activate
    Range("C3:C30").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("maschinen.xlsm").Activate
    Worksheets("Mitsubishi MV1200S").Activate
    NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
    Range("C3:C30").Select
    ActiveSheet.Paste
    Windows("Teilefertigung-WZB.xlsm").Activate
    Range("D3:D30").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("maschinen.xlsm").Activate
    Worksheets("Mitsubishi MV1200S").Activate
    NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
    Range("D3:D30").Select
    ActiveSheet.Paste
    Windows("Teilefertigung-WZB.xlsm").Activate
    ElseIf ThisValue = "Fanuc" Then
    Range("B3:B30").Select
    Selection.Copy
    Windows("maschinen.xlsm").Activate
    Worksheets("Fanuc").Activate
    NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
    Range("B3:30").Select
    ActiveSheet.Paste
    Windows("Teilefertigung-WZB.xlsm").Activate
    Range("C3:C30").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("maschinen.xlsm").Activate
    Worksheets("Fanuc").Activate
    NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
    Range("C3:C30").Select
    ActiveSheet.Paste
    Windows("Teilefertigung-WZB.xlsm").Activate
    Range("D3:D30").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("maschinen.xlsm").Activate
    Worksheets("Fanuc").Activate
    NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
    Range("D3:D30").Select
    ActiveSheet.Paste
    Windows("Teilefertigung-WZB.xlsm").Activate
    End If
    Next x
    End Sub
    

    3
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: IF THEN ELSE mit FOR Schleife
    02.03.2020 19:21:00
    AlterDresdner
    Hallo,
    abgesehen von der grundsätzlichen Richtigkeit der nicht sehr wegweisenden Satzbauteile von Hajo:
    Deine Fragestellung ist nicht klar.
    "In Spalte F gibt es eine Auswahlliste, je nachdem was dort ausgewählt wurde"...
    Was wird dort wo und wie ausgewählt?
    Die For-Schleife ist m.E. Unsinn, denn die Laufvariable x wird in Deinem Code nicht verwendet.
    Du machst als n-mal genau das Gleiche.
    Wenn Du eine (ggfls. anonymisierte) Datei ins Forum stellst und das Ziel klarer formulierst, kann Dir besser geholfen werden.
    Gruß der AlteDresdner
    Anzeige
    AW: IF THEN ELSE mit FOR Schleife
    03.03.2020 08:36:08
    Uwe
    Hallo NH,
    wenn ich das richtig verstanden habe, müsste das reichen:
    Sub Test()
    Dim FinalRow As Long
    Dim strF As String
    Dim strWs As String
    Dim x As Long
    ' Loop through each row
    For x = 3 To Cells(Rows.Count, 1).End(xlUp).Row
    strF = Cells(x, 6).Value ' Decide based on column F
    strWs = Switch(strF = "MV2400", "Mitsubishi MV 2400S", strF = "MV1200", "Mitsubishi MV1200S" _
    , strF = "Fanuc", "Fanuc")
    With Workbooks("maschinen.xlsm").Worksheets(strWs)
    Cells(x, 2).Resize(, 3).Copy .Cells(.Rows.Count, 2).End(xlUp).Offset(1)
    End With
    Next x
    End Sub
    
    Gruß Uwe
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige