Avatar billede nehm Nybegynder
13. august 2007 - 17:35 Der 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

Er der noget der kan hjælpe.
Avatar billede kabbak Professor
13. august 2007 - 17:39 #1
range("A1") = (Range("A1")- val(txtantal))

eller hvis det er en talvariabel

range("A1") = (Range("A1")- txtantal)
Avatar billede nehm Nybegynder
13. august 2007 - 17:58 #2
Det ser ud til at virke, men hvis jeg skal gøre det ud fra at txtvare = sko og txtantal = 4

kan man så få en til at lede i matrix vare (excel) efter sko og -4 stk på den linie

Vare er A og stk er E
Avatar billede kabbak Professor
13. august 2007 - 18:17 #3
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
Avatar billede kabbak Professor
13. august 2007 - 18:20 #4
det var sludder, det virker uanset

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
Avatar billede nehm Nybegynder
13. august 2007 - 18:45 #5
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
Avatar billede kabbak Professor
13. august 2007 - 19:30 #6
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
Avatar billede nehm Nybegynder
14. august 2007 - 09:05 #7
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


Me.txtdato.Value = Format(Date, "Medium Date")
Me.txtantal.Value = 1
Me.txtleo_id.SetFocus

End Sub



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
Avatar billede kabbak Professor
14. august 2007 - 09:19 #8
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
Avatar billede nehm Nybegynder
14. august 2007 - 11:40 #9
Der kommer fejl i linien ved i, Compile error: Variable not defined.

For i = LBound(matrix) To UBound(matrix)
Avatar billede kabbak Professor
14. august 2007 - 12:36 #10
husk denne linje

dim Matrix as variant
Avatar billede nehm Nybegynder
14. august 2007 - 12:45 #11
Den er med... men stadig fejl
Avatar billede kabbak Professor
14. august 2007 - 16:09 #12
Prøv at sende et eksempel ark, så kikker jeg

kabbak snabela tiscali dot dk
Avatar billede kabbak Professor
15. august 2007 - 18:17 #13
kode sendt retur:

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


End Sub
Avatar billede nehm Nybegynder
16. august 2007 - 10:13 #14
Perfekt det virker.. lig et svar
Avatar billede kabbak Professor
16. august 2007 - 12:03 #15
et svar;-))
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester