2016-07-22 4 views
0

Я совершенно новый с VBA и Excel Macro и то, что я хочу сделать, это просто:VBA Slicer Копирование Метод

Я хочу, чтобы, как только я нажимаю данные в ломтерезки, он будет автоматически скопирован в буфере обмена.

Мои Slicer зовут: Slicer_Internal_Punter_ID

Пожалуйста, дайте мне знать, если вы все еще нужна дополнительная информация. Я думал, что это будет легко, но теперь я схожу с ума.

Спасибо. Я с удовольствием по достоинству оценил бы это.

This is the slicer

и вот детали слайсер

enter image description here.

+2

Этот сайт не является бесплатной услугой кодирования. Если вы новичок в VBA, вы можете начать с чего-то менее сложного. – teylyn

+0

все еще спасибо за это. –

ответ

0

Вы можете использовать следующую процедуру и событие, чтобы получить имя выбранных элементов.

Добавьте эту процедуру в любой модуль и используйте непосредственное окно (View/Immediate window), чтобы прочитать и скопировать правильное имя SliceCache. Его нужно использовать в другом фрагменте.

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 

Второй фрагмент является событием рабочего листа, который должен быть добавлен к листу, который подвергается воздействию на ломтерезки.

Двойной щелчок на листе в редактор макросов (проект Проводник Windows), чтобы добавить код: Adding the Event to the sheet

Второй фрагмент будет печатать выбранные элементы в непосредственных окнах.

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 

Пожалуйста, внимательность, используя правильное имя ломтерезки в этой строке:

Set slcSlicerCache = ThisWorkbook.SlicerCaches("Slicer_Internal_Punter_ID") 

Кроме того, чтобы вывесить имена элементов в буфер обмена, вы можете проверить по следующей ссылке: How to copy text to clipboard

+0

ILL ПОПРОБУЙТЕ ЭТО. БЛАГОДАРЯ :-) –