필자는 인터넷에서 발견 한 함수를 사용하여 (피벗 테이블이 아닌 표에 연결된) 슬라이서 값을 추출하고이를 셀에 저장합니다. 이 기능에는 Refresh Excel VBA Function Results 질문에서 설명한 것처럼 application.volatile
의 추가 기능이 포함되어 있습니다.새로 고침 application.volatile을 사용하지 않고 사용자 정의 함수
휘발성 기능 때문에 내 OpenSolver 모델을 실행할 수 없습니다. 왜냐하면 Excel은 계산을하고 있기 때문에 OpenSolver는 Excel이 모델링에 준비가되어 있지 않다고 생각합니다.
application.volatile
을 사용하지 않고 슬라이서 값이 변경 될 때마다 셀 값을 업데이트하는 방법이 있습니까?
는 이미 사용하여 시도 :
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveWorkbook.Sheets("Dashboard").Range("B7").Formula = _
ActiveWorkbook.Sheets("Dashboard").Range("B7").Formula
End Sub
및
을Private Sub Worksheet_Change(ByVal Target As Range)
ActiveWorkbook.Sheets("Dashboard").Range("B7").Calculate
End Sub
내가 슬라이서 값을 추출하기 위해 사용하고있는 기능은 http://www.jkp-ads.com/articles/slicers05.asp에서 가져
:
Public Function GetSelectedSlicerItems(SlicerName As String) As String
Dim oSc As SlicerCache
Dim oSi As SlicerItem
Dim lCt As Long
On Error Resume Next
Set oSc = ThisWorkbook.SlicerCaches(SlicerName)
If Not oSc Is Nothing Then
For Each oSi In oSc.SlicerItems
If oSi.Selected Then
GetSelectedSlicerItems = GetSelectedSlicerItems & oSi.Name & ", "
lCt = lCt + 1
End If
Next
If Len(GetSelectedSlicerItems) > 0 Then
If lCt = oSc.SlicerItems.Count Then
GetSelectedSlicerItems = "maandag"
Else
GetSelectedSlicerItems = Left(GetSelectedSlicerItems, Len(GetSelectedSlicerItems) - 2)
End If
Else
GetSelectedSlicerItems = "No items selected"
End If
Else
GetSelectedSlicerItems = "No slicer with name '" & SlicerName & "' was found"
End If
End Function
감사합니다. 피벗 테이블이 아니라 테이블에 가리키는 슬라이서를 추가해야합니다. 따라서 불행히도 연결을보고 할 수 없습니다. 사용자가 데이터를 변경할 수 있어야하기 때문에 테이블을 유지하려면 테이블이 필요합니다. –