VanBasicNaarExe1
Gebruiker
- Lid geworden
- 21 jan 2018
- Berichten
- 43
INLEIDING
In mijn zoektocht om EXCEL beter te leren kennen ben ik bezig met het wijzigen van andere vakjes dan waar ik in bezig ben.
Ik heb hier een klein voorbeeldje van een voorraad.
TOT HOEVER IK GEKOMEN BEN
Het is gelukt om een voorraad-aantal te wijzigen of een locatie te wijzigen.
Wat ik nu wil is met een pulldown menu een keuze in te stellen.
Of af te boeken met het ingevoerde aantal,
Of bij te boeken met het ingevoerde aantal,
Of te wijzigen in het ingevoerde aantal.
Daarvoor programmeer ik in de programmacode.
Er is een logbestand wat meeloopt om alle wijzigingen te noteren.
Alleen een wijziging van de pulldown (j4) bv correctie naar bijboeken (oid) geeft een blanco regel in het logbestand. Ik snap niet waarom dat zo gebeurd.
HULPVRAAG
En het optellen en aftrekken werkt niet ondanks dat ik daar een if-then voor gebruik.
meer info 'achter' het tabblad in de programmacode.
Wat heb ik over het hoofd gezien?
Martin
- - - - -
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [j6]) Is Nothing Then
Application.EnableEvents = False
Set a = Range("b3:b6").Find([j2].Value)
If Not a Is Nothing Then
oa = a.Offset(, 2).Value
ol = a.Offset(, 4).Value
so = [I4]
r = Range([b3], a).Rows.Count
End If
Set b = [b2:g2].Find([k2].Value)
If Not b Is Nothing Then
k = Range([c2], b).Columns.Count
End If
'******************************************************************
'* vanaf hier gebeurt niet wat ik wil
'*
'* nw (=nieuw) is de variabele om in het logbestand (apart tabblad) aan te geven wat er ingevoerd was
'* na (=aantal nieuw) , dat wordt de nieuwe waarde na bijboeken, afboeken of correctie (pulldown i4)
'*
'* Er wordt niets opgeteld (bijboeken) of afgetrokken (afboeken)
'* alleen wordt het nieuwe aantal steeds overschreven (wat wordt gedaan voor correctie)
'* de waarde nw wordt niet 'gevuld' met de ingevoerde waarde van J5
'*
nw = na 'de zojuist ingegeven waarde (nw=nieuw)
If so = "bijboeken" Then 'so = soort wijziging ( bijboeken, afboeken of correctie ) uit i4
na = oa + na
End If
If so = "afboeken" Then
na = oa - na
End If
[b2].Offset(r, k) = [j6]
na = a.Offset(, 2).Value
nl = a.Offset(, 4).Value
[j6 ].ClearContents
End If
With Sheets("log")
.Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(, 7) = Array(CDate(Now()), so, oa, nw, na, ol, nl)
End With
Application.EnableEvents = True
End Sub
In mijn zoektocht om EXCEL beter te leren kennen ben ik bezig met het wijzigen van andere vakjes dan waar ik in bezig ben.
Ik heb hier een klein voorbeeldje van een voorraad.
TOT HOEVER IK GEKOMEN BEN
Het is gelukt om een voorraad-aantal te wijzigen of een locatie te wijzigen.
Wat ik nu wil is met een pulldown menu een keuze in te stellen.
Of af te boeken met het ingevoerde aantal,
Of bij te boeken met het ingevoerde aantal,
Of te wijzigen in het ingevoerde aantal.
Daarvoor programmeer ik in de programmacode.
Er is een logbestand wat meeloopt om alle wijzigingen te noteren.
Alleen een wijziging van de pulldown (j4) bv correctie naar bijboeken (oid) geeft een blanco regel in het logbestand. Ik snap niet waarom dat zo gebeurd.
HULPVRAAG
En het optellen en aftrekken werkt niet ondanks dat ik daar een if-then voor gebruik.
meer info 'achter' het tabblad in de programmacode.
Wat heb ik over het hoofd gezien?
Martin
- - - - -
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [j6]) Is Nothing Then
Application.EnableEvents = False
Set a = Range("b3:b6").Find([j2].Value)
If Not a Is Nothing Then
oa = a.Offset(, 2).Value
ol = a.Offset(, 4).Value
so = [I4]
r = Range([b3], a).Rows.Count
End If
Set b = [b2:g2].Find([k2].Value)
If Not b Is Nothing Then
k = Range([c2], b).Columns.Count
End If
'******************************************************************
'* vanaf hier gebeurt niet wat ik wil
'*
'* nw (=nieuw) is de variabele om in het logbestand (apart tabblad) aan te geven wat er ingevoerd was
'* na (=aantal nieuw) , dat wordt de nieuwe waarde na bijboeken, afboeken of correctie (pulldown i4)
'*
'* Er wordt niets opgeteld (bijboeken) of afgetrokken (afboeken)
'* alleen wordt het nieuwe aantal steeds overschreven (wat wordt gedaan voor correctie)
'* de waarde nw wordt niet 'gevuld' met de ingevoerde waarde van J5
'*
nw = na 'de zojuist ingegeven waarde (nw=nieuw)
If so = "bijboeken" Then 'so = soort wijziging ( bijboeken, afboeken of correctie ) uit i4
na = oa + na
End If
If so = "afboeken" Then
na = oa - na
End If
[b2].Offset(r, k) = [j6]
na = a.Offset(, 2).Value
nl = a.Offset(, 4).Value
[j6 ].ClearContents
End If
With Sheets("log")
.Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(, 7) = Array(CDate(Now()), so, oa, nw, na, ol, nl)
End With
Application.EnableEvents = True
End Sub
Bijlagen
Laatst bewerkt: