maffinity
Goto Top

MS Excel Aufrufen des nächsten Datensatz im Userform per Button

Hallo zusammen,

ich suche heute schon den ganzen Tag nach einer Lösung für folgendes Problem:

Ich habe ein Userform erstellt in dem Datensätze einer bestimmten Zeile aus einem Tabellenblatt abgerufen werden.

Private Const TabName = "Hardware"      'Tabellenname mit den Datensätzen  

Private Const FirstCell = "D1"          'Zell-Adresse Überschrift Datensatz 1  

Sub Init(ByVal PlatzNr As Integer)
    Caption = "Platz " & PlatzNr  
    TextBox1.ControlSource = TabName & "!" & Range(FirstCell).Offset(PlatzNr, 0).Address  
    TextBox2.ControlSource = TabName & "!" & Range(FirstCell).Offset(PlatzNr, 1).Address  
    TextBox3.ControlSource = TabName & "!" & Range(FirstCell).Offset(PlatzNr, 2).Address  
    
    Show
  
End Sub


Zusätzlich habe ich mehrere Makros im Modul 1 erstellt, die je nachdem welchen Button ich im Dokument anklicke einen bestimmten Wert (in meinem Fall die Zahl der Zeile nach meinen Startwert - Im Beispiel Zeile 111 bzw. 112) an mein Userform weitergeben.

Beispiel:
Sub Schaltfläche111_Klicken()
Call UserForm3.Init(111)
End Sub

Sub Schaltfläche112_Klicken()
Call UserForm3.Init(112)
End Sub

Das funktioniert soweit reibungslos. Ich würde jetzt aber gerne in dem Userform einen Button einbauen, der den Initialisierungswert im Userform um den Wert "1" erhöht und somit die Datensätze aus der nächsten Zeile angezeigt werden.

Über einen guten Tipp dazu, würde ichmich sehr freuen.

Danke und Gruß
Maffinity

Content-Key: 201315

Url: https://administrator.de/contentid/201315

Printed on: April 19, 2024 at 20:04 o'clock

Member: bastla
bastla Feb 05, 2013 at 23:05:05 (UTC)
Goto Top
Hallo Maffinity und willkommen im Forum!

Vielleicht (völlig ungetestet) so:
Erstelle eine globale Variable (durch
Dim PlNr
gleich am Anfang des Moduls.

Diese sollte sich dann durch
Sub Schaltfläche111_Klicken()
PlNr = 111
Call UserForm3.Init(PlNr)
End Sub
für eine bestimmte Zeile bzw
Sub Schaltfläche113_Klicken()
PlNr = PlNr + 1
Call UserForm3.Init(PlNr)
End Sub
für die nächste Zeile verwenden lassen ...

Grüße
bastla
Member: Maffinity
Maffinity Feb 06, 2013 at 08:05:49 (UTC)
Goto Top
Hallo Bastla,

das hilft mir leider nicht bei meiner Lösung. ich probiere ja im UserForm über einen Button ein Userform mit dem nächsten Datensatz aufzurufen. Wenn ich die Variable im Modul definiere, merkt er sich diese zwar im Modul und damit für die weiteren Buttons im Dokument, aber wenn ich dann im Userform probiere den nächsten Datensatz über einen Button zu öffnen, ruft er mir mit folgenden Code immer wieder den ersten Datensatz auf.
Private Const TabName = "Hardware"      'Tabellenname mit den Datensätzen  

Private Const FirstCell = "D1"          'Zell-Adresse Überschrift Datensatz 1  

Sub Init(ByVal PlatzNr As Integer)
    Caption = "Platz " & PlatzNr  
    TextBox1.ControlSource = TabName & "!" & Range(FirstCell).Offset(PlatzNr, 0).Address  
    TextBox2.ControlSource = TabName & "!" & Range(FirstCell).Offset(PlatzNr, 1).Address  
    TextBox3.ControlSource = TabName & "!" & Range(FirstCell).Offset(PlatzNr, 2).Address  
    
    Show
    
End Sub
Sub CommandButton1_Click() 'Button im Userform der den nächsten Datensatz aufrufen soll  
    PlatzNr = PlatzNr + 1
    Unload Me
    Call UserForm3.Init(PlatzNr)

End Sub

Ich hab das zur Veranschaulichung hier auch noch einmal grafisch dargestellt:

fd859a1fdfa276ba7badae5b4613c538
Das sind Buttons aus dem Dokument durch die die entsprechenden Makros ausgeführt werden:
z.B. Button 1 ruft folgendes Makro aus dem Modul 1 auf
Sub Schaltfläche1_Klicken()
Call UserForm3.Init(1)
End Sub

Dadurch wird das oben erwähnte Userform mit dem Wert "1" initilisiert wird und dadurch die Wert aus der ersten Zeile ausgibt.
8b550b7280d54ef871910d837dfffbc7
562e06cb1331f2aebf1f9c7efcd36e85

Nun möchte in diesem Userform durch den Klick auf den Okay-Button die Daten aus der nächsten Zeile anzeigen lassen.

Ich hoffe, dass mein Problem jetzt etwas verständlicher ist.

Viele Grüße
Henry
Member: bastla
bastla Feb 06, 2013 at 08:40:11 (UTC)
Goto Top
Hallo Maffinity!

Hatte "Public" vergessen - versuch es mit
Dim Public PlNr
Das Modul hast Du über "Einfügen / Modul" erstellt?

Grüße
bastla
Member: Maffinity
Maffinity Feb 06, 2013 at 08:55:59 (UTC)
Goto Top
Hallo bastla,

Tausend Dank!!!

Das hat funktioniert, aber mit folgender Variablen-Definition:

Public PlNr