Microsoft Excel

Excel und VBA: Formeln, Programmierung, Lösungen

Die Excel/VBA-Beispiele

Thema

Dialogaufruf, wenn zwei Zellen Werte enthalten

Gruppe

ListBox

Problem

Bei Eingaben in Spalte A und B soll jeweils dann, wenn beide Zellen einer Zeile ausgefüllt sind, eine UserForm aufgerufen werden. Die Zellinhalte sind in den in der UserForm auszuwählenden Blättern einzufügen.

Lösung
Den nachfolgenden Code in die benannten Module einfügen.

ClassModule: Tabelle1

Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.Column > 2 Then Exit Sub
   If Not IsEmpty(Cells(Target.Row, 1)) And Not _
      IsEmpty(Cells(Target.Row, 2)) Then
      frmSelect.Show
   End If
End Sub

ClassModule: frmSelect

Private Sub cmdCancel_Click()
   Unload Me
End Sub

Private Sub cmdOK_Click()
   Dim intCounter As Integer, intRow As Integer
   For intCounter = 0 To lstSheets.ListCount - 1
      If lstSheets.Selected(intCounter) Then
         With Worksheets(lstSheets.List(intCounter))
            intRow = .Cells(Rows.Count, 1) _
               .End(xlUp).Row + 1
            .Cells(intRow, 1) = ActiveCell _
            .Offset(0, -1).Value
            .Cells(intRow, 2) = ActiveCell.Value
         End With
      End If
   Next intCounter
   Unload Me
End Sub

Private Sub UserForm_Initialize()
   Dim intCounter As Integer
   For intCounter = ActiveSheet.Index + 1 To _
      Worksheets.Count
      lstSheets.AddItem Worksheets(intCounter).Name
   Next intCounter
End Sub