UserForm soll auf eine bestimmte Zeile zugreifen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
UserForm CommandButton Frame Label ListBox TextBox MsgBox
Bild

Betrifft: UserForm soll auf eine bestimmte Zeile zugreifen
von: Frank
Geschrieben am: 29.07.2015 09:49:12

Hallo zusammen,
ich habe mir ein schönes Formular zusammengebaut. Die Daten daraus werden in einer Liste mit Aufgaben benötigt. Diese Liste hat insgesamt 100 Zeilen, also für 100 Aufgaben. Meine Kollegen sollen nun in einer beliebigen Zeile, z. B. 25 auf eine Button drücken, und für die Aufgabe Nr. 25 die nötigen Eingaben über mein Formular einstellen können. Kurzum: das Formular soll auf die Felder zugreifen, die in der ausgewählten Zeile liegen.
Hier mein bisheriger Code:


Private Sub ListBox_Verantwortlich_Click()
'Werte werden in der Spalte D in der aktiven Zeile benötigt
End Sub
Private Sub TextBox_Bearbeitungsvermerk_Change()
'Werte werden in der Spalte B in der aktiven Zeile benötigt
End Sub
Private Sub TextBox_Beschreibung_Change()
'Werte werden in der Spalte A in der aktiven Zeile benötigt
End Sub
Private Sub userform_Initialize()
With UserForm1.ListBox_Bearbeitungsstatus
    .AddItem "neu"
    .AddItem "in Arbeit"
    .AddItem "erledigt"
    .AddItem "terminiert"
    .AddItem "verzögert"
    .AddItem "gestoppt"
End With
End Sub
Private Sub Abbrechenschaltfläche_Click()
'Beendet die Userform1
    Unload UserForm1
End Sub
Private Sub OKSchaltfläche_Click()
'Beendet die Userform1
    Unload UserForm1
    
End Sub
Private Sub Frame_Beschreibung_Click()
End Sub
Private Sub Frame1_Click()
End Sub
Private Sub CommandButton_Löschen_Bearbeitungsvermerk_Click()
'Löscht den Inhalt der TextBox_Bearbeitungsvermerk
    If MsgBox("Textfeld wirklich löschen", vbYesNo) = vbYes Then
        TextBox_Bearbeitungsvermerk = ""
    Else
        Exit Sub
    End If
End Sub
Private Sub Lösche_Beschreibung_Click()
'Löscht den Inhalt der TextBox_Beschreibung
    If MsgBox("Textfeld wirklich löschen", vbYesNo) = vbYes Then
        TextBox_Beschreibung = ""
    Else
        Exit Sub
    End If
End Sub
Private Sub Image1_Click()
End Sub
Private Sub Label1_Click()
End Sub
Private Sub ListBox_Bearbeitungsstatus_Click()
'Werte werden in der Spalte C in der aktiven Zeile benötigt
End Sub
Private Sub TextBox_Titel_Change()
End Sub
Private Sub UserForm_Click()
End Sub
Einen Button für den Aufruf des Formulars würde ich vor jede Zeile stellen. Inhalt wäre nur
Sub UserForm()
UserForm1.Show
End Sub
Gruß
Frank

Bild

Betrifft: AW: UserForm soll auf eine bestimmte Zeile zugreifen
von: Sepp
Geschrieben am: 29.07.2015 10:05:28
Hallo Frank,
da gibt es viele Möglichkeiten.
Nutze z. B. die Tag-Eigenschaft des UF und lies aus dieser die Zeilennummer aus.
Wenn du CommandButtons verwendest, so.

' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub CommandButton1_Click()
With UserForm1
  .Tag = CommandButton1.TopLeftCell.Row
  .Show
End With
End Sub


Wenn du Formular-Buttons verwendest, dann so.
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub Klick()
With UserForm1
  .Tag = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row
  .Show
End With
End Sub


Vorteil der Formular-Buttons, du brauchst nur ein Makro für alle Buttons, wichtig ist nur, dass die Buttons innerhalb der Zelle liegen, wegen .TopLeftCell!
Gruß Sepp


Bild

Betrifft: AW: UserForm soll auf eine bestimmte Zeile zugreifen
von: Frank
Geschrieben am: 30.07.2015 11:28:46
Hallo Sepp,
den Button kann ich zwar so wie beschrieben erstellen und den Tag (vermute ich mal) auch erzeugen. Aber wie bringe ich VBA jetzt bei, das er in meinem Formular die Daten aus der entsprechenden Zeile ziehen soll? Ich habe das bisher bei der Texbox über die Eigenschaften und dort den Punkt ControlSoucre eingestellt. Kann ich da irgenwie die Informationen einbauen, die ich gerade erstellt habe?
Gruß
Frank

Bild

Betrifft: AW: UserForm soll auf eine bestimmte Zeile zugreifen
von: Sepp
Geschrieben am: 02.08.2015 16:46:16
Hallo Frank,
du musst enhtweder im Activate-Ereignis des UF die .ControSource entsprechend zuweisen, oder du weißt den Zellinhalt in der Form "TextBox1 = Cells(zeile,spalte).Text" zu. Wobei du die Zeile eben aus der .Tag-Eigenschaft des UF ermittelst.

Gruß Sepp


 Bild

Beiträge aus den Excel-Beispielen zum Thema "UserForm soll auf eine bestimmte Zeile zugreifen"