Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

lagertool

Betrifft: lagertool von: Henrique Bastos
Geschrieben am: 07.09.2020 12:52:09

liebe VBA-Meister,


ich habe die dankbare Aufgabe bekoomen ein Tool zu programmieren das den aktuellen bestand einer unserer Lager zeigen soll. dabei stoße ich aktuell auf ein Problem ich bekomme es nicht hin das bei einem Artikel das bereits im Lager ist die Stückzahl über die userform dazu addiert wird :/ ich pack euch mal den Code mit rein vilt bin ich auf einem Holzweg... Konstruktive Kritik ist gerne willkommen ich beschäftige mich erst seit 3 Wochen mit vba :)


Public Sub StoreFormDataTransfer()

Dim letztesFeld As Long

Dim letztesFeld2 As Long

Dim letztesFeld3 As Long

Dim letztesFeld4 As Long

Dim letztesFeld5 As Long

Dim letztesFeld7 As Long

Dim x As Integer

Dim y As String

Dim z As Integer

Dim i As Integer

Dim temp As Integer


z = Datenblatt.UsedRange.Rows.Count

x = StoreForm.TextBoxArtNr

y = StoreForm.TextBoxLagOrt




If Datenblatt.Cells(i, 1).Value = x And Cells(i, 5).Text = y Then

Datenblatt.Cells(i, 6) = Cells(i, 6) + StoreForm.TextBoxAnzahl

For i = 8 To z

Datenblatt.Cells(i, 1) = StoreForm.TextBoxArtNr

Datenblatt.Cells(i, 2) = StoreForm.ComboBoxBez

Datenblatt.Cells(i, 3) = StoreForm.ComboBoxKat

Datenblatt.Cells(i, 5) = StoreForm.TextBoxLagOrt

Next i





Else




With Datenblatt



letztesFeld = .Cells(.Rows.Count, 1).End(xlUp).Row

.Cells(letztesFeld + 1, 2).Value = StoreForm.ComboBoxBez.Value

letztesFeld2 = .Cells(.Rows.Count, 3).End(xlUp).Row

.Cells(letztesFeld2 + 1, 3).Value = StoreForm.ComboBoxHer.Value

letztesFeld3 = .Cells(.Rows.Count, 4).End(xlUp).Row

.Cells(letztesFeld3 + 1, 4).Value = StoreForm.ComboBoxKat.Value

letztesFeld4 = .Cells(.Rows.Count, 5).End(xlUp).Row

.Cells(letztesFeld + 1, 5).Value = StoreForm.TextBoxLagOrt.Value

letztesFeld5 = .Cells(.Rows.Count, 6).End(xlUp).Row

.Cells(letztesFeld + 1, 6).Value = StoreForm.TextBoxAnzahl.Value

letztesFeld7 = .Cells(.Rows.Count, 1).End(xlUp).Row

.Cells(letztesFeld + 1, 1).Value = StoreForm.TextBoxArtNr.Value

End With


End If



Unload StoreForm



Betrifft: AW: lagertool
von: Werner
Geschrieben am: 07.09.2020 12:57:06

Hallo,

versuch mal:
Datenblatt.Cells(i, 6) = Cells(i, 6) + CLng(StoreForm.TextBoxAnzahl)

In einer Textbox steht, wie der Name schon sagt, Text.

Gruß Werner

Betrifft: AW: lagertool
von: Henrique Bastos
Geschrieben am: 07.09.2020 13:09:17

Hallo Werner, danke für den Hinweis!
ich bekomme nun eine Fehlermeldung an der stelle:

If Datenblatt.Cells(i, 1).Value = x And Cells(i, 5).Text = y Then

Betrifft: AW: lagertool
von: onur
Geschrieben am: 07.09.2020 18:33:41

Wie wäre es, wenn du endlich mal die Datei posten würdest?
Nur DU weisst, was in Datenblatt.Cells(i, 1) und in Cells(i, 5) stehen.

Betrifft: AW: lagertool
von: Henrique Bastos
Geschrieben am: 08.09.2020 08:34:42

https://www.herber.de/bbs/user/140110.xlsm
hier ist die Tabelle. ich wollte jetzt eventuell mit einer IF schleife verhindern das ein Artikel mit der selben Artikel-Nr.; und identischem Lagerort in einer neuen spalte hinzugefügt wird und statt dessen die Anzahl an bestehenden Artikel zu den neuen dazu gerechnet wird

vielen dank vorab Henrique

Betrifft: AW: lagertool
von: Werner
Geschrieben am: 08.09.2020 10:11:50

Hallo,

ich gehe mal davon aus, dass deine Artikelnummern Texte sind und keine Zahlen wie im Beispiel.
Public Sub StoreFormDataTransfer()
Dim letztesFeld As Long, raFund As Range
Dim x As Integer, y As String

x = StoreForm.TextBoxArtNr
y = StoreForm.TextBoxLagOrt
    
If StoreForm.ComboBoxBez.ListIndex > -1 Then
    Set raFund = Columns("A").Find(what:=StoreForm.TextBoxArtNr, LookIn:=xlValues, lookat:= _
xlWhole)
    If Not raFund Is Nothing Then
        If Datenblatt.Cells(raFund.Row, 1).Value = x And Cells(raFund.Row, 5).Text = y Then
            Datenblatt.Cells(raFund.Row, 6) = Cells(raFund.Row, 6) + CLng(StoreForm. _
TextBoxAnzahl)
            Datenblatt.Cells(raFund.Row, 1) = StoreForm.TextBoxArtNr
            Datenblatt.Cells(raFund.Row, 2) = StoreForm.ComboBoxBez
            Datenblatt.Cells(raFund.Row, 3) = StoreForm.ComboBoxKat
            Datenblatt.Cells(raFund.Row, 5) = StoreForm.TextBoxLagOrt
        End If
    End If
Else
    With Datenblatt
        letztesFeld = .Cells(.Rows.Count, 1).End(xlUp).Offset(1).Row
        .Cells(letztesFeld, 2).Value = StoreForm.ComboBoxBez.Value
        .Cells(letztesFeld, 3).Value = StoreForm.ComboBoxHer.Value
        .Cells(letztesFeld, 4).Value = StoreForm.ComboBoxKat.Value
        .Cells(letztesFeld, 5).Value = StoreForm.TextBoxLagOrt.Value
        .Cells(letztesFeld, 6).Value = StoreForm.TextBoxAnzahl.Value
        .Cells(letztesFeld, 1).Value = StoreForm.TextBoxArtNr.Value
    End With
End If
  
Set raFund = Nothing
Unload StoreForm
End Sub
Gruß Werner

Betrifft: AW: lagertool
von: Henrique Bastos
Geschrieben am: 08.09.2020 10:56:24

vielen dank Werner :) wäre alleine niemals darauf gekommen

Betrifft: Gerne u. Danke für die Rückmeldung. o.w.T.
von: Werner
Geschrieben am: 08.09.2020 10:58:20



Betrifft: AW: Gerne u. Danke für die Rückmeldung. o.w.T.
von: Henrique Bastos
Geschrieben am: 08.09.2020 13:46:44

ich hoffe ich nerve nicht ich stoße wieder auf ein Macro bzw. Funktion die ich Implementieren möchte mir aber komplett der Ansatz fehlt :)



ich schildere mal die Idee:

Ich will in einem Separaten Tabellenblatt eine Historie automatisch erfassen(d.h. Nachverfolgen können welcher Nt-User etwas eingelagert bzw ausgelagert hat und mit einem Zeit Stempel idealerweise wird geschaut ob der User schon vermerkt ist und falls nicht eine Userform gestartet in der er sein NT-Username Vor und Nachname einträgt.



ist das überhaupt so realisierbar und könnt ihr mir vilt etwas verlinken das mir weiterhilft



immernoch die selbe Tabelle die ich hier verlinke:

https://www.herber.de/bbs/user/140124.xlsm




ich bin über jeden Ratschlag dankbar :)

Betrifft: AW: Gerne u. Danke für die Rückmeldung. o.w.T.
von: Werner
Geschrieben am: 08.09.2020 14:58:52

Hallo,

1. .xlsm Datei ohne irgendwelche Makros dabei - sehr sinnvoll.
2. weder ein Archivblatt, noch ein Blatt mit einer Liste von Usern dabei. Verwechselst du das hier mit Auftragsprgrammierung?
3. Schreibst du mich zu diesem Thema an, um dann eine gute halbe Stunde später einen neuen Beitrag zum Thema zu eröffnen - auch schön.

Ich bin dann raus.

Gruß Werner