Suche nach "Teil-String" - Name des Arbeitsblatts

Dieses Thema im Forum "Visual Basic" wurde erstellt von Sommerliebe, 16 März 2017.

  1. Sommerliebe

    Sommerliebe
    Expand Collapse
    New Member

    Registriert seit:
    22 Februar 2017
    Beiträge:
    9
    Zustimmungen:
    0
    Hallo Zusammen,

    ich arbeite an einem Tool mittels VBA. An einem Punkt komme ich leider nicht mehr voran.

    Es gibt zwei Arbeitsmappen. In der Arbeitsmappe1 werden gezielt Kopien von Arbeitsblättern aus Arbeitsmappe2 erstellt und hinzugefügt. Hierfür muss die Nutzerin von der Arbeitsmappe1 aus einer DropDown-Liste den entsprechenden Monat wählen und den Button "Starte Übertragung" betätigen. Soweit funktioniert es auch, aber es bezieht sich nur auf das aktuelle Jahr 2017, siehe Code.

    Code:
    Sub Uebertrag()
    Dim QWB As Workbook, ZWB As Workbook
    Workbooks.Open "C:\Stundenmeldung_Speicherort\20170224_Stundenmeldung_V2 - Kopie.xlsm"         ' Wenn die Datei erst geöffnet werden muss
    Set QWB = Workbooks("20170224_Stundenmeldung_V2 - Kopie.xlsm")          ' Quelle, aus der die Tabelle41 kopiert werden soll
    Set ZWB = ThisWorkbook                  ' Ziel, Workbook mit diesem Makro
    Dim QWS As Worksheet, ZWS As Worksheet
    Dim strMonat As String
    
    If ThisWorkbook.ActiveSheet.Range("C3").Value = "Januar" Then
    Set QWS = QWB.Worksheets("2017-01")   ' Quelle
    Set ZWS = ZWB.Worksheets("Übertragung")    ' Ziel
    QWS.Copy after:=ZWS                 ' oder before
        Workbooks("20170224_Stundenmeldung_V2 - Kopie.xlsm").Close          ' Wenn die Datei wieder geschlossen werden soll
    End If
    
    If ThisWorkbook.ActiveSheet.Range("C3").Value = "Februar" Then
    Set QWS = QWB.Worksheets("2017-02")   ' Quelle
    Set ZWS = ZWB.Worksheets("Übertragung")    ' Ziel
    QWS.Copy after:=ZWS                 ' oder before
        Workbooks("20170224_Stundenmeldung_V2 - Kopie.xlsm").Close          ' Wenn die Datei wieder geschlossen werden soll
    End If
    
    If ThisWorkbook.ActiveSheet.Range("C3").Value = "März" Then
    Set QWS = QWB.Worksheets("2017-03")   ' Quelle
    Set ZWS = ZWB.Worksheets("Übertragung")    ' Ziel
    QWS.Copy after:=ZWS                 ' oder before
        Workbooks("20170224_Stundenmeldung_V2 - Kopie.xlsm").Close          ' Wenn die Datei wieder geschlossen werden soll
    End If
    
    If ThisWorkbook.ActiveSheet.Range("C3").Value = "April" Then
    Set QWS = QWB.Worksheets("2017-04")   ' Quelle
    Set ZWS = ZWB.Worksheets("Übertragung")    ' Ziel
    QWS.Copy after:=ZWS                 ' oder before
        Workbooks("20170224_Stundenmeldung_V2 - Kopie.xlsm").Close          ' Wenn die Datei wieder geschlossen werden soll
    End If
    
    If ThisWorkbook.ActiveSheet.Range("C3").Value = "Mai" Then
    Set QWS = QWB.Worksheets("2017-05")   ' Quelle
    Set ZWS = ZWB.Worksheets("Übertragung")    ' Ziel
    QWS.Copy after:=ZWS                 ' oder before
        Workbooks("20170224_Stundenmeldung_V2 - Kopie.xlsm").Close          ' Wenn die Datei wieder geschlossen werden soll
    End If
    
    If ThisWorkbook.ActiveSheet.Range("C3").Value = "Juni" Then
    Set QWS = QWB.Worksheets("2017-06")   ' Quelle
    Set ZWS = ZWB.Worksheets("Übertragung")    ' Ziel
    QWS.Copy after:=ZWS                 ' oder before
        Workbooks("20170224_Stundenmeldung_V2 - Kopie.xlsm").Close          ' Wenn die Datei wieder geschlossen werden soll
    End If
    
    If ThisWorkbook.ActiveSheet.Range("C3").Value = "Juli" Then
    Set QWS = QWB.Worksheets("2017-07")   ' Quelle
    Set ZWS = ZWB.Worksheets("Übertragung")    ' Ziel
    QWS.Copy after:=ZWS                 ' oder before
        Workbooks("20170224_Stundenmeldung_V2 - Kopie.xlsm").Close          ' Wenn die Datei wieder geschlossen werden soll
    End If
    
    If ThisWorkbook.ActiveSheet.Range("C3").Value = "August" Then
    Set QWS = QWB.Worksheets("2017-08")   ' Quelle
    Set ZWS = ZWB.Worksheets("Übertragung")    ' Ziel
    QWS.Copy after:=ZWS                 ' oder before
        Workbooks("20170224_Stundenmeldung_V2 - Kopie.xlsm").Close          ' Wenn die Datei wieder geschlossen werden soll
    End If
    
    If ThisWorkbook.ActiveSheet.Range("C3").Value = "September" Then
    Set QWS = QWB.Worksheets("2017-09")   ' Quelle
    Set ZWS = ZWB.Worksheets("Übertragung")    ' Ziel
    QWS.Copy after:=ZWS                 ' oder before
        Workbooks("20170224_Stundenmeldung_V2 - Kopie.xlsm").Close          ' Wenn die Datei wieder geschlossen werden soll
    End If
    
    If ThisWorkbook.ActiveSheet.Range("C3").Value = "Oktober" Then
    Set QWS = QWB.Worksheets("2017-10")   ' Quelle
    Set ZWS = ZWB.Worksheets("Übertragung")    ' Ziel
    QWS.Copy after:=ZWS                 ' oder before
        Workbooks("20170224_Stundenmeldung_V2 - Kopie.xlsm").Close          ' Wenn die Datei wieder geschlossen werden soll
    End If
    
    If ThisWorkbook.ActiveSheet.Range("C3").Value = "November" Then
    Set QWS = QWB.Worksheets("2017-11")   ' Quelle
    Set ZWS = ZWB.Worksheets("Übertragung")    ' Ziel
    QWS.Copy after:=ZWS                 ' oder before
        Workbooks("20170224_Stundenmeldung_V2 - Kopie.xlsm").Close          ' Wenn die Datei wieder geschlossen werden soll
    End If
    
    If ThisWorkbook.ActiveSheet.Range("C3").Value = "Dezember" Then
    Set QWS = QWB.Worksheets("2017-12")   ' Quelle
    Set ZWS = ZWB.Worksheets("Übertragung")    ' Ziel
    QWS.Copy after:=ZWS                 ' oder before
        Workbooks("20170224_Stundenmeldung_V2 - Kopie.xlsm").Close          ' Wenn die Datei wieder geschlossen werden soll
    End If
    
    End Sub
    Ich möchte, dass das Tool noch für die nächsten Jahre nutzbar ist und man nicht im Code/Makro immer das Jahr von 2017 auf 2018 etc. ändern muss.
    Also müsste man ja nach "-01" und nicht "2017-01" für den Januar suchen.
    Die Monatsblätter aus der Arbeitsmappe2 heißen nämlich: "2017-01" "2017-02" "2017-03" .... Es werden jedoch selbstverständlich im nächsten Jahr weitere Arbeitsblätter erstellt, die "2018-01" "2018-02"... genannt werden. Deswegen soll immer nur nach dem Monat gesucht werden. Somit wäre das Tool zeitlich unbegrenzt nutzbar.

    Ich denke dass es eigentlich sehr einfach ist, leider komme ich nicht auf die Lösung.
    Bin dankbar für jede Hilfe!

    LG
    Jolie
     
    #1 Sommerliebe, 16 März 2017
    Zuletzt bearbeitet: 16 März 2017
Die Seite wird geladen...

Diese Seite empfehlen