Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema MultiPage
BildScreenshot zu MultiPage MultiPage-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

textfelder auf multipage



Excel-Version: 8.0 (Office 97)

Betrifft: textfelder auf multipage
von: jhaustein
Geschrieben am: 07.06.2002 - 15:01:35

hallo gemeinschaft

problem: wie kann ich die textfelder auf einer multipage ansprechen

dank rainer kann ich jetzt eine multipage hinzufügen - nun möchte ich, dass auf dieser neuen multipage vier neue textfelder erscheinen mit textfeldnamen, die ich definieren kann. - ausserdem die position der neuen textfelder


  

Re: textfelder auf multipage
von: Rainer
Geschrieben am: 07.06.2002 - 15:55:57

Lieber Jörg!

Da braust du ja ein ganz schönes Süppchen ;-)
(Code nur unter XL2000 ausprobiert!)


Option Explicit
Dim txt_Neu As Control

Private Sub CommandButton1_Click()
    Set txt_Neu = MultiPage1.Pages(MultiPage1.Value).Controls _
    .Add("Forms.TextBox.1", "txt_Neu", Visible)
    
    With txt_Neu
        .Left = 20
        .Top = 20
        .Width = 100
        .Value = "Ich bin hier neu"
    End With
End Sub

Private Sub CommandButton2_Click()

    ' Achtung:
    ' Beachte die genaue Schreibweise!!!
    
    MsgBox UserForm1!txt_Neu.Value

End Sub

Hilft dir das?

Lieben Gruß
Rainer

P.S.:
Mich würde der Zweck interessieren, wozu du zur Laufzeit ein Steuerelement hinzufügen willst - Wäre doch einfacher, sie schon zu Beginn zu erstellen und die visible-Eigenschaft auf False zu setzten.

  

Re: textfelder auf multipage
von: jhaustein
Geschrieben am: 07.06.2002 - 16:05:47

vielen dank nochmal bloss wie heisst denn jetzt dieses neue textfeld - wenn ich jetzt dort eine zahl eintrage und sie dann per buttonklick in eine tabelle übertragen möchte - wie spreche ich das textfeld an


zweck schreibe ich dir später

:-)

jörg

  

Re: textfelder auf multipage
von: Rainer
Geschrieben am: 07.06.2002 - 16:06:38

In der 1. Set-Anweisung wird in der jeweils aktuellen Multipage-Seite die TextBox erstellt. Willst du sie in einer bestimmten Seite (hier 3. !)haben, nimm die 2. Set-Anweisung



'Aktuelle Seite
Set txt_Neu = MultiPage1.Pages(MultiPage1.Value).Controls _
    .Add("Forms.TextBox.1", "txt_Neu", Visible)

'3.Seite
Set txt_Neu = MultiPage1.Pages(2).Controls.Add("Forms.TextBox.1", "txt_Neu", Visible)


Lieben Gruß
Rainer


  

Re: textfelder auf multipage
von: Rainer
Geschrieben am: 07.06.2002 - 16:15:53

Lieber Jörg!

Sie heißt "txt_Neu".

Damit man sieht, wie man dieses neue Steuerelement anspricht, ist der 2. Teil des Codes gedacht gewesen, worin ich dich auf die Schreibweise hingewiesen habe:


Private Sub CommandButton2_Click()

    ' Achtung:
    ' Beachte die genaue Schreibweise!!!
    
    MsgBox UserForm1!txt_Neu.Value
    Sheets(1).Cells(2,2).Value=Userform1!txt_Neu.Value

End Sub

Du benötigst das Ausrufezeichen, um auf die Eigenschaften des zur Laufzeit erstellten Steuerelements verweisen zu können.

Lieben Gruß
Rainer

  

Re: textfelder auf multipage
von: jhaustein
Geschrieben am: 07.06.2002 - 16:16:50

ja aber wie spreche ich den inhalt an - ich möchte den inhalt in tabelle1 geschrieben haben

  

Re: textfelder auf multipage
von: Rainer
Geschrieben am: 07.06.2002 - 16:21:46

Habe das gerade gepostet;-)

Rainer


  

Re: textfelder auf multipage
von: jhaustein
Geschrieben am: 07.06.2002 - 16:41:16

super das geht schon mal wie würdest du das denn machen, wenn es mehrere textfelder sein müssen

  

Re: textfelder auf multipage
von: Rainer
Geschrieben am: 07.06.2002 - 23:15:02

Lieber Jörg!

In dem du für jedes Textfeld einen anderen Namen vergibst und alle Codezeilen auf diese Namen anpasst! ;-)

Aber Spass beiseite! Natürlich ist der eingangs beschriebene Weg grundsätzlich richtig, aber nicht wirklich zielführend. Probiere mal folgenden Code aus:


Dim txtContr(1 To 4) As Control     'Array für 4 Steuerelemente
Dim As Integer
Dim txt As Control  'Objektvariable

Private Sub CommandButton1_Click()
' Erstellt 4 TextBoxen
Dim As Integer    'Höhe
    
    h = 20
    
    For i = 1 To 4
        
        ' Erstellt die Text-Felder
        Set txt = MultiPage1.Pages(MultiPage1.Value).Controls _
            .Add("Forms.TextBox.1", "txt_Neu" & i, Visible)
        Set txtContr(i) = txt
        
        With txt
            .Left = 100
            .Top = h
            .Width = 100
            .Value = "Ich heiße " & txt.Name
        End With
'        MsgBox h
        h = h + 25
    Next i
    
End Sub

Private Sub CommandButton2_Click()
'Schreibt den Inhalt der Steuerelemente in das 1. Blatt
Dim mp As String
    
    ' Einfache Form - muss für jedes einzelne Textfeld geschrieben werden
    With ThisWorkbook.Sheets(1)
        mp = UserForm1.MultiPage1(MultiPage1.Value).Name & " - "
        .Cells(3, 2).Value = mp & UserForm1!txt_Neu1.Value
        .Cells(3, 3).Value = mp & UserForm1!txt_neu2.Value
        .Cells(3, 4).Value = mp & UserForm1!txt_neu3.Value
        .Cells(3, 5).Value = mp & UserForm1!txt_neu4.Value
    End With

    ' Besser, da flexibel
    For i = 1 To 4
        ThisWorkbook.Sheets(1).Cells(2, i + 1).Value = txtContr(i).Value
        'löscht Inhalt im jeweiligen Steuerelement
        txtContr(i).Value = ""
    Next i
    
    ' Andere Möglichkeit: direkte Ansprache des Textfeldes
    ' Achtung auf die Ausrufezeichen!!
'    MsgBox UserForm1!txt_Neu1.Value
'    MsgBox UserForm1!txt_Neu2.Value
'    MsgBox UserForm1!txt_Neu3.Value
'    MsgBox UserForm1!txt_Neu4.Value
    
End Sub

Private Sub CommandButton3_Click()
' Löscht die Steuerelemente

    For i = 4 To Step -1
        MsgBox "Ich lösche txt_Neu" & i
        MultiPage1.Pages(MultiPage1.Value).Controls.Remove ("txt_Neu" & i)
    Next i
    
    ' Hast du keine anderen Steuerelemente in der Multipage, dann reicht:
'    MultiPage1.Pages(MultiPage1.Value).Controls.Clear
   
End Sub

Lieben Gruß
Rainer

  

Re: textfelder auf multipage
von: jhaustein
Geschrieben am: 10.06.2002 - 09:30:16

hallo rainer

leider ist txtcotr nicht definiert - wie mach ich das


  

Re: textfelder auf multipage
von: Rainer
Geschrieben am: 10.06.2002 - 10:24:42

Lieber Jörg!

Die Variable txtContr ist schon definiert und zwar gleich am Beginn der ersten Zeile meines Codes, und zwar mit:


Dim txtContr(1 To 4) As Control     'Array für 4 Steuerelemente

Damit wird eine 'Array-Variable' definiert, die 4 Werte vom Typ 'Control' aufnehmen kann und die mit dem Index 1 bis 4 angesprochen werden können - und nicht, wie XL-Standard von 0 bis 3.

Außerdem ist diese Variablendeklaration außerhalb einer Prozedur oder Funktion definiert, daher in allen Prozeduren und Funktionen innerhalb dieses Modulblattes (hier Userform!!) gültig.

Du schreibst diese Deklerationen am Beginn der Seite gleich nach 'Option Explicit'.

Willst du, dass diese Variablen im ganzen Projekt gültig sind, schreib sie am Beginn eines Standardmodulblattes, auch wenn dort sonst kein Code eingefügt ist und verwende statt Dim z.B. Public, Global, oder Static.

Siehe dir diesbezüglich auch die Hilfe an -Variablendekleration, Gültigkeit von Variablen.

Lieben Gruß
Rainer

P.S.: Achte auch auf die Schreibweise der Variablen! Bei deiner letzten Nachfrage hast du statt 'txtContr' 'txtCotr' geschrieben - das könnte auch der Grund sein, dass du eine Fehlermeldung erhalten hast, wenn du zu Beginn 'Option Explicit' geschrieben hast. Ich empfehle dir, diese im VBA-Editor unter 'EXTRAS-OPTIONEN...-EDITOR-Variablendefinition erforderlich' unbedingt standardmäßig zu aktivieren.


 

Beiträge aus den Excel-Beispielen zum Thema "textfelder auf multipage"