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