Microsoft Office Forum [ www.Office-Fragen.de ] >> READONLY <<

Microsoft Office 2003-2019 => Excel => Thema gestartet von: Cobrus am September 20, 2016, 09:49:08 Vormittag

Titel: Office 2010: Wenn-Abfrage
Beitrag von: Cobrus am September 20, 2016, 09:49:08 Vormittag
Hallo,

ich versuche momentan ein Formblatt zu erstellen und mich dabei in VBA einzuarbeiten. Derzeit stoße ich auf ein Problem mit einer Wenn-Abfrage. Den dazu gehörenden Code habe ich unten angefügt.

Ich versuche einen Wert festzulegen, der in Abhängigkeit vom Inhalt eines Feldes oder einer von zwei Comboboxen definiert ist. Dabei habe ich bereits festgelegt, dass nur eines der drei Ereignisse, also eine Combobox oder das Feld, eintreten kann.
Die Definition der Zielwerte habe ich über eine multiple Wenn-Abfrage bereits erstellt. Allerdings weiß ich noch nicht wie ich es erreiche, dass das Ergebnis auch mit jeder Änderung neu bestimmt wird. Ich vermute, dass eine Kombination aus Schleife und Wenn-Abfrage das Ergebnis liefern könnte, habe aber keine Ahnung welcher Schleifen-Typ geeignet wäre.

Ich hoffe ihr könnt mir weiterhelfen.


Private Sub SW_Change()
 Range(Cells(3, 27), Cells(4, 28)).ClearContents
 If TypIm.Value = "SM" Or TypCh.Value = "CSM" Or Cells(5, 12) = "El" Then
  Cells(3, 27) = 5
 Else
  If TypIm.Value = "SM, IA" Or TypIm.Value = "SM, TL" Or TypIm.Value = "SM, IA, TL" Then
   Cells(3, 27) = 4
  Else
   If TypCh.Value = "CSM, KU" Or TypCh.Value = "CSM, DÄ" Or TypCh.Value = "CSM, KU, DÄ" Or Cells(5, 12) = "Or" Then
    Cells(3, 27) = 3
   Else
    If TypIm.Value = "IA" Or TypIm.Value = "TL" Or TypIm.Value = "IA, TL" Or TypCh.Value = "KU" Or TypCh.Value = "DÄ" Or TypCh.Value = "KU, DÄ" Then
     Cells(3, 27) = 2
    Else
     Cells(3, 27) = 1
    End If
   End If
  End If
 End If
End Sub
Titel: Antw:Office 2010: Wenn-Abfrage
Beitrag von: Cobrus am September 20, 2016, 14:56:16 Nachmittag
Ich habe das Problem selbst gelöst. Anstatt einer großen Wenn-Schleife, habe ich die einzelnen Bedingungen auf die auslösenden Ereignisse aufgeteilt.

Beispiel:

Private Sub TypIm_Change()
 If TypIm.Enabled = True and TypIm = "SM" Then
 Cells(3, 27).Value = 5
 Else
  If TypIm.Enabled = True and TypIm = "SM, IA" Or TypIm.Enabled = True and TypIm = "SM, TL" Or TypIm.Enabled = True and TypIm = "SM, IA, TL" Then
 Cells(3, 27).Value = 4
 Else
  Cells(3, 27).Value = 2
  EndIF
 EndIF
EndSub

Das erfolgt analog für die zweite Combobox und das Feld.