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

Bezug auf andere Tabelle endet mit Fehlermeldung

Forumthread: Bezug auf andere Tabelle endet mit Fehlermeldung

Bezug auf andere Tabelle endet mit Fehlermeldung
16.12.2024 01:23:37
Klaus B aus D
Hallo,

es ist nur ein ganz kleiner Schritt zur Lösung, doch ich kriege es nicht hin.
Im Arbeitsblatt "Wertungspunkte" wird eine UserForm1 geöffnet und der Anwender gibt eine Ganzzahl in das Feld "txtStartNr" ein. Nach dem Return wird die Routine "Sub PunkteLaden()" aufgerufen, die einige Textfelder (txt11, txt12, ...) im Formular mit Einträgen aus der zugrunde liegenden Tabelle füllt. Das funktioniert soweit.
Zusätzlich soll zwecks Plausibilitätskontrolle der Name eines Teilnehmers, zusammengesetzt aus Nach- und Vorname (Spalten B u. C), ein einem Textfeld "txtTeilnehmer" erscheinen.
Diese Information suche ich in der Spalte "A" (TN-Nr = StartNr) eines weiteren Arbeitsblatts "Teilnehmer" und dem Durchlaufen der Zeileninhalte mit Hilfe der Offset-Eigenschaft.
Mit Ausführen des Codes erscheint die Fehlermeldung "438": Objekt unterstützt diese Eigenschaft oder Methode nicht. Die Zeile "Me.txt Teilnehmer= ..." wird markiert. Was mache ich falsch?
' TN-Punkte aus Tabelle ins Formular laden

Sub PunkteLaden()
' Hinweis aus HERBERS Excel-Forum (24.11.2024): _
Formuliere die Argumente der Find-Methode Lookat, Lookin und MatchCase!
Set rng = Worksheets("Wertungspunkte").Range("A2:A80").Find(what:=txtStartNr, LookAt:=xlWhole, LookIn:=xlValues)
If rng Is Nothing Then
MsgBox "Es wurde KEINE entsprechende Startnummer gefunden."
Else
'MsgBox "Es wurde die Startnummer " & rng & " gefunden."

' TN einlesen
Me.txtTeilnehmer = Sheets("Teilnehmer").Range("A2:A80").rng.Offset(0, 1)

' Punkte einlesen
Me.txt11 = rng.Offset(0, 4)
Me.txt12 = rng.Offset(0, 5)
Me.txt13 = rng.Offset(0, 6)
Me.txt14 = rng.Offset(0, 7)

Me.txt21 = rng.Offset(0, 9)
Me.txt22 = rng.Offset(0, 10)
Me.txt23 = rng.Offset(0, 11)
Me.txt24 = rng.Offset(0, 12)

End If
End Sub

Gruß Klaus
Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bezug auf andere Tabelle endet mit Fehlermeldung
16.12.2024 01:43:08
Uduuh
Hallo,
wahrscheinlich
Me.txtTeilnehmer = Sheets("Teilnehmer").cells(rng.Row, 2)

Gruß aus'm Pott
Udo
AW: Bezug auf andere Tabelle endet mit Fehlermeldung
16.12.2024 09:18:26
Onur
Das Me bei
Me.txt11
ist übrigens völlig überflüssig, denn wenn der Code nicht im Modul der Userform steht, müsstest du die Useform mit angeben, so wie hier:
Useform1.txt11
und wenn der Code doch im Modul der Userform1 steht, bezieht sich jede Angabe wie
txt11
sowieso schon automatisch auf das Objekt Userform1.
Anzeige
AW: Bezug auf andere Tabelle endet mit Fehlermeldung
16.12.2024 12:31:01
Piet
Hallo

noch einfacher: - txtTeilnehmer = .rng.Offset(0, 1)

mfg Piet
AW: Bezug auf andere Tabelle endet mit Fehlermeldung
16.12.2024 13:53:45
Klaus B aus D
Guten Tag zusammen,

me culpa!! Der Code von Uduuh

Me.txtTeilnehmer = Sheets("Teilnehmer").cells(rng.Row, 2)
liefert doch entsprechende Treffer!
Bei meinen Tests hatte ich nicht darauf geachtet, dass in der mir vorgelegten Teilnehmer-Tabelle auch Leereinträge(!) in der Spalte "Fahrer" existieren, obwohl eine TN-Nr vergeben wurde (??). Sei es drum.

Ein dicker Dank an alle Mitdenkenden.
Gruß Klaus
Anzeige
AW: Bezug auf andere Tabelle endet mit Fehlermeldung
16.12.2024 16:14:59
Klaus B aus D
Hallo,
ich bitte nochmals um Hilfe.

Nach Umsetzung der Lösungsvorschläge tritt in meiner kleinen Test-Anwendung ein kurioser Fehler auf:
Suche ich z. B. nach einer Startnummer 102, die in der UserForm1 eingegeben wird (aktive Arbeitsmappe ist "Wertungspunkte"), dann wird mir als Fahrername ein falscher Eintrag geliefert, nämlich der, der in der gleichen ZEILEN-Nummer in der Tabelle "Teilnehmer" steht, aber nicht der, der in der Spalte A mit der Überschrift "TN-Nr" gesucht werden soll. Es kommt zu einem Versatz, weil in der Tabelle "Teilnehmer" die diversen Startnummern nicht in der selben Zelle stehen, wie im Tabellenblatt "Wertungspunkte".
Bei der Suche nach "704" lautet der Name dann ",".

Um nachvollziehen zu können, was ich hier meine, lade ich die Test-Anwendung hier hoch und hoffe, dass mir geholfen werden kann.
https://www.herber.de/bbs/user/174379.xlsm
Gruß Klaus
Anzeige
AW: Bezug auf andere Tabelle endet mit Fehlermeldung
16.12.2024 18:54:00
Piet
Hallo

schau dir bitte deinen Code nochmal genau an. - Du suchst mit rng im Sheet "Wertungspunkte"
Danach holst du die Daten aber aus Sheet "Teilnehmer". . txtTeilnehmer = Sheets("Teilnehmer")
Bei den beiden Sheets sind die Namen aber in den Zeilen verschoben. Mal Zeile13, mal Zeile 15.

mfg Piet
Anzeige
AW: Bezug auf andere Tabelle endet mit Fehlermeldung
17.12.2024 01:04:22
Piet
Hallo

den Namen bekomme ich so angezeigt, aber keine Werte zu dem Namen, Warum nicht???
Set rng = Worksheets("Teilnehmer").Range("A2:A80").Find(what:=txtStartNr, LookAt:=xlWhole, LookIn:=xlValues)
If rng Is Nothing Then
MsgBox "Es wurde KEINE entsprechende Startnummer gefunden."
Else
txtTeilnehmer = rng.Cells(1, 2) & ", " & rng.Cells(1, 3)
Anzeige
AW: Bezug auf andere Tabelle endet mit Fehlermeldung
17.12.2024 18:31:18
Klaus B aus D
Wow, Piet, es funktioniert!

Mir war nicht bewusst, dass der Wert aus "txtStartNr" der UserForm1 zur Suche im Tabellenblatt "Teilnehmer" genutzt werden kann.
Ich bin davon ausgegangen, dass ich einen Treffer nur in dem Tabellenblatt finden kann, zu dem die UserForm1 gehört.
Gemäß Darstellung im Projektbaum sind Tabellen, Formulare und Module aber unabhängige Objekte - muss ich mir jetzt merken.

Nach dem Einsetzen des vorgeschlagenen Codes wurden jetzt zwar die Teilnehmer mit Nach- und Vornamen korrekt dargestellt, aber die Punkte aus dem Tabellenblatt "Wertungspunkte" erschienen nicht mehr. Das Problem konnte ich selbst lösen, indem ich erneut eine If-Abfrage - jetzt mit Bezug auf die Tabelle "Wertungspunkte" - in die selbe Routine eingefügt habe. Verblüffend für mich: die gleiche Variable "rng" wurde auch für diese Abfrage akzeptiert.

Besten Dank für Deine Unterstützung. So komme ich wieder ein Schrittchen voran.

Gruß Klaus
Anzeige
AW: Bezug auf andere Tabelle endet mit Fehlermeldung
16.12.2024 19:47:47
Klaus B aus D
Hallo Piet,

das ist ja genau das Problem, das ich nicht lösen kann bzw. nicht verstehe.
Ich will in der Tabelle "Teilnehmer" in der Spalte A suchen, wo sich die Startnummer aus der UserForm1 (txtStartNr) befindet. Dabei ist es mir völlig egal, in welcher Zeile (Zeilennummer) sie steht.
Wenn es einen Treffer gibt (txtStartNr aus UserForm1 = txtStartNr in Tabellenspalte A der Tabelle "Teilnehmer"), dann rücke in der gefundenen Zeile (die den Eintrag txtStartNr beinhaltet) nach rechts (Offset) und ...

Gruß Klaus
Anzeige
AW: Bezug auf andere Tabelle endet mit Fehlermeldung
16.12.2024 20:13:18
Klaus B aus D
Hallo,
es gibt noch ein Phänomen, das ich nicht begreifen kann.
Befindet sich das Tabellenblatt "Wertungspunkte" im Hintergrund der UserForm1 und betätige ich den Button "Punkte einlesen", dann erscheint nur der Nachname - gefolgt von einem Komma - als "Teilnehmer".
Wechsele ich im Hintergrund zum Arbeitsblatt "Teilnehmer" und betätige ich den Button "Punkte einlesen" erneut, dann erscheint - wie erwartet - die Kombination aus Nach- und Vorname.
Diese Verhalten lässt sich reproduzieren. Die Ausgabe des Teilnehmer-Namens ist scheinbar vom aktiven Arbeitsblatt abhängig ...
Gruß Klaus
Anzeige
AW: Bezug auf andere Tabelle endet mit Fehlermeldung
16.12.2024 08:50:55
Onur
Was GENAU soll denn das hier
Sheets("Teilnehmer").Range("A2:A80").rng.Offset(0, 1)

deiner Meinung nach sein ?
AW: Bezug auf andere Tabelle endet mit Fehlermeldung
16.12.2024 13:29:08
Klaus B aus D
Hallo Onur,

zu Deiner Frage: "Was GENAU soll denn das hier?"

Sheets("Teilnehmer").Range("A2:A80").rng.Offset(0, 1)

Nach meiner Überlegung (s. Excel gut, VBA bescheiden) wähle ich das Arbeitsblatt "Teilnehmer" aus, suche dort in der Spalte TN-Nr (A2:A80) nach der Startnummer eines Teilnehmers, die in "rng" auf dem Sheet "Wertungspunkte" ermittelt worden ist, rücke in der Trefferzeile nach rechts und gelange so zu dem Nachnamen eines Teilnehmers.
Erkläre mir als Lerneffekt doch bitte, wo hier der Gedankenknoten versteckt ist. Und danke für die Belehrung über das überflüssige "Me.". Das kenne ich so aus Access.

Leider bin ich auch mit den weiteren Antworten keinen Schritt weiter gekommen.

@ Uduuh: Keine Fehlermeldung, aber auch kein Ergebnis.
@ Piet: erstens steckt in Deinem Vorschlag ein Punkt zuviel (vor "rng") und zweitens suche ich auf einem anderen Arbeitsblatt nach einem Treffer.
Anzeige

Forumthreads zu verwandten Themen

Anzeige