alle Userforms

Moderator: ModerationP

alle Userforms

Beitragvon volkerK1960 » 11. Aug 2018, 13:20

hallo,

wie kann ich in einer schleife alle UserForms durchgehen (so wie bei den Controls For each control in userform1.....)

Gruß Volker
volkerK1960
 

Re: alle Userforms

Beitragvon Flotter Feger » 11. Aug 2018, 13:39

Hallöchen Volker,

du kannst nur geladene Userforms "durchzählen".
Code: Alles auswählen
Sub Mach_was()
Dim UF As Object

Load UserForm1
Load UserForm2

MsgBox UserForms.Count
For Each UF In UserForms
    MsgBox UF.Name
Next
End Sub
VG Sabina

bei mir läuft Win 7 32-Bit - Office 2010 Pro Plus 32-Bit und Office 2016 Pro Plus 32-Bit
Wer auch weiter Hilfe erwartet, sollte sich nicht zu schade sein, ein kurzes Feedback zu geben.
Benutzeravatar
Flotter Feger
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1756
Registriert: 24. Okt 2016, 16:40

Re: alle Userforms

Beitragvon Gast » 11. Aug 2018, 13:54

Hallo,

danke für die antwort.

das ist aber M.....

denn um sie zu laden muss ich sie ja kennen , oder geht das laden auch mit index ?

gruß volker.
Gast
 

Re: alle Userforms

Beitragvon Nepumuk » 11. Aug 2018, 14:12

Hallo Volker,

nein, das geht nicht. Wozu auch? UserForms entstehen ja nicht spontan in Excelmappen sondern werden bewusst vom Programmierer eingefügt.
De fontibus non est disputandum

Gruß
Nepumuk 8-)
Benutzeravatar
Nepumuk
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 14023
Registriert: 10. Aug 2004, 08:40
Wohnort: Regensburg

Re: alle Userforms

Beitragvon Gast » 11. Aug 2018, 14:41

Hallo

das ist schade.

Mal kurz zum hintergrund (der ist aber so verwegen dass ich ihn nicht erwähnen wollte)

Bei uns gibt es ein DruckProgramm welches als Steuerung eine CSV datei bekommt , da ist die Position , Schriftgrösse, und natürlich der Text hinterlegt.

und genau diese CSV datei wollte ich erzeugen ich gehe also pro userform alle controls durch und schreibe position schriftgrösse und caption in eine csv datei (natürlich werden die werte auf dina4 umgerechnet) , soweit funktioniert es auch einigermassen , nun will ich aber mehrere "DruckLayouts" erstellen.

Ich kann natürlich in meinem VBA code fest 50 loads codieren und bei einem on error das laden abbrechen

Viele Grüsse und danke für die Antworten


Volker.
Gast
 

Re: alle Userforms

Beitragvon Fen » 11. Aug 2018, 15:01

Hallo,

wenn der Zugriff auf das VBA-Projekt freigegeben ist, kann man alle Module, also auch die vorhandenen Userforms auslesen.

mfg
Fen
 

Re: alle Userforms

Beitragvon knobbi38 » 11. Aug 2018, 15:15

Hallo,

entweder wie von Fen beschrieben (siehe auch http://www.cpearson.com/excel/vbe.aspx)
oder, da die Anzahl der Userforms i.d.R. statisch ist, die Namen der Userforms in einem globalem Array vorrätig halten.

Ulrich
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 338
Registriert: 02. Jul 2015, 14:23

Re: alle Userforms

Beitragvon Storax » 11. Aug 2018, 16:02

Often the original poster is rather clueless, helping them on the question is only spoon feeding them,
and there is little to no chance the question will help anyone in the future.
Press any key to continue - or any other key to abort.
Benutzeravatar
Storax
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 2856
Registriert: 22. Okt 2013, 18:18

Re: alle Userforms

Beitragvon Ralf A » 12. Aug 2018, 10:18

Hi Volker,

und genau diese CSV datei wollte ich erzeugen ich gehe also pro userform alle controls durch und schreibe position schriftgrösse und caption in eine csv datei


Das ist in der Tat verwegen. Du speicherst Daten in 50 Userforms? Das glaube ich jetzt nicht. Vermutlich würde eine Form genügen, in der Du die Daten auslesen musst (weil die ja ihre Daten auch irgendwoher holt). Möglicherweise brauchst Du nicht einmal diese eine Form... aber... da keiner Dein Projekt kennt, lässt sich dazu aucvh nicht viel sagen...
Ciao, Ralf
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.

Bild
Ralf A
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 207
Registriert: 17. Mär 2018, 11:47

Re: alle Userforms

Beitragvon Gast » 12. Aug 2018, 13:56

Hallo Ralf,

neeee ich habe in den Userforms keine Daten es sind ja nur LayOuts, die daten kommen durch das Druckprogramm welches aber zur steuerung (welches Feld an welche Position) dies CSV datei benötigt , und 50 sind es bestimmt auch nicht . das war ja nur zum erkennen wieviele UserForms ich habe (Userform1 load 2 load usw und dann kommt ja irgendwann der error , dann weiss ich wieviel ich habe und habe sie alle geladen um die schleife auszuführen)

Mittlerweile bin ich allerdings der Meinung das nicht mit UserForms sonder im Worksheet zu machen (die Seitenansicht und das verwenden von Makros hat mit dazu verleitet)

dazu habe ich nun eine neue Frage: kann man die Seitenbegrenzung (die kommt bei mir immer nach dem Besuch der Seitenansicht) per VBA oder anders einschalten ?


Viele Grüße und einen schönen Rest Sonntag


Volker.
Gast
 

Re: alle Userforms

Beitragvon Fennek » 12. Aug 2018, 14:56

Hallo,

die Ausgangsfrage war ja "welche Module gibt es in einer Datei".

Aus "Zufall" habe ich dies gefunden:

Document=DieseArbeitsmappe/&H00000000
Document=Tabelle2/&H00000000
Document=Tabelle3/&H00000000
Module=Modul1
Module=Modul2


Man benötigt keinen VBA-Code, sondern nur den Editor: Ganz am Ende des vbaProject.bin stehen die Namen der enthaltenen Module.

mfg

(Ergänzung: auch wenn man im Bereich "Info" die persönlichen Daten entfernt, bleiben oft in "printerSettings.bin" Spuren erhalten)
(Ergänzung II: Die XL-Version wird angezeigt: <AppVersion>16.0300</AppVersion>
aber zum ersten Mal habe ich UUID des Types 1 gesehen:
<property fmtid="{D5CDD505-2E9C-101B-9397-08002B2CF9AE}" pid="3" name="_AdHocReviewCycleID"><vt:i4>1603619029</vt:i4></property>)
Fennek
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 474
Registriert: 12. Feb 2016, 18:56

Re: alle Userforms

Beitragvon Mullit » 12. Aug 2018, 17:40

Hallo,
Storax hat geschrieben:
knobbi38 hat geschrieben:.. (siehe auch http://www.cpearson.com/excel/vbe.aspx)
...

if-chip-pearsons-website-ever-helped-you

damn, thanx Storax für den Link, :!: :cry: das tut mir leid... :cry: :cry: :cry: ...wußte ich noch nicht, hab seine Seite oft grad bei kompl. Themen als Referenz genutzt, sicherlich einer der führenden Experten und Gigant in der VBA-Programmierung, stark, daß Bill Jelen, Greg Truby u.a. sich für den Erhalt von Chips Webpage eingesetzt haben... :!: :!: :!: ... mein Beileid an die Angehörigen.... :cry:

...Ein bewegender Nachruf....

https://excelnova.org/2018/05/rip-chip-pearson/

------------------------------------------------------------------------------------------------------------------------------------------------

Und vielleicht nochmal ein Bsp. in Anlehnung an sein VBE Tutorial, um alle Forms im VBE zu durchlaufen und auszulesen, das ginge über die Designer-Eigenschaft, wird Dir im Bsp.-Code dann im Direkt-Fenster ausgegeben, müsstest Du für Deine Text-Dats noch anpassen...

Code: Alles auswählen
Option Explicit

Public Sub test()
   Const vbext_ct_MSForm As Long = 3
   Dim objVBComponent As Object
   Dim objControl As MSForms.Control
   For Each objVBComponent In Application.VBE.ActiveVBProject.VBComponents
       With objVBComponent
            If .Type = vbext_ct_MSForm Then
               For Each objControl In .Designer.Controls
                   With objControl
                       Debug.Print .Name, .Left, .Top, .Width, .Height
                       Select Case TypeName(objControl)
                             Case Is = "CommandButton", Is = "CheckBox", Is = "OptionButton", Is = "Frame"
                                Debug.Print .Caption, .Font.Size
                             Case Is = "TextBox", Is = "ListBox", Is = "ComboBox"
                                Debug.Print .Font.Size
                       End Select
                   End With
               Next
            End If
       End With
   Next
End Sub

Gruß, Mullit
Mullit
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 846
Registriert: 16. Jan 2015, 19:31

Re: alle Userforms

Beitragvon snb » 12. Aug 2018, 20:38

Code: Alles auswählen
Sub M_snb()
    For Each it In ThisWorkbook.VBProject.VBComponents
       If it.Type =3 Then MsgBox it.Name
    Next
End Sub


Code: Alles auswählen
Sub M_snb()
    For Each it In ThisWorkbook.VBProject.VBComponents
       If it.Type =3 Then c00=c00 & vblf & it.Name
    Next
    msgbox c00
End Sub


Schau mal: http://www.snb-vba.eu/VBA_Excel_VBproject_en.html
snb
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 6064
Registriert: 25. Sep 2014, 16:37

Re: alle Userforms

Beitragvon Gast » 13. Aug 2018, 12:15

Hallo,

habe nun ein richtig schlechtes Gewissen , weil ihr Euch noch so viel Mühe macht obwohl ich mich ja schon gegen die UserForm Lösung entschieden habe .

Aber es ist gut zu wissen wie das geht.

Mittlerweile bin ich sogar der Meinung , dass eigentlich WORD der viel bessere Platz für dieses Projekt wäre (aber der erste blich auf WORD.VBA hat mich dazu gebracht es erst in EXCEL zu machen )


Vielen Dank nochmals


Volker.
Gast
 


Zurück zu Excel Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot], Hajo_Zi, Klaus-Dieter, lupo1, ReneLich, silangan und 20 Gäste