Inhalt einer ausgew. Zelle in Textfeld anzeigen

Hallo zusammen,

ich habe in Excel eine Preisliste für unsere Firma erstellt, die soweit auch steht.

Die Preisliste greift dabei mit Sverweisen auf eine Artikeldatenbank (einfaches Tabellenblatt in der gleichen Exceldatei), wo alle relevanten Daten hinterlegt sind.

Es gibt Artikelbezeichnung1 (Kurztext) und Artikelbezeichnung2 (Langtext) in der Datenbank.

Derzeit wird in der Preisliste nur die Artikelbezeichnung1 angezeigt.

Ich möchte nun aber durch Befehl VERKETTEN beide Artikelbezeichnungen angezeigt bekommen.

ALLERDINGS soll das nicht in der Zelle geschehen, wo die Formel hinterlegt ist, sondern in einer Textbox beispielsweise, die ich halt irgendwo auf den Tabellenblatt platziere.

Die Zeilenhöhe der Preisliste soll immer gleich bleiben, so dass hier nur Artikelbezeichnung1
sichtbar ist (Zeilenumbruch in Zelle durch ZEICHEN(10) nach Artikelbezeichnung1).
Die Preisliste würde sonst zu lang werden, da Artikelbezeichnung 2 viel Text enthalten kann.

Kann man eine Textbox (oder was anderes) variable gestalten, so dass immer nur der Inhalt der ausgewählten Zelle in der Textbox angezeigt wird. Gerne auch mit VBA Code.

Wenn ich also wissen möchte, welche Details sich hinter einem Artikel verbergen, klicke ich auf die Zelle in der Spalte „Bezeichnung“ des Artikels in der Preisliste und die Textbox zeigt mir dann den dazugehörigen Langtext (Artikelbezeichnung 2) an.

Oder bin ich auf dem Holzweg und man kann das auch ganz anders lösen?

Hoffentlich ist das verständlich beschrieben. :wink:

Wäre echt sehr dankbar, wenn mir hier jemand weiterhelfen könnte!

Viele Grüße
agamemnon

Hallo Agamemnon,

Es gibt Artikelbezeichnung1 (Kurztext) und Artikelbezeichnung2
(Langtext) in der Datenbank.

Ich möchte nun aber durch Befehl VERKETTEN beide
Artikelbezeichnungen angezeigt bekommen.
ALLERDINGS soll das nicht in der Zelle geschehen, wo die
Formel hinterlegt ist, sondern in einer Textbox
beispielsweise, die ich halt irgendwo auf den Tabellenblatt
platziere.

Du willst also in der Textbox zwei Texte verketten!?

Ich würde oben einige Zeilen fixieren und darauf die Textbox platzieren, dann siehste sie immer.

Die Zeilenhöhe der Preisliste soll immer gleich bleiben, so
dass hier nur Artikelbezeichnung1
sichtbar ist (Zeilenumbruch in Zelle durch ZEICHEN(10) nach
Artikelbezeichnung1).

? Was soll das mit dem Zeilenumbruch? Macht keinen Sinn NACH einem Text.

Kann man eine Textbox (oder was anderes) variable gestalten,
so dass immer nur der Inhalt der ausgewählten Zelle in der
Textbox angezeigt wird. Gerne auch mit VBA Code.

Du willst also in der Textbox nicht verketten!?
Was denn nun?

Ein Ansatz.
Countif ist Zählenwenn und vlookup Sverweis. Durch Komma getrennt haben sie die gleichen Parameter wie in Excel, halt in Vba-Schreibweise.
Insofern kannst du sie leicht anpassen an deine tabellenblattstruktur.

Alt+F11, Doppelklick links auf den Namen des Blattes mit der Textbox, Code reinkopieren, Code anpassen, Editor schliessen.

Option Explicit
'
Private Sub Worksheet\_SelectionChange(ByVal Target As Range)
Set Target = Intersect(Target, Range("B2:B500"))
If Target Is Nothing Then Exit Sub
If Target.Cells.Count 1 Then Exit Sub
With Worksheets("Tabelle2")
 If Application.CountIf(.Range("A2:smiley:500"), Target.Value) Then
 TextBox1.Text = Application.VLookup(Target.Value, .Range("A2:smiley:500"), 4, 0)
 Else
 TextBox1.Text = "Artikel nicht vorhanden"
 End If
End With
End Sub

Gruß
Reinhard

Hallo Reinhard,

erstmal vielen Dank für die schnelle Antwort.

In der Textbox möchte ich eigentlich nichts verketten.

Die Textbox soll lediglich dazu dienen mir den aktuellen Inhalt der ausgewählten Zelle zwischen B2-B500 als Text anzuzeigen. In diesem Fall die Bezeichnung.

Vielleicht ist ja auch eine Textbox nicht das Richtige. Hier kenne ich mich leider zu wenig aus. Ich möchte nichts in die Textbox eingeben oder so.

Es soll einfach ein Fenster auf Tabellenblatt „Kundenpreisliste“ an einer festen Stelle, dass mir den Inhalt einer Zelle wiedergibt (in diesem Fall die Bezeichnung), sobald ich Sie ausgewählt / aktiviert habe.

Meine Formel in der Spalte für die Bezeichnung für die Verkettung in der Preisliste lautet:

=VERKETTEN(SVERWEIS($B2;Artikeldatenbank!$A$3:blush:Z$2000;4);ZEICHEN(10);(SVERWEIS($B2;Artikeldatenbank!$A$3:blush:Z$2000;5)))

$B2 = Artikelnummer als Suchkriterium
Art.Bez.1 in Spalte 4
Art.Bez.2 in Spalte 5

Nur der Inhalt von SVERWEIS($B2;Artikeldatenbank!$A$3:blush:Z$2000;4) soll in der Preisliste angezeigt werden (also Artikelbez.1).

Die Verkettung soll in der Textbox angezeigt werden, wenn ich die Zelle aktiviere / anklicke.
Sie soll lediglich als Informationsfeld für den Mitarbeiter dienen.

Gruß Agamemnon

1 „Gefällt mir“

Hallo Agamemnon,

In der Textbox möchte ich eigentlich nichts verketten.

Aha, was soll das dann:

Die Verkettung soll in der Textbox angezeigt werden, wenn ich
die Zelle aktiviere / anklicke.

Vielleicht ist ja auch eine Textbox nicht das Richtige. Hier
kenne ich mich leider zu wenig aus. Ich möchte nichts in die
Textbox eingeben oder so.

Man kann die Textbox gegen Eingaben sperren.

Meinen Code hast du nicht auusprobiert?

Es soll einfach ein Fenster auf Tabellenblatt
„Kundenpreisliste“ an einer festen Stelle, dass mir den Inhalt
einer Zelle wiedergibt (in diesem Fall die Bezeichnung),
sobald ich Sie ausgewählt / aktiviert habe.

Da passt doch Textbox.

Meine Formel in der Spalte für die Bezeichnung für die
Verkettung in der Preisliste lautet:

=VERKETTEN(SVERWEIS($B2;Artikeldatenbank!$A$3:blush:Z$2000;4);ZEICHEN(10);(SVERWEIS($B2;Artikeldatenbank!$A$3:blush:Z$2000;5)))

Du vernachlässigst den vierten Parameter von SVerweis. Benutze ihn.
Sonst kommen ggfs. Fehlanzeigen.

Nur der Inhalt von
SVERWEIS($B2;Artikeldatenbank!$A$3:blush:Z$2000;4) soll in der
Preisliste angezeigt werden (also Artikelbez.1).

? Erst Verketten, dann doch wieder nicht, ich blick absolut nicht durch was du willst.

Gruß
Reinhard

Hallo Reinhard,

vergessen wir einfach mal das mit dem Verketten.

Folgendes wäre ideal:

Nehmen wir die Artikelnr. (Spalte B im Tabellenblatt „Kundenpreisliste“) als Suchkrit.

Wenn Artikelnr. markiert, dann suche im Tabellenblatt „Artikeldatenbank“ und gebe die Artikelbez.2 in der TextBox aus

Ich glaube so oder so ähnlich war das auch schon mit Deinem Code gelöst oder?

Aber irgendwie tut sich da nix in der TextBox. Wie gesagt, ich bin da kein Experte.

Muss ich bei der TextBox in den Eigenschaften irgendwo noch was einstellen?

Ich habe mal die Excelliste mit ein paar Artikeln hochgeladen:
http://download.cosys.info/preisliste.xls

Gruß Arne

Hallo Arne,

vergessen wir einfach mal das mit dem Verketten.

sehr schön *Schweiß abwisch* :smile:)

Nehmen wir die Artikelnr. (Spalte B im Tabellenblatt
„Kundenpreisliste“) als Suchkrit.

Wenn Artikelnr. markiert, dann suche im Tabellenblatt
„Artikeldatenbank“ und gebe die Artikelbez.2 in der TextBox
aus

Genau das macht mein Code.

Muss ich bei der TextBox in den Eigenschaften irgendwo noch
was einstellen?

Nein.

http://download.cosys.info/preisliste.xls

Da war/ist mein Code nicht drinnen.

Gruß
Reinhard

Ok anbei noch mal mit Deinem Code:
http://download.cosys.info/preisliste.xls

Ich habe jetzt erstmal nix dran geändert, weil ich mir hier auch nicht sicher war.

Gruß Arne

http://download.cosys.info/preisliste.xls

Ich habe jetzt erstmal nix dran geändert, weil ich mir hier
auch nicht sicher war.

Hallo Arne,

sehr gut, der Code steht schon mal im richtigen Modul.
Natürlich mußt du Makros zulassen (Extras—Makro—Sicherheit…) und beim Starten der Mappe „Makros aktivieren“ anklicken

Dann muß beim Klick in Bx eine Fehlermeldung kommen. Irgendwas mit Index. Das kommt daher weil im Code „Tabelle2“ steht, ein Blatt dieses Namens haste aber nicht.

Nachstehend der angepasste Code, ändere das Fettgedruckte ab.

Da ist noch ein „A“ fettgedruckt, auch ändern. Das „D“ war falsch.

Option Explicit
'
Private Sub Worksheet\_SelectionChange(ByVal Target As Range)
Set Target = Intersect(Target, Range("B2:B500"))
If Target Is Nothing Then Exit Sub
If Target.Cells.Count 1 Then Exit Sub
With Worksheets(" **Artikeldatenbank**")
 If Application.CountIf(.Range("A2: **A** 500"), Target.Value) Then
 TextBox1.Text = Application.VLookup(Target.Value, .Range("A2:smiley:500"), 4, 0)
 Else
 TextBox1.Text = "Artikel nicht vorhanden"
 End If
End With
End Sub

Gruß
Reinhard

ES FUNKTIONIERT! :smile:

Genauso habe ich mir das vorgestellt.
1000x Dankschön Dir Reinhard!

Der Tag ist gerettet. :smile:

LG Arne

Hallo,

=SVERWEIS(INDIREKT(ZELLE(„Adresse“));Suchbereich;2;0)

nimmt den Zellinhalt der gerade selektierten Zelle, sucht ihn im Suchbereich und gibt das entsprechende Element aus.

Bei der Eingabe meckert Excel wegen Zirkelbezug, ignorieren.

Erspart dir VBA. Nachteil ist nur, daß du nach jedem Auswählen F9 drücken mußt. Eventuell kannst du vor den SVerweis noch ein WENN vorschalten, das verhindert, daß du ne falsche Zelle auswählst.

In einer Hilfszelle verkettest du deine strings wie du vorhattest und im Anschluß nimmst du ein Textfeld aus der Leiste „Zeichnen“.

Dann klickst du es irgendwo am Rand an, sodaß der Cursor nicht im Feld ist. Dann schreibst du in die Formelleiste =Hilfszelle. (also den Bezug).

LG
Chris

Hi Chris,

vielen lieben Dank für Deine gute Antwort! :smile:

Ich konnte es mittlerweile schon pmit einem VBA Code lösen (klappt auch wunderbar).

LG Arne