gpt4 book ai didi

VBA使用Sendkey执行Excel热键

转载 作者:行者123 更新时间:2023-12-02 11:37:56 26 4
gpt4 key购买 nike

我知道 sendkey 被认为是不好且危险的,但我正在努力找出与前端 Excel 相比如何最好地处理 VBA 中的问题。

我编写了一个个人宏,用于设置未知的数据透视表以重复所有标签,设置为表格,对字段列表进行升序排序,最后隐藏小计。除了小计需要循环之外,一切工作正常,并且当数据量很大时,此循环可能需要很长时间。奇怪的是,如果您只是从前端控件关闭小计,它是即时的。因此,使用 Sendkey 会比实际循环更快。 (Sendkey 正在按下热键来执行关闭小计)

Sub formatpivotTable()
Dim pivotName As Variant
Dim pf As pivotField

On Error Resume Next
pivotName = ActiveCell.PivotTable.Name
If pivotName = "" Then
MsgBox "You did not select a pivot table"
Exit Sub
End If
ActiveSheet.PivotTables("" & pivotName & "").ManualUpdate = True
With ActiveSheet.PivotTables("" & pivotName & "")
.RepeatAllLabels (xlRepeatLabels)
.RowAxisLayout (xlTabularRow)
.FieldListSortAscending = True
'For Each pf In .PivotFields
' pf.Subtotals(1) = True
' pf.Subtotals(1) = False
'Next
End With
ActiveSheet.PivotTables("" & pivotName & "").ManualUpdate = False

'Remove the Loop and instead use the Front End Hotkey
ActiveSheet.Activate 'Normally using activate is bad, but maybe it's good here to ensure your sendkeys hit excel? not even sure this prevents it
Application.SendKeys "%", True
Application.SendKeys "{J}", True
Application.SendKeys "{Y}", True
Application.SendKeys "{T}", True
Application.SendKeys "{D}", True
End Sub

当它工作时,它工作得很漂亮。整个事情在不到一秒钟的时间内完成。但我觉得如果出现问题,您的发送 key 仍然存在用“JYTD”覆盖枢轴信息的危险。我已经注释掉了原来的循环,它在处理大量数据时花费的时间太长。

有什么想法吗?我只是不耐烦使用循环方法吗?

最佳答案

不,你没有不耐烦!如果您使用的是 2007 或更高版本,请使用:

    Application.CommandBars.ExecuteMso "PivotTableSubtotalsDoNotShow"

关于VBA使用Sendkey执行Excel热键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35320766/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com