【发布时间】:2020-01-21 18:43:34
【问题描述】:
我在 PowerPoint 中使用 VBA,一张幻灯片上有 50 多个形状,所有这些都已命名。为了更新形状的颜色,我稍后会在演示文稿中引用一张幻灯片。幻灯片编号存储为全局变量并分配在 sub 中(幻灯片编号保持不变):
Sub getSlideNum()
example1_SlideNum = 25
example2_SlideNum = 26
example3_SlideNum = 27
etc.
End Sub
根据形状名称,我可以使用“example1”、“example2”、“example3”等。然后我将它与“_SlideNum”连接起来,为我提供变量名称。
我不想使用 If 语句或 Select Case 来为每个变量分配幻灯片,而是希望有一个像这样的简短函数:
Function getSlide(shpName As String)
Call getSlideNum 'get the slide num for each from the previously mentioned sub
Dim p As Variant
p = shpName & "_SlideNum"
getSlide = p
End Function
正如预期的那样,getSlide 返回字符串 example1_SlideNum 而不是 25。
有没有办法将字符串转换为变量,以便它使用存储的值而不是字符串文本?
最好有一个像上面这样的简短函数,而不是输入 50 个左右的 Select Case 语句。
【问题讨论】:
-
任何时候你认为“变量变量名”都会想到数组、集合或字典。在这种情况下,
Scripting.Dictionary将是一个不错的选择。
标签: vba variables powerpoint