Zeile aus Userform finden, bestimmte Zelle ändern

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Zeile aus Userform finden, bestimmte Zelle ändern
von: Patrick Wieland
Geschrieben am: 01.10.2015 18:17:11

Hallo zusammen,
bisher konnte ich wirklich jedes Problem mit genügend Recherche lösen. Jedoch hänge ich nun doch fest und weiß einfach nicht wo der Fehler liegt.
Ich habe eine Excel-Liste zur Lagerverwaltung. Da natürlich alles protokolliert werden sollte, gibt es eine Tabelle mit Warenein- und ausgang, und die Tabelle mit den ganzen Daten. Aktuell bin ich so weit, dass per Artikelnummer im Userform der Artikel ermittelt wird. Im Userform werden auch alle Daten zu dem Artikel angezeigt. Nun möchte ich z.B. einen Wareneingang festhalten. Ich suche den Artikel, dieser wird mir angezeigt. Über die Textform "Menge" gebe ich die gewünschte Menge ein, wähle ein Dropdown aus, welcher Lagerort betroffen ist und klicke auf den Button "Buchen". Nun sucht die VBA nach der Artikelnummer und soll die Menge zu einer bestimmten Spalte (in der gesuchten Zeile) addieren.
Die Spaltenauswahl habe ich mit If Bedingungen über das Dropdownmenü gemacht. Das funktioniert auch hervorragend. Jedoch wählt er immer die 2. Zeile aus. Nicht die Zeile, in der mein gesuchter Artikel steht.
Ich nutze ungefähr den selben Ablauf, um die Textfelder im Userform zu füllen, wenn ich mir einen Artikel raussuche.
Ich habe einfach das Gefühl, dass die Variable nicht richtig gespeichert wird oder ich verstehe die Variable bzw. den Code zum Suchen nicht. Egal was ich mache, es wird immer die 2. Zeile ausgewählt.
Zur VBA für die Befüllung des Warenprotokolls bin ich noch nicht gekommen. Da sehe ich auch kein Problem. Wollte nur den gesamten geplanten Ablauf schildern.
Anbei der Code vom Private Sub:


Private Sub CommandBuchen_Click()
Dim ssearchx As String
Dim VarBestand As Integer
Dim Zeile As Range
 Set Zeile = Columns("C:C").Find(What:=ssearchx, LookAt:=xlWhole, LookIn:=xlValues)
            If ComboLagerort = "" Then
            MsgBox "Lagerot auswählen!"
            Else
            
            If ComboLagerort = "Lager RA" Then
            VarBestand = Zeile.Offset(0, 4)
            Zeile.Offset(0, 4).Value = TextMenge.Text + VarBestand
            Else
            
            If ComboLagerort = "WT 6666" Then
            VarBestand = Zeile.Offset(0, 5)
            Zeile.Offset(0, 5).Value = TextMenge.Text + VarBestand
            Else
            
            If ComboLagerort = "WT 999" Then
            VarBestand = Zeile.Offset(0, 6)
            Zeile.Offset(0, 6).Value = TextMenge.Text + VarBestand
            
            End If
            End If
            End If
            End If
End Sub

Ich hoffe ihr könnt mir hier helfen. Wenn das funktionieren sollte, bin ich einen großen Schritt weiter.

Bild

Betrifft: kannst Du ein Bsp hochladen ?
von: Matthias L
Geschrieben am: 01.10.2015 19:33:21
Hallo
Hab keine Lust das Formular nachzubauen.
Statt Userform mit Textbox und Combobox usw.
hab ichs mal auf der Tabelle mit A1 gemacht
Bei mir klappt das ohne Probleme
Tabelle1

 ABCDEFGHI
1WT 999 Prod1      
2  Prod2      
3  Prod3      
4  Prod4      
5  Prod5      
6  Prod6      
7  Prod7      
8  Prod8      
9  Prod8      
10  Prod9      
11  Prod10      
12  Prod11      
13  Produktxyz   541
14  Prod12      
15  Prod13      
16  Prod14      
17  Prod15      
18  Prod16      
19  Prod17      
20  Prod18      
21  Prod19      
22  Prod20      

Datengültigkeit der Tabelle
ZelleZulassenDatenEingabe 1Eingabe 2
A1Liste Lager RA;WT 6666;WT 999 


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Mit diesem Code
Option Explicit
Private Sub CommandButton1_Click()
Dim ssearchx As String
Dim Zeile As Range
Dim VarBestand
ssearchx = "Produktxyz"
Set Zeile = Columns("C:C").Find(What:=ssearchx, LookAt:=xlWhole, LookIn:=xlValues)
Select Case Cells(1, 1)
 Case Is = ""
 MsgBox "Bitte Lagerort auswählen!"
Case Is = "Lager RA"
 VarBestand = Zeile.Offset(0, 4)
 Zeile.Offset(0, 4).Value = 1 + VarBestand
Case Is = "WT 6666"
 VarBestand = Zeile.Offset(0, 5)
 Zeile.Offset(0, 5).Value = 1 + VarBestand
Case Is = "WT 999"
 VarBestand = Zeile.Offset(0, 6)
 Zeile.Offset(0, 6).Value = 1 + VarBestand
End Select
End Sub
Gruß Matthias

Bild

Betrifft: AW: kannst Du ein Bsp hochladen ?
von: Patrick Wieland
Geschrieben am: 01.10.2015 21:35:11
Jepp,
hier ist die Datei:
https://www.herber.de/bbs/user/100545.xlsm

Bild

Betrifft: ssearchx ist ja auch leer ...
von: Matthias L
Geschrieben am: 01.10.2015 22:30:25
Hallo

Private Sub CommandBuchen_Click()
Dim ssearchx As String
Dim VarBestand As Integer
Dim Zeile As Range
ssearchx = ComboArtikelnummer
Set Zeile = Columns("C:C").Find(What:=ssearchx, LookAt:=xlWhole, LookIn:=xlValues)
 Select Case ComboLagerort
  Case Is = ""
   MsgBox "Lagerot auswählen!"
  Case Is = "Lager RA"
    VarBestand = Zeile.Offset(0, 4)
    Zeile.Offset(0, 4).Value = TextMenge.Text + VarBestand
  Case Is = "WT 6666"
    VarBestand = Zeile.Offset(0, 5)
    Zeile.Offset(0, 5).Value = TextMenge.Text + VarBestand
  Case Is = "WT 999"
   VarBestand = Zeile.Offset(0, 6)
   Zeile.Offset(0, 6).Value = TextMenge.Text + VarBestand
 End Select
End Sub


Bild

Betrifft: AW: ssearchx ist ja auch leer ...
von: Patrick Wieland
Geschrieben am: 01.10.2015 22:54:51
Wie blind man manchmal sein kann...
Vielen lieben Dank. Es funktioniert!

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Zeile aus Userform finden, bestimmte Zelle ändern"