Live-Forum - Die aktuellen Beiträge
Datum
Titel
19.04.2024 12:23:24
19.04.2024 11:45:34
Anzeige
Archiv - Navigation
1728to1732
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Objektname aus Zelle auslesen

Objektname aus Zelle auslesen
15.12.2019 21:49:36
Chi
Hi!
Ich bin ziemlicher Anfänger bei VBA und bei den ersten Schritten mit benutzerdefinierten Objekten zum ersten Mal auf ein Problem gestoßen bei dem mir diverse Google Suchen nicht helfen konnten.
Und zwar habe ich in einem Klassenmodul eine Klasse namens "Produkt" angelegt. Dessen Eigenschaft "Preis" bekommt in einem Sub einen Wert zugewiesen. Von diesem Zeitpunkt an wird in einem zweiten Sub weitergearbeitet. In diesem Sub lässt sich der Preis eines Produktes auch problemlos auslesen und weiterverwenden.
Jetzt zum eigentlichen Problem: In einem Worksheet stehen in einer Tabelle die Namen der Produkte, also einzelner Objekte. Von diesen Objekten möchte ich gerne den Preis auslesen und für eine Berechnung verwenden. Ich schaffe es aber nicht, mich mithilfe eines Zellbezugs auf das Objekt zu beziehen. Mein Problem ist, dass ich nicht weiß, wie man sich auf ein bestimmtes Objekt bezieht ohne dessen Namen im Voraus zu kennen. Mithilfe einer Zwischenvariable habe ich leider keinen Erfolg erzielen können.
Hoffentlich wurde mein Problem deutlich. Falls nicht, gerne nochmal nachfragen. Vielen, vielen Dank schon einmal für eure Hilfe!

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Objektname aus Zelle auslesen
16.12.2019 07:26:42
Stefan
Hallo Chi Ri,
ich bin mir nicht sicher, ob ich das richtig verstanden hab, hier mal der Code, so wie ich dein Problem verstanden hab:
Dim lZeile As Long
Dim DeinText
Dim DeinPreis As Integer
DeinText = "Schrauben"  'Hier musst du deine Variable, nach der gesucht werden soll "bestücken"
lZeile = 2 'Beginnt in Zeile 2
Do While Trim(CStr(Tabelle1.Cells(lZeile, 2).Value))  ""
If DeinText = Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) Then '"DeinText ist der Wert  _
nachdem in Tabelle1 Spalte A gesucht wird
DeinPreis = Sheets("Tabelle1").Cells(lZeile, 2).Value       'Dein Preis wird aus  _
der Tabelle1 Spalte B ausgelesen
Exit Do
End If
lZeile = lZeile + 1
Loop
Hier wird in Tabelle1 Spalte A dein Objektname gesucht und der dazugehörige Preis (steht in Spalte B) in deine Variable geladen.
Ich hoffe das löst dein Problem, sonst musst du es mir noch näher erklären.
Gruß Stefan
Anzeige
AW: Objektname aus Zelle auslesen
16.12.2019 09:04:22
Chi
Hi Stefan,
vielen Dank schon einmal! So ganz löst das mein Problem nicht, ich wusste ich sollte keinen Post mehr kurz vorm Schlafengehen aufsetzen, habe mich etwas wirr ausgedrückt. :)
Ich zeige mal kurz den Beispiel-Code mit dem ich arbeite:
Das Klassenmodul namens "Produkt":

Public Preis As Integer
Das erste Modul:

Public ProduktEins As New Produkt
Public ProduktZwei As New Produkt
Sub Initial()
ProduktEins.Preis = 2
ProduktZwei.Preis = 5
End Sub
Das zweite Modul:

Sub Fortsetzung()
Debug.Print ProduktEins.Preis
Debug.Print ProduktZwei.Preis
End Sub
Jetzt ist es so, dass in einer Arbeitsmappe Namen von Produkten stehen. Ich weiß aber nicht welche Produkte und wo. Wichtig ist nur, dass an der richtigen Position ausgelesen wird, welcher Preis zugehörig ist.
Sprich, ich habe in Tabelle1 im Feld A1 bspw. "ProduktEins" stehen. Nun hätte ich gerne im zweiten Modul die Möglichkeit auf das Feld A1 zu verweisen und dabei den Preis zu erhalten, der dem Produkt zugewiesen ist, dessen Name sich in A1 befindet.
Also praktisch:

Debug.Print Worksheets("Tabelle1").Cells(1,1).Preis
Nur, dass es so nicht funktioniert. Mit einer Zwischenvariable habe ich es auch schon probiert, ebenso wie mit der CallByName-Funktion. Beides habe ich nicht zum Laufen bringen können.
Vielen Dank schon bzw. noch einmal!
Anzeige
AW: Objektname aus Zelle auslesen
16.12.2019 09:21:43
Nepumuk
Hallo,
das geht nicht. Du kannst zwar per CallByName z.B. die Eigenschaft Preis als String benutzen aber du musst immer ein Klassenobjekt angeben. Und ein String ist kein Objekt und lässt sich auch nicht in ein solches umwandeln.
Du könntest deine Klasse als Array anlegen und in der Tabelle den entsprechenden Index hinterlegen.
Gruß
Nepumuk
AW: Objektname aus Zelle auslesen
16.12.2019 13:23:50
Chi
Hey Nepumuk,
vielen Dank für deine Antwort! Schade, das hätte meinen Code deutlich verkürzen können.
Ich habe das Problem jetzt mithilfe von VLookup gelöst.
Grüße!

321 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige