Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1100to1104
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
Anzeigen einer Userform in anderem Window
Brigitte
Hi zusammen,
hab ein kleines Problem: ich möchte eine Userform von einer Datei aus starten, im Hintergrund soll aber das Plansheet der Zieldatei angezeigt werden...
Eigentlich sollte es ja so aussehen:

Sub exportieren()
Windows(Zieldatei).Activate
Worksheets(PlanSheet).Activate
AuswertungFrm.show
End Sub

funktioniert aber nicht...
Kann mir jemand sagen, wo der Fehler ist? Hab doch eigentlich die wichtigen Anweisungen beachtet?
Danke, Brigitte
AW: Anzeigen einer Userform in anderem Window
10.09.2009 21:07:47
Jens
Hallo
So?:
Workbooks("Zieldatei").Worksheets("PlanSheet").Activate
AuswertungFrm.show
Gruß aus dem Sauerland
Jens
AW: Anzeigen einer Userform in anderem Window
10.09.2009 21:11:23
chris
Was funktioniert nicht ?
Ist die Form Showmodal False oder true ?
Bei mir gehts so:
Sub test()
Windows("2.xls").Activate
Worksheets("Tabelle1").Activate
UserForm1.Show
End Sub

gruß Chris
AW: Anzeigen einer Userform in anderem Window
10.09.2009 21:33:53
Brigitte
Zieldatei werden über Properties so bestimmt:
Public Property Get Zieldatei() As String
'Auswahl einer geöffneten Datei über Userform mit ComboBox
Zieldatei = DateiWählen.DateiSelect.Text
End Property

Property Get PlanSheet() As String
If ActiveWorkbook.Name Like "Standard*" Then
PlanSheet = "IS-Plan"
Else: PlanSheet = "Termin-Übersicht"
End If
End Property
An fehlenden "" bzw ".xls" wirds also eher nicht liegen...
Showmodal ist true...
Meine Userform wird in der Quelldatei gestartet, im Hintergrund sollte PlanSheet in Zieldatei aktiv sein, aktuell ist allerdings ein Sheet aus der Quelldatei aktiv...
Hatte es auch schon mit

Application.Run ("'" & Zieldatei & "'!Auswerten")
wobei
Function Auswerten()
AuswertungFrm.show
End Function
(ist natürlich eigentlich eine Methode, aber irgendwie funktioniert das bei mir mit Function zuverlässiger!?)
versucht, hat aber auch nicht wirklich geholfen...
Anzeige
AW: Anzeigen einer Userform in anderem Window
11.09.2009 09:50:50
Nepumuk
Hallo Brigitte,
das Userform einer anderen Mappe lässt sich nur so (Run-Methode) aufrufen. Wobei du da keine Funktion verwenden musst, da du ja sowieso keinen Rückgabewert erwartest. Also einfach:
Application.Run "'" & Zieldatei & "'!Auswerten"

Public Sub Auswerten()
    AuswertungFrm.Show
End Sub

Die fehlende Dateiendung wird aber spätestens dann zum Problem, wenn du die Mappe auf einem Rechner laufen lässt, auf dem die Ordneroption "Erweiterungen bei bekannten Dateitypen ausblenden" nicht gewählt ist. Damit erzeugst du dann einen Laufzeitfehler 9.
Gruß
Nepumuk
Anzeige
AW: Anzeigen einer Userform in anderem Window
11.09.2009 11:07:18
Brigitte
Ich hab jetzt mal hier eine gekürzte testbare Version hochgeladen:
https://www.herber.de/bbs/user/64332.xls
Einfach noch irgendne Excel-Mappe nebenbei öffnen, Userform AuswertungFrm und Modul Auswertung auf dem Desktop abspeichern (wird importiert, der Pfad ist bislang auf den Desktop festgelegt) und Makro exportieren drücken...
Eigentlich sollte diese AuswertungFrm vor dem Hintergrund der anderen Mappe öffnen, aber wie gesagt, funktioniert nicht...
Gruß, Brigitte
AW: Anzeigen einer Userform in anderem Window
11.09.2009 12:25:09
Brigitte
Sorry, vergessen, als noch offen zu markieren...
AW: Anzeigen einer Userform in anderem Window
11.09.2009 14:18:07
Nepumuk
Hallo Brigitte,
1. Ein bisschen wirr ist's schon in deinem Modul. Eigentlich werden Klassen in Klassenmodule gepackt , um sie als Klasse kenntlich zu machen. Property-Prozeduren in Standardmodulen sehe ich bei dir zum erstem mal. Ok, wenn du damit zurechtkommst, kannst du es so lassen. Es funktioniert ja im Prinzip. Was nicht so gut ist, dass du die Eigenschaft über Property-Prozeduren mit Get sowohl setzt als auch ließt. Da solltest du doch mit Get & Let arbeiten. Das ist auf alle Fälle übersichtlicher.
2. Aufrufe einer Prozedur ob per Call oder per Run suchen immer erst im eigenen Objekt nach der gerufenen Prozedur. Du musst also den Aufruf des Userforms über die Prozedur "Auswerten" aus dem Projekt raus bringen, aus dem sie aufgerufen wird.
3. Du läufst auf einen Fehler wenn eine Mappe mit nur einer Tabelle geöffnet ist, denn dein Copy will die kopierte Tabelle nach dem zweiten Tabellenblatt in der Zielmappe einfügen.
Dein Projekt lauffähig:
' **********************************************************************
' Modul: Auswertung Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Private mstrFile As String

Sub MakroExport()
    DateiWählen.show
End Sub

Public Property Get Zieldatei() As String
    Zieldatei = mstrFile
End Property

Public Property Let Zieldatei(strFile As String)
    mstrFile = strFile
End Property

Property Get thiswb() As String
    thiswb = ThisWorkbook.Name
End Property

Sub MappenKopieren()
    Copy ("Tabelle2")
    Windows(thiswb).Activate
End Sub

Sub Copy(str As String)
    Worksheets(str).Copy before:=Workbooks(Zieldatei).Sheets(2)
End Sub

Sub exportieren()
    Application.ScreenUpdating = False
    Workbooks(Zieldatei).VBProject.vbcomponents.Import "C:\Dokumente und Einstellungen\" & Application.UserName & "\Desktop\AuswertungFrm.frm"
    Workbooks(Zieldatei).VBProject.vbcomponents.Import "C:\Dokumente und Einstellungen\" & Application.UserName & "\Desktop\Auswertung.bas"
    Call MappenKopieren
    Windows(Zieldatei).Activate
    Worksheets(PlanSheet).Activate
    Application.ScreenUpdating = True
    Application.Run ("'" & Zieldatei & "'!Auswerten")
End Sub

Property Get PlanSheet() As String
    PlanSheet = "Tabelle2"
End Property

'

Public Sub Auswerten()

' AuswertungFrm.show
'End Sub

' **********************************************************************
' Modul: DateiWählen Typ: Userform
' **********************************************************************

Option Explicit

Private Sub bCancel_Click()
    Unload Me
End Sub

Private Sub bOK_Click()
    Auswertung.Zieldatei = DateiSelect.Text
    Unload Me
    Call exportieren
End Sub

Private Sub UserForm_Activate()
    On Error GoTo ErrorToDo
    UpdateCombo DateiSelect
    With DateiSelect
        .ListIndex = 0
    End With
    Me.Caption = "Makros exportieren"
    ErrorToDo:
    If Err.Number = 380 Then
        Unload Me
        MsgBox "Sie haben keine Datei geöffnet!", Title:="Makros exportieren"
    End If
End Sub

Sub UpdateCombo(obj As Object)
    Dim AM As Object
    For Each AM In Application.Workbooks
        With obj
            If Not AM.Name = ThisWorkbook.Name Then
                .AddItem AM.Name
            End If
        End With
    Next AM
End Sub

Gruß
Nepumuk
Anzeige
AW: Anzeigen einer Userform in anderem Window
11.09.2009 16:33:14
Brigitte
Funktioniert super!
Vielen Dank!!!

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige