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

Dialogfenster für die Auswahl von Arbeit

Dialogfenster für die Auswahl von Arbeit
02.06.2020 17:47:11
Arbeit
Hallo
gibt es ein Dialogfenster für die Auswahl von Arbeitsblättern?
Der Anwender soll mittel Dialogfenster seine Wunschblätter anklicken , die dann einzeln einem Makro zugeführt werden.
Im angehängten Beispiel werden genau zwei bestimmte Blätter behandelt.
Die sollen aber vom Anwender selbst gewählt weden können.
https://www.herber.de/bbs/user/137950.xlsm
Bitte um Vorschläge, insbesondere für das Dialogfenster.
Grüsse von TW

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dialogfenster für die Auswahl von Arbeit
02.06.2020 18:17:40
Arbeit
Hallo TW,
also so ganz verstehe ich deine Frage nicht. Hilft dir vielleicht das weiter?
Sub SelectWorksheet()
CommandBars("Workbook tabs").ShowPopup
End Sub
Viele Grüße
Martin
AW: Dialogfenster für die Auswahl von Arbeit
02.06.2020 18:58:46
Arbeit
Hallo Thomas,
das könntest du mit einer UserForm und z. B. einer Combobox mit den vorh. AB bewerkstelligen! Schau dir mal mein Beispiel an:
https://www.herber.de/bbs/user/137951.xlsm
Servus
Anzeige
AW: Dialogfenster für die Auswahl von Arbeit
02.06.2020 20:10:25
Arbeit
Oh, welch Freude. Lauter kompetente Antworten. Danke Euch allen, danke.
Jetzt habe ich noch eine Zusatzfrage:
Kann man das aufrufenden Makro, also da, wo "Userform1.show" steht, so gestalten, dass der Userformaufruf das Ergebnis der Userformbefragung, also die getroffene Sheets-Auswahl, zurückgibt, sodass man dann im nächsten Schritt das "Sub Eintrag(Arbeitsblatt As Worksheet)" in einer Schleife aufruft?
Der alte Drescher zB ruft das Sub Eintrag direkt in der Userform auf. Ich hätte aber gerne, dass das im Aufrufprogramm, und nicht in der Userform geschieht.
Etwa so:
a=UserForm1.Show
if a= wasweissich then exit sub
for each b in a
Eintrag b
next b
Ich finde das übersichtlicher, weil man gleich sieht, was von der Userform erwartet wird.
Liebe Grüße von TW
Anzeige
AW: Dialogfenster für die Auswahl von Arbeit
02.06.2020 21:41:38
Arbeit
Entschuldige, ich meinte natürlich "der alte Dresdner". Hab mich verschrieben.
AW: Dialogfenster für die Auswahl von Arbeit
02.06.2020 21:43:47
Arbeit
Entschuldige, ich meinte natürlich "der alte Dresdner". Hab mich verschrieben.
AW: Dialogfenster für die Auswahl von Arbeit
07.06.2020 14:06:30
Arbeit
Hallo alter Dresdner,
Danke für Dein Makro.
Deine Lösung ist nicht das, was ich wollte: Die Userform wie eine Funktion sehen. Die Funktion, vom User Informationen abzufragen und diese an die aufrufende Stelle (Sub) zu übergeben, zB als Collection oder Array in diesem Fall.
Offensichtlich habe ich da falsche Vorstellungen, was aber im Grunde weiter nicht so tragisch ist, denn es gibt ja auch eine andere, Deine, Herangehensweise, die Ihre Berechtigung hat, weil sie viele weitere Vorteile liefert.
Das was Du beschrieben hast, ist offensichtlich der richtige Weg, denn er führt zum Ziel. Du rufst mit UF.show diese auf und kehrst mit "unload me" zurück. Ergebnissse sind in übergeordnet positionierten Variablen abgelegt.
Danke nochmals, alter Dresdner. Gruß, Thomas
Anzeige
AW: Dialogfenster für die Auswahl von Arbeit
07.06.2020 19:05:13
Arbeit
Hallo,
Du könntest Dir eine eigene Function oder Eigenschafts-Proc in der Form schreiben, damit könnte es auch gehen...
' ********************************************************************** 
' Modul: Modul1 Typ: Standardmodul 
' ********************************************************************** 

Option Explicit

Public Sub Aufruf()
Dim objWorkSheet As Worksheet
Dim objSheetCollection As Collection
Set objSheetCollection = UserForm1.Form_Show

For Each objWorkSheet In objSheetCollection
    Call Eintrag(objWorkSheet)
Next
Set objSheetCollection = Nothing
End Sub

Public Sub Eintrag(ByRef Arbeitsblatt As Worksheet)
Debug.Print Arbeitsblatt.Name
'''    With Arbeitsblatt 
'''        .Range("B2").Value = "Guten Morgen" 
'''    End With 
End Sub

' ********************************************************************** 
' Modul: UserForm1 Typ: Userform 
' ********************************************************************** 

Option Explicit

Private mobjSheetCollection As Collection

Private Sub CommandButton1_Click()
Dim lngIndex As Long
With ListBox1
    For lngIndex = 0 To .ListCount - 1
        If .Selected(pvargIndex:=lngIndex) Then _
           Call mobjSheetCollection.Add(Item:=Worksheets(.List(pvargIndex:=lngIndex)))
    Next
End With
Call Unload(Object:=Me)
End Sub

Private Sub CommandButton2_Click()
Call Unload(Object:=Me)
End Sub

Private Sub UserForm_Activate()
Dim objWorkSheet As Worksheet
For Each objWorkSheet In Worksheets
    Call ListBox1.AddItem(pvargItem:=objWorkSheet.Name)
Next
End Sub

Private Sub UserForm_Terminate()
Set mobjSheetCollection = Nothing
End Sub

Public Function Form_Show() As Collection
Dim objSheetCollection As Collection
Set objSheetCollection = New Collection
Set mobjSheetCollection = objSheetCollection
Call Show
Set Form_Show = objSheetCollection
Set objSheetCollection = Nothing
End Function


VBA/HTML - CodeConverter für Office-Foren
AddIn für Excel/Word 2000-2010 - komplett in VBA geschrieben von Lukas Mosimann
Projektbetreuung durch mumpel



Code erstellt und getestet in Office 14

Gruß, Mullit
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige