Microsoft Excel

Excel und VBA: Formeln, Programmierung, Lösungen

Die Excel/VBA-Beispiele

Thema

Faxbestellung auf Grundlage einer Artikelliste erstellen

Gruppe

Change

Problem

Wie kann ich eine Faxbestellung auf Grundlage einer Artikelliste erstellen? Das Bestellformular soll sowohl vervollständigt werden, wenn ich im Formular eine Artikelnummer eingebe wie auch, wenn ich in der Artikelliste eine Stückzahl eintrage.

Lösung
Geben Sie den Ereigniscode in das Klassenmodul des Arbeitsblattes ein.

ClassModule: Tabelle2

Private Sub Worksheet_Change(ByVal Target As Range)
   Dim wks As Worksheet
   Dim var As Variant
   If Target.Column <> 1 Then Exit Sub
   If Target.Row < 8 Then Exit Sub
   If Target.Cells.Count > 1 Then Exit Sub
   Set wks = Worksheets("Artikelliste")
   Application.EnableEvents = False
   On Error GoTo ERRORHANDLER
   If IsEmpty(Target) Then
      Range(Cells(Target.Row, 1), _
         Cells(Target.Row, 5)).ClearContents
   Else
      var = Application.Match(Target.Value, wks.Columns(1), 0)
      If Not IsError(var) Then
         Target.Offset(0, 1).Value = wks.Cells(var, 2).Value
         Target.Offset(0, 3).Value = wks.Cells(var, 3).Value
         Target.Offset(0, 4).Formula = "=RC[-2]*RC[-1]"
      End If
   End If
ERRORHANDLER:
   Application.EnableEvents = True
End Sub

ClassModule: Tabelle3

Private Sub Worksheet_Change(ByVal Target As Range)
   Dim wks As Worksheet
   Dim iRow As Integer
   If Target.Column <> 4 Then Exit Sub
   If IsEmpty(Target) Then Exit Sub
   If Target.Cells.Count > 1 Then Exit Sub
   Set wks = Worksheets("Fax-Bestellung")
   iRow = wks.Cells(Rows.Count, 1).End(xlUp).Row + 1
   wks.Cells(iRow, 1).Value = Cells(Target.Row, 1).Value
   wks.Cells(iRow, 2).Value = Cells(Target.Row, 2).Value
   wks.Cells(iRow, 3).Value = Target.Value
   wks.Cells(iRow, 4).Value = Cells(Target.Row, 3).Value
   wks.Cells(iRow, 5).Formula = "=RC[-2]*RC[-1]"
End Sub