MS-Office-Forum
Google
   

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Excel
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads Der Renner, 11 Entwicklertools für Access, Tipps & Trick und offene Datenbanken zum einzigartigen Preis.
Themen-Optionen Ansicht
Alt 04.04.2017, 09:26   #1
Alessangelo
Neuer Benutzer
Neuer Benutzer
Strahlen Excel 2013 - Drop-Down Mehrfachauswahl Addition

Hallo Zusammen

Ich habe auf meine Excel File ein Drop-Down erstellt mit Mehrfachauswahl (Spalte C).

Ich möchte in Spalte "D" anzeigen lassen wie viele "Elemente" im Drop Down angewählt wurden. Z.b. 3 Elemente im Drop Down ausgewählt und da soll mir die Zahl 3 angegeben werden in Spalte D...

Krieg es irgendwie nicht hin

Danke für die Hilfe
Angehängte Dateien
Dateityp: xlsm MehrfachauswahlKriterium.xlsm (32,1 KB, 10x aufgerufen)
Alessangelo ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 04.04.2017, 10:30   #2
Oge
MOF User
MOF User
Standard

Hallo Al...,

nimm als Trennzeichen zwischen deinen Texten ein Zeichen, dass in deinen Texten nicht vorkommt, und zähle diese.

__________________

helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.
Oge ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 04.04.2017, 12:38   #3
Beverly
MOF Guru
MOF Guru
Standard

Hi,

vielleicht wäre das eine Möglichkeit:

Code:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim rngDV As Range
Dim oldVal As String
Dim newVal As String
Dim arrWerte
Dim lngAnzahl As Long
Dim lngZaehler As Long
Dim lngVergleich As Long

If Target.Count > 1 Then GoTo exitHandler

On Error Resume Next
Set rngDV = Cells.SpecialCells(xlCellTypeAllValidation)
On Error GoTo exitHandler

If rngDV Is Nothing Then GoTo exitHandler

If Not Intersect(Target, rngDV) Is Nothing Then
      Application.EnableEvents = False
      newVal = Target.Value
      If Target.Value <> "" Then lngAnzahl = 1
      Application.Undo
      oldVal = Target.Value
      Target.Value = newVal
      If oldVal <> "" Then
        If newVal <> "" Then
          Target.Value = oldVal _
            & ", " & newVal
          arrWerte = Split(Target.Value, ", ")
          If UBound(arrWerte) > 0 Then
              lngAnzahl = 0
              With Worksheets("Liste")
                For lngZaehler = 0 To UBound(arrWerte)
                    For lngVergleich = 2 To Application.CountA(.Columns(1)) - 1
                        If .Cells(lngVergleich, 1) = arrWerte(lngZaehler) Then lngAnzahl = lngAnzahl + 1
                    Next lngVergleich
                Next lngZaehler
              End With
            End If
        End If
      End If
      Target.Offset(0, 1).ClearContents
      If lngAnzahl > 0 Then Target.Offset(0, 1) = lngAnzahl
End If

exitHandler:
  Application.EnableEvents = True
End Sub

GrußformelBeverly's Excel - Inn

__________________

Bitte im Beitrag eine kurze Rückmeldung auch in dem Fall geben, wenn ein Problem gelöst wurde - dies hilft auch anderen Usern, wenn sie den betreffenden Thread lesen.
Möchtest du dich außerdem für die Hilfe bei der Lösung deines Problems bedanken? Das kannst du ganz einfach durch die Bewertung eines Beitrags (Schalter unten links).
Beverly ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 04.04.2017, 14:14   #4
Oge
MOF User
MOF User
Standard

Hallo Al...,

da du das Komma als Trennzeichen zwischen den Einträgen und auch innerhalb der einzelnen Einträge hast, wird Karins Vorschlag nicht immer passen. Wenn du die Anzahl nie fehlerhaft manuell anpasst reicht dies:

Code:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim rngDV As Range
Dim oldVal As String
Dim newVal As String

If Target.Count > 1 Then GoTo exitHandler

On Error Resume Next
Set rngDV = Cells.SpecialCells(xlCellTypeAllValidation)
On Error GoTo exitHandler

If rngDV Is Nothing Then GoTo exitHandler

If Not Intersect(Target, rngDV) Is Nothing Then
      Application.EnableEvents = False
      newVal = Target.Value
      Application.Undo
      oldVal = Target.Value
      Target.Value = newVal
      If oldVal <> "" Then
        If newVal <> "" Then
          Target.Value = oldVal _
            & ", " & newVal
          Target.Offset(0, 1) = Target.Offset(0, 1) + 1
        Else
          Target.Offset(0, 1).ClearContents
        End If
      Else
        If newVal <> "" Then
          Target.Offset(0, 1) = 1
        End If
      End If
End If

exitHandler:
  Application.EnableEvents = True
End Sub
Oder du ersetzt in Karins Programm das Komma durch ein Trennzeichen, das nicht im Text vorkommt.

__________________

helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.
Oge ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 04.04.2017, 14:59   #5
Beverly
MOF Guru
MOF Guru
Standard

Hi Fragesteller,

wenn du die zusätzlichen Bezeichnungen wie im konkreten Beispiel (Brief,Tel, Mail, SMS) alle durch Komma ohne nachfolgendes Leerzeichen schreibst, also so (Brief,Tel,Mail,SMS), findet mein Code alle Einträge.
Andere Variante: du verbindest die einzelnen Gültigkeitsauswahlinhalte nicht mit ", " sondern mit "; " - also so:

Code:

          Target.Value = oldVal _
            & "; " & newVal
dann kannst du den meinen Code ebenfalls verwenden. Du musst halt beim Split nur das ", " durch "; " im Code ersetzen.



GrußformelBeverly's Excel - Inn

__________________

Bitte im Beitrag eine kurze Rückmeldung auch in dem Fall geben, wenn ein Problem gelöst wurde - dies hilft auch anderen Usern, wenn sie den betreffenden Thread lesen.
Möchtest du dich außerdem für die Hilfe bei der Lösung deines Problems bedanken? Das kannst du ganz einfach durch die Bewertung eines Beitrags (Schalter unten links).
Beverly ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:34 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

Copyright ©2000-2010 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günther Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.
Beachten Sie bitte auch unsere Nutzungsbedingungen.