Thema Datum  Von Nutzer Rating
Antwort
06.06.2014 12:47:52 Corina
NotSolved
06.06.2014 14:32:26 Amicro2000
NotSolved
06.06.2014 14:56:37 Gast15358
NotSolved
06.06.2014 15:17:35 Amicro2000
NotSolved
10.06.2014 09:00:57 Corina
NotSolved
10.06.2014 09:00:58 Corina
NotSolved
11.06.2014 21:55:31 Hmm..Hmm..
*****
Solved
12.06.2014 09:09:38 Corina
NotSolved
12.06.2014 09:09:38 Corina
NotSolved
12.06.2014 09:09:38 Corina
NotSolved
Rot Back to the Future
12.06.2014 21:54:18 Hmm..Hmm..
*****
NotSolved
13.06.2014 09:49:18 Corina
NotSolved

Ansicht des Beitrags:
Von:
Hmm..Hmm..
Datum:
12.06.2014 21:54:18
Views:
928
Rating: Antwort:
  Ja
Thema:
Back to the Future

Hmm..Hmm.. Corina,

(Back to the Future)

der nachstehende Code-Teil (ohne die Einbeziehung der Spalte F) ist nur eine leichte Anpassung aus einer, meiner Tabellen.

Und funktioniert auch auf der von dir "veröffentlichten"  Arbeitsmappe.

Den Hinweis bei "Case 6" lass ich einmal so stehen, denn ich habe den Eindruck, die Meinung ...

mit so einem Klassenmodul betreibt Frau quasi "user guidance".

Oder auf deinen Fall bezogen "Kein Risiko – kein Ereignis, daher keine Kategorien". Ergo sollte Löschen eines relevanten Eintrages auch das Entfernen aller sachbezogenen Einträge bewirken. Denn erfahrungsgemäß verliert der Benutzer bei mehr als einem Dutzend Einträgen rasch den Überblick und "vergessene" Spiegelpunkte verfälschen zumindest die Statistik.

 

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
'Shows dropdown entries for reference columns
'
Rem so allgemein wie möglich, daher
Rem die Spalte wo "Validation-Objekt" variabel
Dim clOffset As Long
'
Rem es ändert sich fallweise nur die Formel1 für das o.g. Objekt, daher
Dim strFormula1 As String
'
Rem Mehrfachselektionen durch den Benutzer sind nicht erlaubt, daher
  If Target.Count > 1 Then Exit Sub
'
Rem die Titelzeilen sind gesperrt, daher
  If Target.row < 6 Then Exit Sub
'
Rem jetzt die Fallunterscheidung nach Spalte
  Select Case Target.column
    Case 3
      strFormula1 = "=Drivers"
    Case 5
      strFormula1 = "=Category"
    Case 6
    'consider guidelines of user interface in functional areas:
    'like data entry, data display, sequence control,  data transmission, and data protection
    Exit Sub
    Case 10
      strFormula1 = "=Organizational_level"
    Case Else
      Exit Sub
  End Select

Rem alle Objekte sind 1 rechts von
  clOffset = 1
Rem die Arbeit macht die Funktion und wenns nicht kracht, dann
Rem soll der Benutzer ja die zugehörige Auswahl treffen, denn
Rem die Excel Voreinstellung ist nie zwingend xlToRight
  If ChkValidation(Len(Trim(Target.Formula)), Target.Offset(0, clOffset), _
    3, 1, 1, strFormula1) Then Target.Offset(0, clOffset).Select
'
End Sub

Private Function ChkValidation(tLen As Long, vCell As Range, _
  vlType As XlDVType, vlStyle As XlDVAlertStyle, vlOperator As XlFormatConditionOperator, _
  vlFormula1 As Variant, Optional vlFormula2 As Variant) As Boolean
'
On Error GoTo errh
Rem das ist eine Krücke, denn als eierlegende Wollmilchsau !
Rem muss die Funktion ja erkennen ob Objekt existiert
Rem womöglich verbesserungswürdig
  If Len(vCell.Validation.Parent) > 0 Then
'
Rem Aha, da ist was - lösche es wenn nichts eingegeben wurde
    If tLen = 0 Then
      Application.EnableEvents = False
      vCell.Validation.Delete
      vCell.Formula = vbNullString
      '
    End If
Rem sonst erzeuge neu
  Else
Rem sicherheitshalber, es gibt auch leere Zellen mit Inhalt
    If tLen > 0 Then
'
Rem eigentlich unnötig, da bereits gelöscht sein müsste
      vCell.Validation.Delete
'
Rem auf ein Neues
      vCell.Validation.Add Type:=vlType, AlertStyle:=vlStyle, _
        Operator:=vlOperator, Formula1:=vlFormula1, Formula2:=vlFormula2
      With vCell.Validation
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .Errormessage = ""
        .ShowInput = False
        .ShowError = True
      End With
    End If
  End If
'
errh:
Rem wie gesagt, das erzeugte Objekt soll den Fokus erhalten
If Err.number = 0 Then ChkValidation = True
'
Application.EnableEvents = True
End Function


Alle Klarheiten beseitigt ?

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
06.06.2014 12:47:52 Corina
NotSolved
06.06.2014 14:32:26 Amicro2000
NotSolved
06.06.2014 14:56:37 Gast15358
NotSolved
06.06.2014 15:17:35 Amicro2000
NotSolved
10.06.2014 09:00:57 Corina
NotSolved
10.06.2014 09:00:58 Corina
NotSolved
11.06.2014 21:55:31 Hmm..Hmm..
*****
Solved
12.06.2014 09:09:38 Corina
NotSolved
12.06.2014 09:09:38 Corina
NotSolved
12.06.2014 09:09:38 Corina
NotSolved
Rot Back to the Future
12.06.2014 21:54:18 Hmm..Hmm..
*****
NotSolved
13.06.2014 09:49:18 Corina
NotSolved