Microsoft Excel

Excel und VBA: Formeln, Programmierung, Lösungen

Die Excel/VBA-Beispiele

Thema

Lagerbewegungen erfassen und dokumentieren

Gruppe

UserForm

Problem

Lagerbewegungen sollen über eine UserForm erfaßt und dokumentiert werden.

Lösung
Geben Sie den nachfolgenden Code in die genannten Module ein.

ClassModule: frmEdit

Private Sub cboItems_Change()
   lblItems.Caption = Worksheets("Lager").Cells(cboItems.ListIndex + 2, 3).Value
End Sub

Private Sub cmdCancel_Click()
   Unload Me
End Sub

Private Sub cmdOK_Click()
   Dim iRow As Integer
   With wksLager
      If optAusgabe.Value = True Then
         .Cells(cboItems.ListIndex + 2, 3).Value = .Cells(cboItems.ListIndex + 2, 3).Value - CInt(txtPcs.Value)
      ElseIf optRueckgabe.Value = True Then
         .Cells(cboItems.ListIndex + 2, 3).Value = .Cells(cboItems.ListIndex + 2, 3).Value + CInt(txtPcs.Value)
      Else
         Beep
         MsgBox "Bitte Ein- oder Ausgabe wählen!"
         Exit Sub
      End If
   End With
   With wksBewegung
      iRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
      .Cells(iRow, 1).Value = cboItems.Value
      .Cells(iRow, 2).Value = Worksheets("Lager").Cells(cboItems.ListIndex + 2, 2).Value
      .Cells(iRow, 3).Value = CInt(txtPcs.Text)
      .Cells(iRow, 4).Value = txtName.Value
      .Cells(iRow, 5).Value = Now
      If optAusgabe.Value = True Then
         .Cells(iRow, 6).Value = "Ausgabe"
      Else
         .Cells(iRow, 6).Value = "Rückgabe"
      End If
   End With
   Unload Me
End Sub

Private Sub UserForm_Initialize()
   With wksLager
      cboItems.List = _
         .Range(.Cells(2, 1), .Cells(.Range("A1").CurrentRegion.Rows.Count, 2)).Value
   End With
   cboItems.ListIndex = 0
End Sub
StandardModule: basMain

Sub CallForm()
   frmEdit.Show
End Sub

Sub LagerEinAus()
   With wksLager
      If .Visible = xlSheetVisible Then
         .Visible = xlSheetVeryHidden
      Else
         .Visible = xlSheetVisible
         .Select
      End If
   End With
End Sub

Sub BewegungEinAus()
   With wksBewegung
      If .Visible = xlSheetVisible Then
         .Visible = xlSheetVeryHidden
      Else
         .Visible = xlSheetVisible
         .Select
      End If
   End With
End Sub