6.6k Aufrufe
Gefragt in Tabellenkalkulation von nick2507 Mitglied (231 Punkte)
Hallo ihr Lieben,

ich brauche wieder einmal eure Hilfe. :-)

Das Problem:

Ich habe eine UserForm "ZugängeUsf", wo sich 2 Comboboxen befinden. Wenn ich diese ausgewählt habe, möchte ich über den "ComandButton1" die entsprechenden Werte in die Labels "Bezeichnung2Lbl, Beschreibung2Lbl und EkPreis2Lbl anzeigen lassen.

Ist das überhaupt möglich oder muss ich mir da etwas anderes einfallen lassen?

Die Datei:
www.file-upload.net/download-3701066/Lagerbestand4.xls.html

Gruß
Nick2507

34 Antworten

0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi Nick,

die Antwort solltest du in diesem Thread finden: Link

Bis später,
Karin
0 Punkte
Beantwortet von nick2507 Mitglied (231 Punkte)
Hallo Karin,

das stimmt, die hast du ja gestern bereits schon beantwortet gehabt. :-D

Gruß
Nick2507
0 Punkte
Beantwortet von nick2507 Mitglied (231 Punkte)
Hallo Karin,

mich plagt schon wieder eine Programmierung in Excel und komme einfach nicht weiter. :-(

Ich habe das Programm um eine UserForm erweitert, mit dem Namen "ArtikelBearbeitenUsf". Hierbei habe ich einen Command Button ("ArtikelKorrigierenCmd") gesetzt.

Dieser soll, wenn eine Artikelnummer ausgewählt wurde und nachdem die Daten angezeigt wurden, (nur bei einer Änderung eines Inhaltes einer Textbox) die den entsprechenden Artikel mit der Veränderung überschreiben, ohne diesen neu anzulegen. :-(

Ist das auch möglich in Excel zu programmieren?

Die aktuelle Datei:

www.fileuploadx.de/196246

Ich danke dir wieder im Voraus. :-)

Viele liebe Grüße

Nick2507
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi Nick,

die Korrektur funktioniert genau so wie der Code im DatenAnzeigenCmd_Click, nur dass du dann halt den mittleren Teil umkehrst - also nach diesem Prinzip:

rngZelle.Offset(0, 1) = ProduktgruppeTxb
rngZelle.Offset(0, 2) = BezeichnungTxb
rngZelle.Offset(0, 3) = BeschreibungTxb
'.... usw.


Frage zu deinem Code im DatenAnzeigenCmd_Click - wozu benötigst du dort ein On Error GoTo fehler:? In der ComboBox sind doch nur Artikel-Nr. aufgelistet, die in Spalte B vorhanden sind - also wird bei jeder Suche doch auch eine Artikelnummer gefunden, weshalb da auch kein Fehler auftreten kann. Generell - wenn man bei der Find-Methode den Fehler abfangen will dass etwas nicht gefunden wird, würde man kein On Error verwenden sondern dieses Prinzip:
With Worksheets("Artikelliste")
Set rngZelle = .Columns(2).Find(ArtikelNrCmb, lookat:=xlWhole)
If Not rngZelle Is Nothing Then '<== Suchbegriff wurde gefunden
ProduktgruppeTxb = rngZelle.Offset(0, 1)
BezeichnungTxb = rngZelle.Offset(0, 2)
BeschreibungTxb = rngZelle.Offset(0, 3)
LieferantTxb = rngZelle.Offset(0, 4)
EkPreisTxb = rngZelle.Offset(0, 5)
VkPreisTxb = rngZelle.Offset(0, 6)
End With
End With

Bis später,
Karin
0 Punkte
Beantwortet von nick2507 Mitglied (231 Punkte)
Hallo Karin,

ich habe den On Error GoTo Error fehler eingesetzt, weil ich festgestellt habe, dass, wenn man in der Combobox ProduktgruppeCbo eine Produktgruppe auswählt und dann den Wert überschreibt oder um 3 Zeichen verändert, eine Debuggmeldung erscheint. Ist das jetzt falsch?
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi Nick,

in diesem Fall, wenn auch andere Werte von Hand eingetragen werden können, die dann vlt nicht in der Liste sind, ist es richtig, wenn man eine Fehlerbehandlung einbaut, denn sonst würde ja ein Laufzeitfehler ausgelöst. Aber bitte nicht mit On Error und einer Sprungmarke - das ist kein guter Programmierstil. Eine korrekte Lösung habe ich dir ja bereits gepostet.

Bis später,
Karin
0 Punkte
Beantwortet von nick2507 Mitglied (231 Punkte)
Guten Morgen Karin,

ich habe schon wieder eine Frage. :-S

Es geht dieses Mal um das Tabellenblatt Zugänge. Wenn ich die Userform "ZugangUsf" starte und mir die entsprechenden Daten anzeigen lasse (hier geht's um den Ek - Preis), überträgt er diesen Wert zwar in die richtige Spalte aber eben als Textwert.
Kann ich das irgendwie ändern, sodass Excel beim Übertragen gleich erkennt, dass es ein Zahlenwert (Eurowert) sein soll?

Habe es schon durch den Makrorecorder versucht aber da macht er nicht das, was ich gerne möchte. :-S

Viele liebe Grüße und danke! :-)

Nick2507
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi Nick,

eine TextBox enthält logischerweise immer Text - du musst diesen also beim Übertragen ins Tabellenblatt in einen Zahlenwert umwandeln. Das geht nach folgendem Prinzip:
Range("A1") = CDbl(TextBox1)

CDbl (Typ Double) ist erfoderlich, da sicher eine Dezimalzahl ist.
Bis später,
Karin
0 Punkte
Beantwortet von nick2507 Mitglied (231 Punkte)
Hallo Karin,

ich bekomme eine Fehlermeldung, wenn ich keine Zahl eingetippt habe. Habe es schon mit einer Sprungmarke probiert aber das funktioniert auch nicht. Kannst du mir mitteilen, wie ich diese Fehlermeldung abfangen kann?

Hier ist der Quelltext:
Private Sub WerteÜbertragenCmd_Click()
übertragen = Sheets("Zugänge").Cells(2, 1).End(xlDown).Row + 1
Sheets("Zugänge").Cells(übertragen, 1) = ProduktgruppeCmb
Sheets("Zugänge").Cells(übertragen, 2) = ComboBox1
Sheets("Zugänge").Cells(übertragen, 3) = Bezeichnung2Lbl
Sheets("Zugänge").Cells(übertragen, 4) = Beschreibung2Lbl
Sheets("Zugänge").Cells(übertragen, 5) = CDbl(ZugängeTxb) 'Textbox wird als Dezimalzahl deklariert

.
.
.
0 Punkte
Beantwortet von nick2507 Mitglied (231 Punkte)
Gruß Nick
...