Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Werte in Spalten suchen und ausgeben
11.06.2016 20:57:33
felix
Hallo Leute,
Ich habe folgendes Problem:
Ich habe in einem Tabellenblatt 3 Spalten A,B,C.
In A stehen Arbeitsgänge
in B stehen Kundennamen
in C Preise
Ich habe eine Userform in der ich die Kundennamen mit Hilfe eine combobox auswählen kann. Zudem habe ich eine Combobox mit der ich die Arbeitsgänge auswählen kann. Nun hätte ich gerne, dass wenn ich einen Kundennamen aufrufe und einen Arbeitsgang in der anderen combobox auswähle, in der textbox in der die Preise eingetragen werden, schon der Preis steht, der in dem Tabellenblatt für den Kunden und den Arbeitgang hinterlegt sind.
Sprich die Prozedur soll Spalte A nach den Arbeitsgängen absuchen, ist der richtige gefunden, dann muss in Spalte B der Kundenname gesucht werden, ist dieser gefunden, dann soll die Zelle in Spalte C in der textbox ausgewiesen werden. Ich hätte bei Bedarf auch eine Datei die ich hochladen könnte.
Vielen Dank im Voraus.

27
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Werte in Spalten suchen und ausgeben
12.06.2016 09:03:50
Beverly
Hi Felix,
mit einer hochgeladenen Mappe macht ist eine Hilfe wesentlich einfacher, da man die Mappe nicht erst nachbauen muss. Das spart Zeit und ein Nachbau entspricht auch nie dem Original.


AW: Werte in Spalten suchen und ausgeben
12.06.2016 09:45:27
felix
https://www.herber.de/bbs/user/106170.xlsm
Also im Tabellenblatt Rechnungsvorlage gibt es eine Schaltfläche Maske mit der man dann die Userform Rechnungen erstellen aufrufen kann.

AW: Werte in Spalten suchen und ausgeben
12.06.2016 11:05:05
Beverly
1. In Spalte A Tabelle1 sollte am besten zu JEDEM Kunden der Artikel/die Leistung stehen (so ist normalwerweise eine Datenbank aufgebaut) und nicht nur einmalig, sonst ist die Programmierung zwar möglich, aber unnötig aufwendig
2. da in den ComboBoxen cboArtikel bis cboArtikel5 ALLE Artikel/Leistungen aufgelistet sind und nicht nur die für den Kunden relevanten: was soll gemacht werden, wenn es diesen Artikel/diese Leistung für den Kunden nicht gibt? Wäre es da nicht besser, nur die für den Kunden relevanten Artikel aufzulisten?


Anzeige
AW: Werte in Spalten suchen und ausgeben
12.06.2016 11:26:06
felix
Ich liste für jeden Kunden alle angebotenen Leistungen auf, da sich die Leistungen ja auch verändern können und ich dann nicht unbedingt das Tabellenblatt verändern möchte.
Momentan habe ich zur Vereinfachung in Tabelle1 Zwei Beispiele für die Leistungen eingesetzt, wenn der Code steht dann trage ich zu dem Kunden alle Leistungen ein.
Im Prinzip schreibe ich in Spalte A die Leistungen zu jedem Kunden auf. Aber ich würde gerne alle Leistungen, die angeboten werden auch bei jedem Kunden hinterlegen!
hättest du da einen Code?

AW: Werte in Spalten suchen und ausgeben
12.06.2016 16:52:27
Beverly
Also so richtig weiß ich nicht, was du machen willst - wozu muss man überhaupt noch Leistungen auswählenen, wenn man eine Rechnung schreibt? Zu dem Zeitpunkt müssen doch alle Daten bereits fix und fertig im Tabellenblatt eignetragen sein - weshalb sonst bräuchte man überhaupt eine Auflistung der ausgeführten Leistungen?
Ich verstehe auch nicht, was du unter "Aber ich würde gerne alle Leistungen, die angeboten werden auch bei jedem Kunden hinterlegen" - wo hinterlegen? Weshalb bei jedem Kunden "hinterlegen", wenn doch nur bestimmte Leistungen erbracht wurden?
Ich denke, du solltest dir das ganz Vorhaben noch einmal durch den Kopf gehen lassen und dann genau und für einen Außenstehenden nachvollziehbar beschreiben, wazu das UserForm RECHNUNGSmaske dienen soll. Vor allem wäre auch der letzendliche tatsächliche Tabellenaufbau Voraussetzung für eine weitere Hilfe.
Und so richtig bist du auch nicht auf Punkt 1 meiner Hinweise eingegangen.


Anzeige
AW: Werte in Spalten suchen und ausgeben
12.06.2016 17:36:35
felix
Also unter der Annahme, dass man z.B. 1000 Kunden hat und nicht alle für die gleiche Leistung auch den gleichen Preis zahlen müssen wäre es sehr aufwendig sich für jeden Kunden und Leistung den genauen Preis zu merken. Deshalb wäre es optimal, wenn ich die Preise für jeden Kunden und für jede Leistung in der Tabelle1 in Spalte C Schreibe und diese dann in meine Userform in die textbox Preis übernommen wird.
Der Preis für die Leistung hängt somit von dem Namen des Kunden und der Leistung selber ab.
Wenn ich meine Userform aufrufe, dann wähle ich den Kunden mit der combobox Namen aus und danach wähle ich die Leistung/Artikel mit der combobox Artikel aus. Wenn ich nun den Artikel ausgewählt habe, dann soll der entsprechende Preis für den Kunden und die Leistung in der Textbox Preis erscheinen.
Der Sinn ist, dass ich mir den Preis nicht merken muss sondern dieser in Excel in der Tabelle1 hinterlegt ist! und zwar in Spalte C.
Ich habe mir das genau durch den Kopf gehen lassen und es wäre eine Arbeitserleichterung.
MIr fehlt nur die Kompetenz zur Umsetzung meines Vorhabens.

Anzeige
AW: Werte in Spalten suchen und ausgeben
12.06.2016 18:34:22
Beverly
Zitat: Deshalb wäre es optimal, wenn ich die Preise für jeden Kunden und für jede Leistung in der Tabelle1 in Spalte C Schreibe und diese dann in meine Userform in die textbox Preis übernommen wird.

Und genau deshalb stellt sich die Frage, weshalb bei einer Rechnung, wo doch alle Daten bereits vorhanden sein müssen, du für jeden Kunden ALLE, also auch andere als die in der Tabelle zu dem betreffenden Kunden eingetragenen Leistungen in den ComboBoxen benötigst. Es stellt sich auch die Frage, was soll passieren, wenn für einen Kunden mehr als 6 Leistungen existieren?
Ich würde das nicht mit ComboBoxen und Textfeldern sondern mit 1 ListBox lösen, die sowohl die Anzahl, die Leistungsart und den jewiligen Preis für den Kunden ausgibt - dann hast du eine Übersicht, zu welchem Kunden welche Daten vorhanden sind.


Anzeige
AW: Werte in Spalten suchen und ausgeben
12.06.2016 18:44:32
felix
Ich habe die Userform so angelegt, weil ich es so am besten anwenden und verstehen kann. deshalb wäre eine Hilfe zu meiner geschilderten Problematik toll.
Das mit der Listbox verstehe ich nicht!

UserForm mit ListBox zur Datenanzeige
12.06.2016 20:35:44
Beverly
Schau dir das angehängte Beispiel mit der ListBox an.
In Tabelle1 sollte auch die Anzahl zu jeder Leistung je Kunde abgelegt werden - somit schaffst du eine komplette Übersicht ("Datenbank"), mit der sich gut arbeiten lässt.
https://www.herber.de/bbs/user/106185.xlsm


Anzeige
AW: Werte in Spalten suchen und ausgeben
14.06.2016 17:38:34
felix
Danke für diese Lösung aber leider geht das an meiner Vorstellung vorbei. denn Die Userform soll Daten in das Tabellenblatt Rechnungsvorlage übertragen und nicht umgekehrt!
Ich glaube hier haben wir aneinandervorbei geredet.

Da irrst du dich aber gewaltig...
14.06.2016 20:06:37
Beverly
...der Code trägt die Daten aus dem Tabellenblatt "Tabelle1" in das Tabellenblatt "Rechnungsvorlage" ein und nicht umgekehrt.
Lösche doch einfach mal die Inhalte in "Rechnungsvorlage", starte das Userform und wähle dann "Musterfrau" aus - alle in "Tabelle1" vorhandwenen Daten zu "Musterfau" werden im UserForm angezeigt und nach Klick auf den Button "Übernehmen" stehen sie im Tabellenblatt "Rechnungsvorlage".


Anzeige
AW: Da irrst du dich aber gewaltig...
14.06.2016 20:11:24
felix
ok stimmt tut mir leid. Und wie kann ich in der Listbox Änderungen vornehmen. ?
Weil die Leistungen für ein und den selben Kunden nicht immer gleich sind.

Irdendwie verstehe ich...
14.06.2016 21:14:30
Beverly
...dein gesamtes System nicht. Weshalb müssen denn bei einer Rechnungserstellung noch Änderungen vorgenommen werden? Für eine Rechnung müssen die Daten doch bereits endgültig feststehen.
Wie trägst du denn jetzt die Daten ins Tabellenblatt "Tabelle1" ein? Dazu habe ich bei dir nichts gefunden. Du brauchst also erst einmal ein extra UserForm für die Datenerfassung/Datenänderung, welches so ähnlich wie das für die Rechnungserstellung aufgebaut sein könnte - es sein denn, du trägst alle Daten von Hand in Tabelle1 ein bzw. änderst sie auch von Hand.


Anzeige
AW: Irdendwie verstehe ich...
15.06.2016 17:32:35
felix
Also ich hätte die Daten, da sie sich kaum bis gar nicht ändern, ohne irgendeine Userform erfasst, nämlich einfach so eingetragen. Das Ziel ist, dass ich in der Userform, mich auf die Daten aus Tabelle1 beziehen kann, insbesondere auf die Preise die in Tabelle 1 eingetragen sind und die Daten frei zusammentsellen kann. und auch Änderungen vornehmen kann.
Bei dieser Rechnungsstellung sollen die daten mit Hilfe der Userform in das Tabellenblatt Rechnungsvorlage übertragen werden. Derjenige der die Rechnung schreibt kann also bei der Rechnungsstellung auswählen welche Tätigkeiten er vollzogen hat. Es gibt keine vorherige Datenerfassung. Deshalb die Comboboxen.
Hast du meine Ausführung verstanden?

Anzeige
AW: Irdendwie verstehe ich...
15.06.2016 17:47:55
Beverly
Wir reden jetzt tatsächlich aneinander vorbei, weil dein System für Außenstehende unlogisch und deshalb nicht nachvollziehbar ist. Du verstehst offensichtlich etwas völlig anderes als ich darunter, wie man Daten behandelt, nachweisen kann was für Leistungen für verschiedene Kunden zu welchem Preis erbracht wurden und dann daraus eine Rechnung erstellt.
Ich stelle den Beitrag auf offen, vielleicht findet sich ja jemande, der eine unlogische Logik versteht.


AW: Irdendwie verstehe ich...
15.06.2016 18:05:20
felix
Ja also für mich macht das Sinn! aber das wir aneinander vorbeireden, dass war mir schon etwas länger bewusst :-D.

Anzeige
Letzter Versuch
15.06.2016 18:46:41
Beverly
- du willst aus den Daten der Tabelle1 eine Rechnung erstellen - korrekt?
- es sollen alle für den jeweiligen Kunden erbrachten Leistungen berücksichtigt (im UserForm angezeigt) werden und du willst im UserForm auswählen, welche davon in die Rechnung kommen?
Falls nicht oder falls ich etwas vergessen haben, dann berichtige es und/oder ergänze es zu meinen Ausführungen. Aber bitte ganz genau angeben, was wie gemacht werden soll.


AW: Letzter Versuch
15.06.2016 19:25:14
felix
Punkt 1 ist nicht korrekt!
- ich will in meiner Userform alles beibehalten wie es ist (comboboxen etc.), es soll nur der Preis aus Tabelle1 in die Textbox txtPreis genommen werden wenn zwei Bedingungen erfüllt sind.
Ich wähle in der Userform über die Combobox cboName den Kundennamen aus, dann wähle ich mit der combobox cboMenge die Menge aus und mit der Combobox cboArtikel wähle ich die Leistung aus. Jetzt soll die dazugehörige Textbox txtPreis, den Preis anzeigen der in Spalte C des Tabellenblattes Tabelle1 steht und zu dem Kundenamen (erste Bedingung), den ich in der combobox cboNamen ausgewählt habe, und zu der Leistung (zweite Bedingung), die ich in der combobox cboArtikel ausgewählt habe, passt.
Bsp.
Userform:
Auswahl cboName auf = Mustermann
Auswahl cboArtikel auf = Maschineneinsatz
Tabellenblatt Tabelle1 sieht so aus
Spalte 1 Spalte 2 Saplte 3
Namen
Musterfrau Pflanzen 10 Euro
Maschineneinsatz 20 Euro
Mustermann Pflanzen 15 Euro
Maschineneinsatz 25 Euro
Musterkerl Pflanzen 30 Euro
Maschineneinsatz 40 Euro
Folge: jetzt soll mit der Auswahl der combobox cboArtikel auf Pflanzen folgendes Prozedur ablaufen
spalte a wird abgeglichen mit der Combobox cboName, in dieser wurde Mustermann ausgewählt. Also wird Spalte a nach Mustermann abgesucht. Ist dieser Name gefunden werden die Leistungen in Spalte B mit der Auswahl der Combobox cboArtikel abgeglichen (aber nur Pflanzen und Maschineneinsatz, die zu Mustermann gehören). In der combobox cboArtikel ist in diesem Beispiel Maschineneinsatz ausgewählt
Folge: in der Textbox txtPreis soll nun der Preis dafür ausgewiesen werden, nämlich 25 Euro. Somit wird der Preis in der Textbox angezeigt der individuell für den einzelnen Kunden zu der bestimmten Leistung in Tabell1 hinterlegt ist.
-Punkt zwei ist ebenfalls nicht korrekt
Im Tabellenblatt Tabelle1 werde ich alle vorhandenen Kunden anlegen und für jeden Kunden die identischen Leistungen aber mit unterschiedlichen Preisen. Wie ich das Anlege ist momentan unwichtig. Wichtig ist mir, wie ich mein obengenanntes Bsp. umsetzten kann.

Letzter Versuch - Schluss
15.06.2016 20:26:47
Beverly
Zitat: Im Tabellenblatt Tabelle1 werde ich alle vorhandenen Kunden anlegen und für jeden Kunden die identischen Leistungen aber mit unterschiedlichen Preisen. Wie ich das Anlege ist momentan unwichtig.
Genau darin liegt das gesamte Problem mit dir: da du die Tabelle1 nicht so vorlegst wie sie letztendlich tatsächlich aussehen soll, erzeugt das komplettes Unverständnis für dein zugrundeliegendes "System". Somit lässt sich auch nicht programmieren, wie deine ComboBoxen funktionieren sollen.


AW: Letzter Versuch - Schluss
15.06.2016 21:55:57
felix
Ich will doch nur den Preis für den jeweiligen Kunden und die entsprechende Leistung in der Textbox übertragen txtPreis haben. Wie das letztendlich in der Tabelle1 steht ist mir egal (kann in jeglichr Form dort stehen, sofern diese umsetzbar ist) hauptsache es funktioniert. Also wenn du einen Ansatz dann würde ich dich um deine Hilfe bitten.

AW: Letzter Versuch - Schluss
15.06.2016 21:56:49
felix
Hast du es überhaupt verstanden, also was mein Hauptziel ist?

Letzter Versuch - doch gelöst?
16.06.2016 08:07:41
Beverly
Deine Tabelle1 ist also eine Übersicht, welche Leistungen für welchen Kunden geltend gemacht werden können und keine Erfassung der tatsächlich für jeden Kunden erbrachten Leistungen? Das habe ich anhand deiner bisherigen Beschreibungen und der vorgelegten Tabelle1 niemals so interpretieren können. Ich war der Meinung, Tabelle1 stellt eine Ablage der bereits erbrachten Leistungen dar - deshalb auch das Missverständnis. Bedenke, dass ein Außenstehender nicht in den Kopf des Fragestellers schauen kann und man ALLE Daten-Grundlagen benötigt, um das Ziel nachvollziehen zu können.
Wie schon geschrieben: in Tabelle1 muss vor JEDEM Namen die Leistung stehen, sonst funktioniert es nicht:
Private Sub cboArtikel_Change()
Dim rngZelle As Range
Dim strStart As String
With Worksheets("Tabelle1")
Set rngZelle = .Columns(1).Find(cboArtikel.Value, lookat:=xlWhole)
If Not rngZelle Is Nothing Then
Do
If rngZelle.Offset(0, 1) = cboName.Value Then
txtPreis = rngZelle.Offset(0, 2)
Exit Do
End If
Set rngZelle = .Columns(1).FindNext(rngZelle)
Loop While strStart  rngZelle.Address
End If
End With
End Sub
Private Sub cboArtikel1_Change()
Dim rngZelle As Range
Dim strStart As String
With Worksheets("Tabelle1")
Set rngZelle = .Columns(1).Find(cboArtikel1.Value, lookat:=xlWhole)
If Not rngZelle Is Nothing Then
Do
If rngZelle.Offset(0, 1) = cboName.Value Then
txtPreis1 = rngZelle.Offset(0, 2)
Exit Do
End If
Set rngZelle = .Columns(1).FindNext(rngZelle)
Loop While strStart  rngZelle.Address
End If
End With
End Sub
'... und hier der Code für die weiteren ComboBoxen


AW: Letzter Versuch - doch gelöst?
16.06.2016 16:57:16
felix
Geeeeeeeeeeeeeeeeeiiiiiiiiiiiiiiiiiiiiillllllllll!!!!!!!
Vielen Dank es ist genau so wie ich es mir vorgestellt habe. Danke für deine Zeit und deinen Aufwand.
Tut mir leid, wenn ich mich so missverständlich und unklar ausgedrückz haben.
Gruß Felix

AW: Letzter Versuch - doch gelöst?
17.06.2016 17:40:22
felix
Da es so gut geklappt hat am Ende ;-)
hätte ich noch die Frage wie ich mit dem Click auf den Button cmdÜbernehmen das Tabellenblatt Rechnungsvorlage in Seitensicht ( Druckansicht) einstellen kann.
weil mit Printview stürzt excel bei mir ab.
Köntest du mir hierbei helfen, da du meine Workbook kennst?!

Letzter Versuch doch gelöst, weiteres Problem
17.06.2016 19:21:48
Beverly
Die Tabelle Rechnungsvorlage ist doch bereits in Seitenansicht - wenn du das einmalig von Hand einstellst, ändert sich noch nichts mehr daran. Worin besteht also das Problem?


AW: Letzter Versuch doch gelöst, weiteres Problem
17.06.2016 19:28:08
felix
Also ich meine ich hätte gerne, dass ich das das Tabellenblatt so sehe wich wenn ich es bei der Druckvorschau sehe. also im Prinzip soll die Ansicht so sein wie wenn ich es ausgedruckt habe. Also ohne Tabellenlinien.

AW: Letzter Versuch doch gelöst, weiteres Problem
17.06.2016 20:03:23
Beverly
Dazu musst du einfach ins Register: Ansicht, Befehlsgruppe: Anzeigen gehen und das Häkchen bei "Gitternetzlinien" entfernen. Das gilt dann nur für diese Tabelle.


390 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige