2016-07-22 13 views
0

Ich bin komplett neu mit VBA und Excel-Makros und was ich will zu tun ist einfach:VBA Slicer Copy-Methode

Ich mag, dass, sobald ich ein Datum in einem Slicer klicken, wird es automatisch kopiert werden in der Zwischenablage.

Mein Slicer-Name ist: Slicer_Internal_Punter_ID

Bitte lassen Sie mich wissen, wenn Sie noch weitere Informationen benötigen. Ich dachte, es wäre einfach, aber ich werde jetzt verrückt.

Danke. Ich würde es gerne schätzen.

This is the slicer

und hier ist die Schneidemaschine Details

enter image description here.

+2

Diese Seite ist kein kostenloser Codierservice. Wenn Sie neu in VBA sind, sollten Sie mit etwas weniger Komplexem beginnen. – teylyn

+0

in Ordnung noch danke dafür. –

Antwort

0

Sie können das folgende Verfahren und Ereignis verwenden, um den Namen der ausgewählten Elemente abzurufen.

Fügen Sie diese Prozedur jedem Modul hinzu und verwenden Sie das unmittelbare Fenster (Ansicht/Direkt-Fenster), um den korrekten Namen des SliceCache zu lesen und zu kopieren. Es muss in dem anderen Snippet verwendet werden.

Sub GetSlicerData() 

    '## Variables ## 

    Dim iSlicerCache   As SlicerCache  'Slicer Cache Object 
    Dim iSlicerItem    As SlicerItem  'Slicer Item 
    Dim iSlicer     As Slicer   'Slicer Object 

    '## Looping through Slicer Caches in 'ThisWorkbook' ## 

    For Each slSlicerCache In ThisWorkbook.SlicerCaches 

     Debug.Print ("Slicer Cache Namee: " & slSlicerCache.Name) 'Printing the name property of the SlicerCaches 

     '## Looping through Slicers contained in the SlicerCaches ## 

     For Each iSlicer In slSlicerCache.Slicers 
       Debug.Print ("Slicer Name: " & iSlicer.Name) 'Printing the slicer names 
       Next iSlicer 

     '## Looping through Items contained in the SlicerCaches ## 
        'and testing selection status 

     For Each iSlicerItem In slSlicerCache.SlicerItems 
       If iSlicerItem.Selected = True Then Debug.Print ("Selected Item: " & iSlicerItem.Name)       'Printing the slicer items 
       Next iSlicerItem 

     Next slSlicerCache 

     End Sub 

Der zweite Schnipsel ist ein Arbeitsblatt Ereignis, das zu dem Blatt hinzugefügt werden muss, die durch den Slicer beeinflusst.

Klicken Sie doppelt auf das Blatt im Makro-Editor (Projekt-Explorer-Fenster), um den Code hinzuzufügen: Adding the Event to the sheet

Der zweite Snippet wird die ausgewählten Elemente in der unmittelbaren Fenster drucken.

Private Sub Worksheet_Change(ByVal Target As Range) 

     'Debug.Print ("Sheet name: " & Me.Name) 'Sheet name 

    '## Looping through Slicer Caches in 'ThisWorkbook' ## 

    Dim slcSlicerCache   As SlicerCache  'Slicer Cache Object 
    Dim iSlicerItem    As SlicerItem  'Slicer Item 

    Dim stItems     As String 

    '## Setting slicer cache ## 

    'Replace with the correct name: "Slicer_Internal_Punter_ID" 

    Set slcSlicerCache = ThisWorkbook.SlicerCaches("Slicer_Internal_Punter_ID") 

    For Each iSlicerItem In slcSlicerCache.SlicerItems 
       If iSlicerItem.Selected = True Then 

       Debug.Print ("Selected Item: " & iSlicerItem.Name) 'Printing selected 

        If Len(stItems) = 0 Then stItems = iSlicerItem.Name Else stItems = stItems & vbNewLine & iSlicerItem.Name 

       End If 
       Next iSlicerItem 

       Debug.Print ("Selected Items: " & vbNewLine & stItems) 'Printing selected 

        'ADD CODE HERE: moving content to clipboard 

    End Sub 

Bitte darauf, den korrekten Namen des Slicer in dieser Zeile mit:

Set slcSlicerCache = ThisWorkbook.SlicerCaches("Slicer_Internal_Punter_ID") 

Zusätzlich die Artikelnamen schreiben in der Zwischenablage können Sie unter folgendem Link einsehen: How to copy text to clipboard

+0

ILL VERSUCHEN SIE DIESES. VIELEN DANK :-) –