小编Cit*_*naf的帖子

VBA脚本字典,每个键的多个项目和项目的总和/计数

我希望创建一个每个键有多个项目的字典.以下是我现在正在使用的代码.我花了7个多小时玩字典,我似乎无法弄明白.我的范围输入中的唯一值作为我的字典的键是没有问题的,当我想要为每个键添加项时问题就出现了.如果密钥已经存在,我想对该密钥的项目进行SUM(或添加),或者增加该密钥的"计数",该密钥将存储在该密钥的另一个项目中.也许通过视觉效果最好地解释.

Key        Item1      Item2
PersonA    20         SomeOtherVal
PersonB    40         SomeOtherVal
PersonA    80         SomeOtherVal
PersonB    17         SomeOtherVal
PersonC    13         SomeOtherVal

Result:
Key        Item1(Sum) Item2(Count)
PersonA    100        2
PersonB    57         2
PersonC    13         1
Run Code Online (Sandbox Code Playgroud)

如您所见,存在的所有唯一项都是作为自己的键创建的.如果密钥已经存在,则将Item1添加到密钥的当前总计中,项目2具有计数,并且增加1.以下是我正在使用的代码,我会提供帮助.

Sub dictionaryCreate()

Dim Pair As Variant
Dim q As Range
Dim RAWDATA As Range

Dim d As Dictionary                             'Object
Set d = New Dictionary                          'CreateObject("Scripting.Dictionary")

Set RAWDATA = Worksheets("RAW_DATA").Range(Cells(2, 1), Cells(3000, 1))
For Each q In RAWDATA
    Pair = q.Offset(0, 60).Value + q.Offset(0, 65).Value
    If d.Exists(Pair) Then …
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba

9
推荐指数
2
解决办法
2万
查看次数

Excel VBA - 几秒钟后调用宏来清除状态栏

我想弄清楚是否有一种方法可以调用宏来在执行不同的宏后清除状态栏。我意识到我可以简单地使用:

Application.Wait(Now + TimeValue("00:00:05"))
Application.StatusBar = False
Run Code Online (Sandbox Code Playgroud)

然而,我想做的是让我原来的宏结束,说:

Application.StatusBar = "Macro Function Complete."
Call clearStatusBar
End Sub

Sub clearStatusBar()
'I do not want the application.wait here because it locks up the excel program. 
Application.Wait(Now + TimeValue("00:00:05"))
Application.StatusBar = False
End Sub
Run Code Online (Sandbox Code Playgroud)

有没有办法延迟“Application.StatusBar = False”,同时仍然允许用户访问程序?

如果您需要更清晰的信息,请告诉我。感谢您的帮助。

excel vba

3
推荐指数
1
解决办法
1万
查看次数

PowerPoint VBA在运行期间无法识别Excel表

我有一段很不错的代码,可以从Excel文件中复制一个范围并将其粘贴到PowerPoint中的activeslide上。经过数小时的尝试,将excel的范围粘贴为表格(没有图像),我发现以下代码可以成功工作。注意:myPP = PowerPoint应用程序。

myPP.CommandBars.ExecuteMso "PasteExcelTableSourceFormatting"
myPP.CommandBars.ReleaseFocus
Run Code Online (Sandbox Code Playgroud)

问题在于,当我执行宏时,将粘贴表,但是除非逐步执行代码,否则vba无法识别该表。我已经使用以下代码对此进行了测试。在执行过程中,将完全跳过代码,但在逐步执行过程中将触发该代码。

For Each shp In activeSlide.Shapes
   If shp.HasTable Then
       MsgBox shp.Name
   End If
Next
Run Code Online (Sandbox Code Playgroud)

下面是完整的代码。基本上,我只是希望将excel范围作为表格粘贴到我的Powerpoint中,并希望将该表格扩展为适合幻灯片。我愿意提出一些修改建议。谢谢你的帮助

Dim myPP as Object
Dim activeSlide as Object
Dim shp as Object

Worksheets("Sheet2").Activate
Worksheets("Sheet2").Range(Cells(1,1), Cells(4,7)).Copy
Worksheets("Sheet1").Activate

myPP.CommandBars.ExecuteMso "PasteExcelTableSourceFormatting"
myPP.CommandBars.ReleaseFocus

Dim myTable As String
   For Each shp In activeSlide.Shapes
       If shp.HasTable Then
           MsgBox shp.Name
           myTable = shp.Name
       End If
   Next

With activeSlide.Shapes(myTable)
      .Left = 23
      .Top = 105
      .Width = 650
      .Height = 375
End With
Run Code Online (Sandbox Code Playgroud)

对于ASH

Dim myPP As …
Run Code Online (Sandbox Code Playgroud)

excel vba powerpoint-vba

2
推荐指数
1
解决办法
825
查看次数

标签 统计

excel ×3

vba ×3

excel-vba ×1

powerpoint-vba ×1