Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Userform-Textfelder: Inhalte aus falscher Zeile

Forumthread: Userform-Textfelder: Inhalte aus falscher Zeile

Userform-Textfelder: Inhalte aus falscher Zeile
23.11.2024 21:02:28
Klaus B aus D
Hallo,

je länger ich experimentiere, um so stärker wächst mein Frust über eine Userform, in der falsche Einträge erscheinen.

Es handelt sich eigentlich um eine Standard-Anwendung: Textfelder mit Werten aus einer zugrundeliegenden Tabelle einlesen.
Im vorliegenden Fall möchte ich Teilnehmer über ein Kombinationsfeld auswählen (der Inhalt stammt aus einer Tabelle "Teilnehmer"). Die ComboBox zeigt in den beiden Spalten zum Einen eine "Startnummer" und in der 2. Spalte einen "Teilnehmernamen" - zusammengesetzt aus Nach- und Vorname.
Aus der Tabelle sollen (im 1. Entwicklungsschritt des Formulars) Punkte aus der Tabelle "Wertungspunkte" eingetragen werden; in dieser Testphase unter "Antw. 1", "Antw. 2" und "Antw. 3". Die ComboBox habe ich "cboTN" genannt. Nach einer Auswahl wird der 1. Spaltenwert "cboTN" in das Textfeld "StartNr" übertragen (weil nach der Auswahl der Teilnehmername gezeigt werden soll).

Sobald ich das Formular aufrufe, erscheinen zunächst Meldungen, die ich zwecks Kontrolle doppelt eingefügt habe:
"Es wurde die Startnummer 9 gefunden." Danach
"Es wurde die cboTN-Nummer 1 gefunden."
Danach wiederholt sich der Vorgang (?) mit den beiden Meldungen und anschließend erscheint das Formular: mit dem erwarteten 1. Teilnehmer und seiner Startnummer.
Auch die Antwort aus Tabellenspalte "D" (= Punktzahl) scheint zu stimmen.

Wähle ich den 2. TN aus, dann scheint die Programmierung immer noch zu stimmen. Meldungen:
"Es wurde die Startnummer 2 gefunden."
"Es wurde die cboTN-Nummer 2 gefunden."
Die Punktzahl scheint immer noch zu stimmen (nicht unterscheidbar, da sie gleich sind).

Wähle ich den 3. TN aus, dann unterscheiden sich Meldungen bereits:
"Es wurde die Startnummer 2 gefunden."
"Es wurde die cboTN-Nummer 3 gefunden."
Die Punktzahl scheint weiterhin zu stimmen (nicht unterscheidbar, da sie ebenfalls gleich sind).

Wähle ich den 4. TN aus, dann unterscheiden sich Meldungen ebenfalls:
"Es wurde die Startnummer 2 gefunden."
"Es wurde die cboTN-Nummer 4 gefunden."
Jetzt müssten sich die Antworten-Felder anders füllen, wenn ich mir die Einträge in der Tabelle ansehe.

Wähle ich den 5. TN aus, dann unterscheiden sich Meldungen wieder:
"Es wurde die Startnummer 4 gefunden."
"Es wurde die cboTN-Nummer 5 gefunden."
Ab dieser Stelle erkenne ich einen Zeilenversatz: die Punktzahlen, die jetzt eingetragen werden, gehören dem 4. Teilnehmer. Sie werden also aus einer darüberliegenden Zeile dargestellt.

An dieser Stelle bin ich "mit meinem Latein" am Ende und kann mir nicht erklären, wieso eine Startnummer "9" erscheint, sobald das Formular aufgerufen wird oder wenn ich den 1. TN später noch einmal aufrufe und wie es zu dem Zeilenversatz kommt.

Gruß Klaus
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Userform-Textfelder: Inhalte aus falscher Zeile
23.11.2024 21:31:38
ralf_b
und der Code, den man hier korrigieren müßte, ist ein so großes Geheimnis das du ihn lieber nicht zeigen möchtest????

AW: Userform-Textfelder: Inhalte aus falscher Zeile
23.11.2024 23:47:11
Klaus B aus D
Upps, selbstverständlich gehört der Code in die Veröffentlichung, um möglichst Hilfestellung zu erreichen.


' Beenden Schaltfläche Ereignisroutine
Private Sub CommandButton4_Click()
Unload Me
End Sub

' Startroutine, wird ausgeführt bevor die Eingabemaske angezeigt wird
Private Sub UserForm_Initialize()
Call COMBOBOXEN_LADEN_UND_INITIALISIEREN ' Aufruf der entsprechenden Verarbeitungsroutine
End Sub

' ************************************************************************************************
' VERARBEITUNGSROUTINEN
' ************************************************************************************************

' Diese Routine wird aufgerufen, um die ComboBoxen zu leeren, einzustellen und neu zu füllen
Private Sub COMBOBOXEN_LADEN_UND_INITIALISIEREN()
Dim lngZeile As Long
Dim lngZeileMaximum As Long
Dim i As Integer

' ComboBoxen leeren
cboTN = ""
cboHK = ""

' Einträge für das Auswahlfeld "Hauptkontrolle" (cboHK) generieren
With UserForm1.cboHK ' Auswahlfeld
For i = 1 To 9 ' diese Schleife erzeugt 9 Hauptkontrollpunkte
.AddItem "HK " & CStr(i) ' weiteren Eintrag hinzufügen
Next
.ListIndex = 0 ' ersten Eintrag zeigen
End With

' Einträge für das (2-spaltige) Kombinationsfeld "cboTN" vorbereiten
' Spaltenbreiten des Kombinationsfelds anpassen (0 = ausblenden, nichts = automatisch)
With UserForm1.cboTN
.ColumnCount = 2 ' Anzahl Spalten festlegen
.ColumnHeads = False ' keine Spaltenüberschriften
'ListBox1.ColumnWidths = "0;;" 'keine festen Breiten
.ColumnWidths = "25;80" 'feste Breiten
End With

' Die Einträge "Startnummer" und die Kombination aus "Fahrer-Name" u. "Vorname" _
in zwei Spalten der ComboBox "cboTN" eintragen.
With Worksheets("Teilnehmer")
For i = 2 To .Cells(.Rows.Count, "A").End(xlUp).Row ' ab Zeile 2 wegen Überschriften
If Not .Cells(i, "B") = "" And Not .Cells(i, "B") = "n.V." Then ' nur Zellen wählen, bei denen ein Nachname existiert
' ComboBox füllen mit den Inhalten aus den Spalten A, B u. C pro Zeile
Me.cboTN.AddItem
Me.cboTN.List(Me.cboTN.ListCount - 1, 0) = .Cells(i, "A") ' Startnummern
Me.cboTN.List(Me.cboTN.ListCount - 1, 1) = .Cells(i, "B") & ", " & .Cells(i, "C") ' Nach- u. Vorname kombiniert
End If
Next i
End With

UserForm1.cboTN.ListIndex = 0 ' erster Eintrag erscheint im Auswahlfeld

' Daten der 2-spaltigen ComboBox in Textfeldern ausgeben. (Name ist versteckt, _
da nach Auswahl in ComboBox weiterhin sichtbar).
'txtStartNr.Value = cboTN.Value ' funtioniert bei UserForm_Initialize
'txtTeilnehmer = cboTN.List(0, 1) ' zweite Spalte der ComboBox; dito
' Hajo_Zi-Lösung(2015): ComboBox: Zwei Spalten in TextBoxen ausgeben
txtStartNr = cboTN.List(cboTN.ListIndex, 0) ' 1. Spalte der ComboBox
txtTeilnehmer = cboTN.List(cboTN.ListIndex, 1) ' 2. Spalte der ComboBox

' Multiseiten ausblenden (außer der ersten)
'MultiPage2.Visible = False
'...

' Multipage-Startseite festlegen
MultiPage1.Value = 0 ' für die erste Seite

' Reiter-Zusatzmarkierung (Pfeilsymbol) umschalten
Image1.Visible = True
Image2.Visible = False
Image3.Visible = False
Image4.Visible = False

End Sub

Und hier der nächste Teil:


' Teilnehmer aus ComboBox auswählen
Private Sub cboTN_Change()
' Name statt StartNr. anzeigen (nur eine Spalte möglich)
cboTN.TextColumn = 2
'StartNr u. Name in Textfelder eintragen
' Hajo_Zi-Lösung(2015): ComboBox: Zwei Spalten in TextBoxen ausgeben
txtStartNr = cboTN.List(cboTN.ListIndex, 0) ' 1. Spalte der ComboBox
txtTeilnehmer = cboTN.List(cboTN.ListIndex, 1) ' 2. Spalte der ComboBox


' Datensatz in Tabelle "Wertungspunkte" suchen _
und entsprechende Punkte in die UserForm eintragen
Dim rng As Range ' 1. Spalte in der Tabelle

Set rng = Worksheets("Wertungspunkte").Range("A2:A80").Find(what:=cboTN)

'Set StartNr = Worksheets("Wertungspunkte").Range("A1:A80").Find(what:=txtStartNr)
If rng Is Nothing Then
MsgBox "Es wurde KEINE entsprechende Startnummer gefunden."
Else
'MsgBox "Es wurde eine entsprechende Startnummer gefunden."
MsgBox "Es wurde die Startnummer " & rng & " gefunden."
MsgBox "Es wurde die cboTN-Nummer " & cboTN & " gefunden."
End If

txtP111 = rng.Offset(0, 3)
txtP112 = rng.Offset(0, 4)
txtP113 = rng.Offset(0, 5)

End Sub

' Reitermarkierung (Pfeilsymbol) an Multipage umschalten
Private Sub MultiPage1_Change()
Select Case MultiPage1.SelectedItem.Index
Case 0 ' 1. Reiter wurde gewählt
Image1.Visible = True
Image2.Visible = False
Image3.Visible = False
Image4.Visible = False

Case 1 ' 2. Reiter wurde gewählt
Image1.Visible = False
Image2.Visible = True
Image3.Visible = False
Image4.Visible = False

Case 2 ' 3. Reiter wurde gewählt
Image1.Visible = False
Image2.Visible = False
Image3.Visible = True
Image4.Visible = False

Case 3 ' 4. Reiter wurde gewählt
Image1.Visible = False
Image2.Visible = False
Image3.Visible = False
Image4.Visible = True

End Select

End Sub

Gruß Klaus
Anzeige
AW: Userform-Textfelder: Inhalte aus falscher Zeile
24.11.2024 05:28:13
Onur
Aber ohne die Datei wird das nix. Wie soll man denn den Code testen können? Bei irgend welchen Syntaxfehlern hätte sich VBA schon gemeldet aber Berechnungsfehler wegen falscher Programmierung kann man nicht ohne die Datei korrigieren.
AW: Userform-Textfelder: Inhalte aus falscher Zeile
24.11.2024 13:37:14
Klaus B aus D
Guten Tag,

wie kann ich innerhalb des Forums erkennen, dass ich eine Beispieldatei hochgeladen habe?
Für die Datei, die ich jetzt erneut hochlade, bekam ich beim 1. Versuch die Info auf einer Hinweisseite, dass die Datei umbenannt wurde.

https://www.herber.de/bbs/user/173791.xlsm

Gruß Klaus
Anzeige
AW: Userform-Textfelder: Inhalte aus falscher Zeile
24.11.2024 13:55:38
Onur
"Für die Datei, die ich jetzt erneut hochlade, bekam ich beim 1. Versuch die Info auf einer Hinweisseite, dass die Datei umbenannt wurde. " Klar, aber es kam auch der Hinweis, dass du den Link kopieren und uns posten sollst.
AW: Userform-Textfelder: Inhalte aus falscher Zeile
24.11.2024 12:03:02
GerdL
Moin Klaus,

Set rng = Worksheets("Wertungspunkte").Range("A2:A80").Find(what:=cboTN)

Formuliere die Argumente der Find-Methode Lookat, Lookin und MatchCase.


' anstatt ComboBoxen leeren
'cboTN = ""
'cboHK = ""
' besser ComboBoxen leeren
cboTN.Clear
cboHK.Clear

Gruß Gerd
Anzeige
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18