Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Sheetauswahl durch Userform und Rückgabewert

Forumthread: Sheetauswahl durch Userform und Rückgabewert

Sheetauswahl durch Userform und Rückgabewert
10.10.2016 16:15:54
Heinz
Hallo Leute
Ich stehe irgendwie auf dem Schlauch und bitte um Hilfe:
Die Aufgabe ist:
Es eine Datei, Name: convert_languages.xlsm geöffnet die das Makro beinhaltet.
Diese soll über Dateiauswahl (GetOpenFilename) eine weitere Datei öffnen und dann die darin befindlichen Sheets auswählen (Userform: LSTSheets) und das ausgewählte Sheet weiterverabeiten.
Das Makro besteht aus:
a. Application.GetOpenFilename zum Öffnen der Datei
b. einer nachgeschaltete Listbox zur Auswahl der Sheets in der in a neu geöffneten Datei, Makrodatei soll nicht angezeigt werden
c. Der Aufrufroutine für das Userform
d. Der Verarbeitungsroutine
Schritt A funktioniert.
Ich habe jetzt das Problem der Rückgabe aus dem Userform an das Modul ErgebnisVerarbeiten mit den ausgewählten Sheets aus dem Userform
Mein Weg:
  • Aufrufmodul:
    Sub WorksheetAuswahl()
    Dim var As String
    Dim wbTarget As Workbook
    Dim wsTarget As Worksheet
    LstSheets.Show ' ok
    '--> Wie bekomme ich die Auswahl (workbook / worksheet) aus dem Userform im Sinne von
    ' wsTarget = wbTarget.Worksheets(LstSheets)
    ' Set wsTarget = wbTarget.Sheets(LstSheets.value) klappt nicht.

    Call ErgebnisVerarbeiten(wbTarget,wsTarget)
    End Sub

  • Das Userform funktioniert:
  • 
    Private Sub cmdCancel_Click()
    Unload Me
    End Sub
    

    Private Sub cmdOK_Click()
    On Error GoTo ErrorHandler
    MsgBox " Auswahl : " & LstSheets ' ok
    Unload Me
    Exit Sub
    ErrorHandler:
    MsgBox "Keine Tabelle ausgewählt ", vbInformation, "Datei auswählen"
    Exit Sub
    End Sub

    Private Sub LstSheets_Click()
    End Sub

    Private Sub UserForm_Activate()
    Dim Selected_Workbook As Workbook
    Dim wks As Worksheet
    Dim Anzahl As Single
    Dim ActiveName As String
    Dim I As Integer
    Anzahl = Application.Workbooks.Count ' Zahl der offenen WB
    For I = 1 To Anzahl ' durch alle sheets
    If Workbooks(I).Name = "convert_languages.xlsm" Then ' die makrodatei nicht
    Else
    ActiveName = Workbooks(I).Name
    End If
    Next I
    Set Selected_Workbook = Workbooks(ActiveName) ' ausgewähltes WKB
    For Each wks In Selected_Workbook.Sheets 'durch alle sheets und Namen in
    LstSheets.AddItem wks.Name ' listbox schreiben
    Next ' ok Anzeige und Auswahl richtig
    End Sub

  • Anzeige

    2
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Sheetauswahl durch Userform und Rückgabewert
    10.10.2016 16:30:33
    Heinz
    Irgenwie hat es das Ende des letzten Beitrags abgeschnitten.
    Das Problem ist die Rückgabe der ausgewählten Werte aus dem Userform in die aufrufende Prozedur um dort mit den Werten weiter zu arbeiten. Irgendwie raffe ich das nicht. Habe es auch schon mit Public probiert, geht aber nicht.
    Herzlichen Dank für die Hilfe.
    Heinz
    Anzeige
    AW: Sheetauswahl durch Userform und Rückgabewert
    10.10.2016 19:55:56
    ChrisL
    Hi Heinz
    Ich denke das Problem ist nicht das Tabellenblatt, sondern die Mappe (nicht definiert).
    Set wbTarget = Workbooks("Mappe1.xlsm")
    Set wsTarget = wbTarget.Worksheets(LstSheets)
    Die Gretchenfrage wird der "unbekannte" Mappennamen sein. Wie du schreibst ermittelst du die Mappe mittels GetOpenFilename, insofern dürfte die Mappe eigentlich nicht unbekannt sein.
    Lösungsansatz 1:
    Direkt nach GetOpenFilename übergibst du an eine Variable
    Set wbTarget = Workbooks(DeineGetOpenDatei)
    wbTarget definierst du als öffentliche Variable d.h. in ein Standardmodul (nicht Modul vom Userform)
    Public wbTarget As Workbook
    Lösungsansatz 2:
    Du machst die ListBox mehrspaltig und speicherst den Dateinamen in einer versteckten Spalte.
    Lösungsansatz 3:
    Du wiederholst die Mappensuche. Wobei mir die Suchroutine spanisch vorkommt. Ich interpretiere es wird eine "zufällige" Datei ausgewählt (mit Ausnahme von convert_languages.xlsm).
    Anzahl = Application.Workbooks.Count                      ' Zahl der offenen WB
    For I = 1 To Anzahl                                       ' durch alle sheets
    If Workbooks(I).Name = "convert_languages.xlsm" Then  ' die makrodatei nicht
    Else
    ActiveName = Workbooks(I).Name
    End If
    Next I
    Set wbTarget = Workbooks(ActiveName) 
    

    cu
    Chris
    Anzeige
    ;

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Entdecke mehr
    Finde genau, was du suchst

    Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

    Suche nach den besten Antworten
    Unsere beliebtesten Threads

    Entdecke unsere meistgeklickten Beiträge in der Google Suche

    Top 100 Threads jetzt ansehen
    Anzeige