13. august 2007 - 17:35Der er
14 kommentarer og 1 løsning
værdi i tekstbox trækkes fra i excel celle
Hej
Jeg er ved at lave et lagestyring excel ark, hvor jeg har lavet lidt VB men jeg mangle at kunne tage den værdi der er i txtantal og trække den fra i en celle i excel
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
Public Sub Vare() txtvare = "sko" txtantal = 2 matrix = Range("vare")
For i = LBound(matrix) To UBound(matrix) If matrix(i, 1) = txtvare Then 'området vare, skal starte i række 1 for at det virker, 'ellers plusses til (i) med det antal rækker den starter nede. Range("Vare")(i, 5) = Range("Vare")(i, 5) - txtantal ' hvis det starter i række 2, skal (i, 5) være (i+1, 5) Exit For End If Next End Sub
Public Sub Vare() txtvare = "sko" txtantal = 2 matrix = Range("vare") For i = LBound(matrix) To UBound(matrix) If matrix(i, 1) = txtvare Then Range("Vare")(i, 5) = Range("Vare")(i, 5) - txtantal Exit For End If Next End Sub
txtvare kan jo være andet end sko og antal er heller ikke fast
kan lave det så det bare er det der bliver skrevet i txtboxen der bliver ledt efter
Public Sub Vare() txtvare = "sko" <--- ?? txtantal = 2 <----?? matrix = Range("vare") For i = LBound(matrix) To UBound(matrix) If matrix(i, 1) = txtvare Then Range("Vare")(i, 5) = Range("Vare")(i, 5) - txtantal Exit For End If Next End Sub
det var bare for at teste, du skal kun bruge det nederste af koden.
matrix = Range("vare") For i = LBound(matrix) To UBound(matrix) If matrix(i, 1) = txtvare Then Range("Vare")(i, 5) = Range("Vare")(i, 5) - txtantal Exit For End If Next
den kommer ud med fejl vad matrix. jeg har lagt det hele ind her som jeg bruger til min form.
Private Sub cmdok_Click()
Dim iRow As Long Dim ws As Worksheet Set ws = Worksheets("Udlevering")
'find first empty row in database iRow = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
'check for a part number If Trim(Me.txtleo_id.Value) = "" Then Me.txtleo_id.SetFocus MsgBox "LEO ID SKAL udfyldes" Exit Sub
End If
If Trim(Me.cbovare.Value) = "" Then Me.cbovare.SetFocus MsgBox "Vare nr. SKAL udfyldes" Exit Sub
End If
If Trim(Me.txtantal.Value) = "" Then Me.txtantal.SetFocus MsgBox "Du glemte et antal." Exit Sub
End If
If Trim(Me.txtdato.Value) = "" Then Me.txtdato.SetFocus MsgBox "Please enter Dato." Exit Sub
End If
If Trim(Me.cbomedarbejder.Value) = "" Then Me.cbomedarbejder.SetFocus MsgBox "Udfyld udleveret af." Exit Sub
End If
'copy the data to the database ws.Cells(iRow, 2).Value = Me.txtleo_id.Value ws.Cells(iRow, 6).Value = Me.cbovare.Value ws.Cells(iRow, 9).Value = Me.txtantal.Value ws.Cells(iRow, 1).Value = Me.txtdato.Value ws.Cells(iRow, 11).Value = Me.cbomedarbejder.Value
'clear the data Me.cbovare.Value = "" Me.txtantal.Value = "1" Me.txtdato.Value = Format(Date, "Medium Date") Me.txtleo_id.SetFocus
matrix = Range("vare") For i = LBound(matrix) To UBound(matrix) If matrix(i, 1) = txtvare Then Range("Vare")(i, 5) = Range("Vare")(i, 5) - txtantal Exit For End If Next
End Sub
Private Sub cmdClose_Click() ActiveWorkbook.Save Unload Me End Sub
Private Sub UserForm_Initialize()
Dim cPart As Range
For Each cPart In wksLager.Range("vare") With Me.cbovare .AddItem cPart.Value .List(.ListCount - 1, 1) = cPart.Offset(0, 1).Value End With Next cPart
For Each cPart In wksMedarbejder.Range("medarbejder") With Me.cbomedarbejder .AddItem cPart.Value .List(.ListCount - 1, 1) = cPart.Offset(0, 1).Value End With Next cPart
Private Sub UserForm_QueryClose(Cancel As Integer, _ CloseMode As Integer) If CloseMode = vbFormControlMenu Then Cancel = True MsgBox "Please use the button!" End If End Sub
du skriver: kan man så få en til at lede i matrix vare (excel) efter sko og -4 stk på den linie.
Så går jeg ud fra at du har navngivet området (matrix med lageroplysninger), som "vare", altså området A1 til E sidste række med data. Måske bør du dimme matrix
du renser dine data før det er trukket fra lageret, det skal gøres efter.
'clear the data Me.cbovare.Value = "" Me.txtantal.Value = "1" Me.txtdato.Value = Format(Date, "Medium Date") Me.txtleo_id.SetFocus
matrix = Range("vare") For i = LBound(matrix) To UBound(matrix) If matrix(i, 1) = txtvare Then Range("Vare")(i, 5) = Range("Vare")(i, 5) - txtantal Exit For End If Next
skal være
dim Matrix as variant matrix = Range("vare") For i = LBound(matrix) To UBound(matrix) If matrix(i, 1) = txtvare Then Range("Vare")(i, 5) = Range("Vare")(i, 5) - txtantal Exit For End If Next
'clear the data Me.cbovare.Value = "" Me.txtantal.Value = "1" Me.txtdato.Value = Format(Date, "Medium Date") Me.txtleo_id.SetFocus
Private Sub cmdok_Click() Dim I As Long Dim iRow As Long Dim ws As Worksheet Set ws = Worksheets("Udlevering")
'find first empty row in database iRow = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
'check for a part number If Trim(Me.txtleo_id.Value) = "" Then Me.txtleo_id.SetFocus MsgBox "LEO ID SKAL udfyldes" Exit Sub
End If
If Trim(Me.cbovare.Value) = "" Then Me.cbovare.SetFocus MsgBox "Vare nr. SKAL udfyldes" Exit Sub
End If
If Trim(Me.txtantal.Value) = "" Then Me.txtantal.SetFocus MsgBox "Du glemte et antal." Exit Sub
End If
If Trim(Me.txtdato.Value) = "" Then Me.txtdato.SetFocus MsgBox "Please enter Dato." Exit Sub
End If
If Trim(Me.cbomedarbejder.Value) = "" Then Me.cbomedarbejder.SetFocus MsgBox "Udfyld udleveret af." Exit Sub
End If
'copy the data to the database ws.Cells(iRow, 2).Value = Me.txtleo_id.Value ws.Cells(iRow, 6).Value = Me.cbovare.Value ws.Cells(iRow, 9).Value = Me.txtantal.Value ws.Cells(iRow, 1).Value = Me.txtdato.Value ws.Cells(iRow, 11).Value = Me.cbomedarbejder.Value
Dim Matrix As Variant Matrix = Range("vare_1") For I = LBound(Matrix) To UBound(Matrix) If Matrix(I, 1) = Me.cbovare Then Range("Vare_1")(I, 5) = Range("Vare_1")(I, 5) - Me.txtantal Exit For End If Next
'clear the data Me.cbovare.Value = "" Me.txtantal.Value = "1" Me.txtdato.Value = Format(Date, "Medium Date") Me.txtleo_id.SetFocus
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.