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

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

  • 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
    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

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige