2016-07-22 4 views
0

私はマクロVBAとExcelとの完全に新たなんだと私がやりたいことは、単にこれです:VBAスライサーコピー方法

私はできるだけ早く私はスライサーでデータをクリックすると、それが自動的にコピーされることを望みますクリップボードに保存します。

私のスライサーの名前がある:あなたはまだ、追加情報が必要な場合Slicer_Internal_Punter_ID

、私に知らせてください。私はそれが簡単だろうと思ったが、今私は狂っている。

ありがとうございました。私は喜んでそれを感謝します。

This is the slicer

、ここスライサーの詳細は

enter image description hereです。

+2

このサイトを無料のコーディングサービスではありません。あなたがVBAを初めてお使いの場合は、あまり複雑ではないものから始めたいかもしれません。 – teylyn

+0

これでも大丈夫です。 –

答えて

0

次の手順とイベントを使用して、選択した項目の名前を取得できます。

この手順を任意のモジュールに追加し、直接ウィンドウ(表示/イミディエイトウィンドウ)を使用して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 

第2のスニペットは、スライサーの影響を受けるシートに追加する必要があるワークシートイベントです。コードを追加するマクロエディタ(プロジェクトエクスプローラウィンドウ)内のシート上

ダブルクリック: 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

私はこれを試します。ありがとうございます:-) –

関連する問題