MS-Office-Forum
Google
   

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Word
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads Der Renner, 11 Entwicklertools für Access, Tipps & Trick und offene Datenbanken zum einzigartigen Preis.
Themen-Optionen Ansicht
Alt 14.07.2011, 10:30   #1
Lukasdiehl
Neuer Benutzer
Neuer Benutzer
Standard VBA - Dynamische Multipage

Hallo Freunde,

ich wende mich mal wieder in einer Zeit größter Not und Brett-vor-dem-Kopf-Gefühlen an euch. Inzwischen fühle ich mich dank viel Try&Error ziemlich sicher was meine VBA-Kentnisse angeht - Nicht zuletzt dank einiger Klasse Hinweisen aus diesem Forum. Ich komme zum Punkt:

Ich lese Daten aus einer Access-Datenbank ein. Es geht um Aufträge, die unter Umständen mehrere Elemente enthalten. Die Anzahl der Elemente ist nicht immer gleich und kann zwischen 1 und 130 verschiedenen Posten (= einzelne Proben)variieren. Der Sinn des ganzen ist die Automatisierung einer Berichterstellung, die mithilfe meines VBA-Tools vorgenommen wird.

Pro Auftrag gibt es nun eine Multipage, die dynamisch mit Pages gefüllt werden soll. Das klappt soweit auch schon prima (Bisher lasse ich mir zu Testzwecken noch immer 5 fixe Pages ausgeben). In dieser neu erstellten Page müssen jetzt nun natürlich editierbare Textboxen mit eindeutiger Benennung angelegt werden, die ich mit den spezifischen Auftragsdaten füttere. Und da ist der Haken... es passiert nichts. Die Multipage wird zwar gefüllt, die Textboxen erscheinen jedoch nicht. Hier der Code mit einer einzigen Textbox:

Code:

Public Function Expand_Multipage()

Dim i As Integer

For i = 2 To 5
    With Userform_Berichtautomation.MultiPage_Proben
        .Add ("MP_Proben_" + (Format(i, "00"))), "Probe " & i ' Fügt eine Page ein und benennt sie logisch (MP_Proben_XX)
                With .Pages("MP_Proben_" + (Format(i, "00"))).Add("Forms.Textbox.1", "txtbox_auftraege_08_"  + (Format(i, "00")), True) ' Die Textbox soll natürlich auch logisch benannt werden!
            .Top = 9
            .Left = 20
            .Height = 16
            .Width = 192
            .Text = "Check"
        End With
    End With
Next

End Function
Ich vermute, dass bei dsieser Anweisung

Code:

With .Pages("MP_Proben_" + (Format(i, "00"))).Add("Forms.Textbox.1", "txtbox_auftraege_08_"  + (Format(i, "00")), True)
Irgendwas nicht stimmt. Da ich jedoch im Vorfeld die Page eindeutig benannt habe, verstehe ich das Problem nicht. Ich werde jetzt erstmal an anderer Stelle weiterarbeiten und hoffe, ihr könnt mir helfen.

LG Lukas
Lukasdiehl ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.07.2011, 10:34   #2
Lukasdiehl
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hier noch ein bildchen. Die MUltipage um die es geht ist die mit den Probenreitern. Seite 2-5 sind jedoch komplett leer.
Angehängte Grafiken
Dateityp: jpg automation1.JPG (85,7 KB, 19x aufgerufen)
Lukasdiehl ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.07.2011, 12:26   #3
Hotte
MS-Office-Forum Team MS-Office-Forum Team
Standard

Hi,

also bei mir erscheinen die Textboxen. Du kanst aber diesen Code so nur einmal ausführen. Den dan werden die Textboxen nicht mehr "eindeutig".

Also da solltest Du drauf achten - ggf. etwas von dem Auftrag selbst in die Bezeichnung einfügen - einen Nummernteil oder so.

__________________

Gruß
Hotte


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


Win XP; Win 7 und 8; Office 2003 bis 2010 || Hilfe bei Zitierstilen für Word...
---------------------------------------------------------------------------------------------------------------------------
Wenn du eine weise Antwort verlangst, mußt du vernünftig fragen.
Johann Wolfgang von Goethe (1749-1832), dt. Dichter
Hotte ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.07.2011, 14:04   #4
Lukasdiehl
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Ich habs jetzt mal etwas verkompliziert bzw meinen Fehler eventuell reproduzierbarer gemacht...

Code:

Public Function Expand_Multipage()

Dim MP_Proben_Page As Long
Dim MP_Proben_Page_Count As Long
Dim pagecount As Long

pagecount = Userform_Berichtautomation.MultiPage_Proben.Pages.Count
For i = 1 To pagecount
Userform_Berichtautomation.MultiPage_Proben.Pages.Remove (Userform_Berichtautomation.MultiPage_Proben.Pages.Count - 1)
Next

If IsNull(Userform_Berichtautomation.lstbox_aufträge.List(Userform_Berichtautomation.lstbox_aufträge.ListIndex, 4)) Then
Exit Function
Else: MP_Proben_Page_Count = Userform_Berichtautomation.lstbox_aufträge.List(Userform_Berichtautomation.lstbox_aufträge.ListIndex, 4)
End If

For MP_Proben_Page = 1 To MP_Proben_Page_Count
    With Userform_Berichtautomation.MultiPage_Proben
        .Add ("MP_Proben_" + (Format(MP_Proben_Page, "00"))), "Probe " & MP_Proben_Page
    End With
Next

For MP_Proben_Page = 1 To MP_Proben_Page_Count
    With Userform_Berichtautomation.MultiPage_Proben.Pages("MP_Proben_" + (Format(MP_Proben_Page, "00"))).Add("Forms.Textbox.1", "txtbox_auftraege_09_" + (Format(MP_Proben_Page, "00")), True)
        .Top = 6
        .Left = 90
        .Height = 16
        .Width = 192
        .Text = "Check1"
    End With
Next

End Function
Da wird also ganz am Anfang die MultiPage erstmal gekillt/geleert. Theoretisch sollte das meine Funktion wiederholbar machen - Vor jedem neuen Einlesen der Probenzahl und der Info wieviele MPs ich brauche wird der MP-Master ja geleert und alles beginnt von Vorne. Das sollte auch das Problem mit der Eindeutigkeit der Textboxen lösen - Die gibt es ja dann auch jeweils nur einmal.

AAABER:

Leider erscheinen immer noch keine Textboxen in den neu erstellten Pages...

Ich kaue da jetzt seit Tagen drauf rum; Erlöst mich BITTE!
Lukasdiehl ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.07.2011, 16:11   #5
Hotte
MS-Office-Forum Team MS-Office-Forum Team
Standard

Hi,

also ich habe einfasch keine Probloeme damit.

Wenn Du willst, kannst Du mir ja mal die Datei schicken - dann schau ich es mir an.

Oder ein Beispiel verkürzt natürlich wegen der Daten hier hochladen.

__________________

Gruß
Hotte


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


Win XP; Win 7 und 8; Office 2003 bis 2010 || Hilfe bei Zitierstilen für Word...
---------------------------------------------------------------------------------------------------------------------------
Wenn du eine weise Antwort verlangst, mußt du vernünftig fragen.
Johann Wolfgang von Goethe (1749-1832), dt. Dichter
Hotte ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 21.07.2011, 10:39   #6
Lukasdiehl
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Ok, habe es raus! ENDLICH! Erstmal gab es ein Problem mit dem Counter - Multipages zählen ja ab 0 aufwärts... Und dann ist es anscheinend Quatsch eine einzelne Multipage mit .pages anzusprechen. EInfach den Integer aus der Schleife so setzen multipage(i) und schon klappts
HAPPY!
Lukasdiehl ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 21.07.2011, 10:40   #7
Lukasdiehl
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hier für den Hilfesuchenden...

Code:

Public Function Expand_Multipage()

Dim pagecount As Long
Dim pagecount_alt As Long
Dim i As Integer
Dim j As Integer
Dim k As Integer

pagecount_alt = Userform_Berichtautomation.MultiPage_Proben.Pages.Count

For i = 1 To pagecount_alt
Userform_Berichtautomation.MultiPage_Proben.Pages.Remove (Userform_Berichtautomation.MultiPage_Proben.Pages.Count - 1)
Next

If IsNull(Userform_Berichtautomation.lstbox_aufträge.List(Userform_Berichtautomation.lstbox_aufträge.ListIndex, 4)) Then
Exit Function
Else: pagecount = Userform_Berichtautomation.lstbox_aufträge.List(Userform_Berichtautomation.lstbox_aufträge.ListIndex, 4)
End If

For j = 1 To pagecount

' Multipages einfügen

Userform_Berichtautomation.MultiPage_Proben.Add ("MP_Proben_" + (Format(j, "00"))), "Probe " & j

' Textboxen einfügen

With Userform_Berichtautomation.MultiPage_Proben(j - 1).Controls.Add("Forms.Textbox.1", "txtbox_auftraege_08_" + (Format(j, "00")), True)
            .Top = 6
            .Left = 90
            .Height = 16
            .Width = 192
            .Text = ("txtbox_auftraege_08_" + (Format(j, "00")))
            .Visible = True
End With
Lukasdiehl ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:44 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

Copyright ©2000-2010 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günther Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.
Beachten Sie bitte auch unsere Nutzungsbedingungen.