Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
556to560
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
556to560
556to560
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Entnahme aus Lager

Entnahme aus Lager
30.01.2005 09:15:13
Georg
Guten Morgen,
Habe ein Lagerprogramm, das einwandfrei mit ganzen Zahlen funktioniert und bisher mit folgendem Makro arbeitet. Nun ist es aber Notwendig, auch mit Kommazahlen zu rechnen; für die Eingabe gehts natürlich, aber bei der Entnahme siehe unten gehts nur mit ganzen Zahlen.
Bitte um Hilfe.
Menge = wks.Cells(10, 4)
men = 0 '--Mengenzähler
With Sheets("Lager")
anz = 10 '--Anzeigezeile

'-----LRow (letzte Reihe wird berechnet)------
LRow = .Cells(Rows.Count, 1).End(xlUp).Row

Mengenrechner:

If men &gt= Menge Then GoTo Ende
For i = 2 To LRow

If .Cells(i, 1) = wks.Cells(10, 1) And .Cells(i, 4) &gt 0 Then _
.Cells(i, 4) = .Cells(i, 4) - 1: _
wks.Cells(anz, 8) = wks.Cells(anz, 8) + 1: wks.Cells(anz, 9) = .Cells(i, 3): _
wks.Cells(10, 10) = wks.Cells(10, 1): boFnd = True: _
men = men + 1: GoTo Mengenrechner

If .Cells(i, 1) = wks.Cells(10, 1) And .Cells(i, 4) = 0 Then _
wks2.Rows(i).Delete Shift:=xlUp: _
anz = anz + 1: _
boFnd = False: _
GoTo Mengenrechner
'Exit For
Next i
Ende:
'--Entnahme komplett zusammenzählen und anzeigen--
For i = 10 To anz
erg = erg + wks.Cells(i, 8)
Next i

wks.Cells(anz + 1, 8) = "Gesamt " & erg

Reinigen '--der Lagerliste

Application.ScreenUpdating = True
If boFnd = True Then
MsgBox "es wurde entnommen"
wks.Select
End If

If Not boFnd Then MsgBox "Keine, " & (Chr(13)) & "oder zuwenig lagernd!"
End With
Grüsse Georg.

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Entnahme aus Lager
30.01.2005 09:37:24
Josef
Hallo Georg!
Wie sind den deine Variablen deklariert?
Wenn du sie als Integer deklariert hast, dann versuch's mal mit Double!
Gruß Sepp
P.S.: Rückmeldung nicht vergessen!
AW: Entnahme aus Lager
30.01.2005 09:47:11
Georg
Hallo Sepp,
Dim anz As Double
Dim Menge As Double
Habe die Variablen schon richtig deklariert, aber das Programm rechnet nur in ganzen Zahlen, da solange 1 entnommen wird bis nichts mehr da ist, danach wird in der nächsten Zeile geschaut ob noch was vorrätig, wenn ja dann wird weiter entnommen, wenn nein kommt eine MsgBox"keine, oder zuwenig lagernd"
Nun müsste, glaubich das Skript komplett umgeändert werden, da es mit 2 Kommastellen rechnen sollte.
Grüsse Georg.
Anzeige
AW: Entnahme aus Lager
30.01.2005 11:25:24
Gert
Hallo Georg,
wofür brauchst Du einen "Mengenzähler" (men)?
Der "men" müßte wohl auch als Double deklariert werden.
Ebenso die Bestandszahlen statt 10, 10,00 (Format).
Mit einer "Wenn-Formel" (If...Then...ELSE) gehts auch ohne Mengenzähler.
Da ich erst VBA-Einsteiger bin, ist mein Durchblick beschränkt.
mfg
Gert
AW: Entnahme aus Lager
30.01.2005 11:48:46
Georg
Hallo,
habe es nun so gelöst:
For i = 2 To LRow

If wks.Cells(10, 1) = wks2.Cells(i, 1) Then '-überprüfen ob ProdNum übereinstimmung
If Menge &lt wks2.Cells(i, 4) Then '-wenn genug im Lager, dann
wks2.Cells(i, 4) = wks2.Cells(i, 4) - Menge '-wegrechnen
wks.Cells(anz, 8) = Menge '-auf Anzeigetafel schreiben
wks.Cells(anz, 9) = wks2.Cells(i, 3) '-auf Anzeigetafel schreiben
wks.Cells(anz, 10) = wks2.Cells(i, 1) '-auf Anzeigetafel schreiben
boFnd = True
GoTo Ende
End If

If RestMenge &gt= wks2.Cells(i, 4) Then '-Restmenge grösser als LagerZeile
RestMenge = RestMenge - wks2.Cells(i, 4)
wks.Cells(anz, 8) = wks2.Cells(i, 4) '-auf Anzeigetafel schreiben
wks.Cells(anz, 9) = wks2.Cells(i, 3) '-auf Anzeigetafel schreiben
wks.Cells(anz, 10) = wks2.Cells(i, 1) '-auf Anzeigetafel schreiben
anz = anz + 1
wks2.Rows(i).Delete Shift:=xlUp '-Zeile löschen
End If
If RestMenge &lt wks2.Cells(i, 4) Then '-Restmenge kleiner als LagerZeile
wks2.Cells(i, 4) = wks2.Cells(i, 4) - RestMenge
RestMenge = 0
wks.Cells(anz, 8) = wks2.Cells(i, 4) '-auf Anzeigetafel schreiben
wks.Cells(anz, 9) = wks2.Cells(i, 3) '-auf Anzeigetafel schreiben
wks.Cells(anz, 10) = wks2.Cells(i, 1) '-auf Anzeigetafel schreiben
anz = anz + 1
boFnd = True
GoTo Ende
End If
End If
Next i

Danke
Grüsse Georg
Anzeige
AW: Entnahme aus Lager
30.01.2005 11:59:55
Georg
Hallo,
habe es nun so gelöst:
For i = 2 To LRow

If wks.Cells(10, 1) = wks2.Cells(i, 1) Then '-überprüfen ob ProdNum übereinstimmung
If Menge &lt wks2.Cells(i, 4) Then '-wenn genug im Lager, dann
wks2.Cells(i, 4) = wks2.Cells(i, 4) - Menge '-wegrechnen
wks.Cells(anz, 8) = Menge '-auf Anzeigetafel schreiben
wks.Cells(anz, 9) = wks2.Cells(i, 3) '-auf Anzeigetafel schreiben
wks.Cells(anz, 10) = wks2.Cells(i, 1) '-auf Anzeigetafel schreiben
boFnd = True
GoTo Ende
End If

If RestMenge &gt= wks2.Cells(i, 4) Then '-Restmenge grösser als LagerZeile
RestMenge = RestMenge - wks2.Cells(i, 4)
wks.Cells(anz, 8) = wks2.Cells(i, 4) '-auf Anzeigetafel schreiben
wks.Cells(anz, 9) = wks2.Cells(i, 3) '-auf Anzeigetafel schreiben
wks.Cells(anz, 10) = wks2.Cells(i, 1) '-auf Anzeigetafel schreiben
anz = anz + 1
wks2.Rows(i).Delete Shift:=xlUp '-Zeile löschen
End If
If RestMenge &lt wks2.Cells(i, 4) Then '-Restmenge kleiner als LagerZeile
wks2.Cells(i, 4) = wks2.Cells(i, 4) - RestMenge
RestMenge = 0
wks.Cells(anz, 8) = wks2.Cells(i, 4) '-auf Anzeigetafel schreiben
wks.Cells(anz, 9) = wks2.Cells(i, 3) '-auf Anzeigetafel schreiben
wks.Cells(anz, 10) = wks2.Cells(i, 1) '-auf Anzeigetafel schreiben
anz = anz + 1
boFnd = True
GoTo Ende
End If
End If
Next i

Danke
Grüsse Georg
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige