excel 在VBA中创建切片器到表

wlp8pajw  于 2022-12-14  发布在  其他
关注(0)|答案(1)|浏览(189)

我有一个VBA代码,我转储从我的数据库下载的数据,它的格式为我所需要的。我试图添加一部分代码,将自动创建一个切片器,并为我的一个字段,但它给我一个错误,我不知道如何修复它。
我的目标是,在CSV文件中进行了所有修改之后,在数据上方添加14行,将数据转换为表,并为具有14行的表添加切片器。
这是我目前拥有的代码:

wsO.Rows("1:14").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
lRowSlicer = lRow + 14
wsO.ListObjects.Add(xlSrcRange, Range("$A$15:$AO$" & lRowSlicer), , xlYes).Name = "PO_Table"
wsO.ListObjects("PO_Table").TableStyle = ""
    
Set wb = ActiveWorkbook
wb.SlicerCaches.Add2(wsO.ListObjects("PO_Table"), "Supplier") _
    .Slicers.Add wsO, , "Supplier", "Supplier", 6, 6, 1049.76, 200
With wb.SlicerCaches("Slicer_Supplier").Slicers("Supplier")
    .NumberOfColumns = 4
    .RowHeight = 28.8
End With

当VBA到达

wb.SlicerCaches.Add2(wsO.ListObjects("PO_Table"), "Supplier") _
        .Slicers.Add wsO, , "Supplier", "Supplier", 6, 6, 1049.76, 200

然后它给我无效的过程调用或参数错误。我如何使它工作?

vlju58qv

vlju58qv1#

如果有人遇到和我一样的问题,我重新创建了我的整个代码,现在它的工作:

Dim pSlicers As Slicers
Dim sSlicer As Slicer

Dim pSlicersCaches As SlicerCaches
Dim sSlicerCache As SlicerCache

Set wb = Application.ThisWorkbook

Set pTable = wsO.ListObjects("PO_Table")

Set pSlicersCaches = wb.SlicerCaches
Set sSlicerCache = pSlicersCaches.Add2(pTable, "Supplier", "Supplier")
Set sSlicer = sSlicerCache.Slicers.Add(SlicerDestination:=wsO.Name, _
                                       Name:="SupplierSlicer", _
                                       Caption:="Supplier", _
                                       Top:=6, Left:=6, _
                                       Width:=Application.InchesToPoints(11.4), _
                                       Height:=Application.InchesToPoints(2.54))

'Modify Slicer
sSlicer.NumberOfColumns = 4
sSlicer.RowHeight = 28.8

相关问题