将字符串转换为 VBA 全局变量
Convert string to VBA Global Variable
我在 PowerPoint 中使用 VBA,一张幻灯片上有 50 多个形状,所有形状都已命名。为了更新形状的颜色,我在演示文稿后面引用了一张幻灯片。幻灯片编号存储为全局变量并在子中分配(幻灯片编号保持不变):
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
returns 字符串 example1_SlideNum
而不是 25
。
有没有办法将字符串转换为变量,以便它使用存储的值而不是字符串文本?
最好有一个像上面这样的简短函数,而不是输入 50 个左右 Select 个 Case 语句。
正如我在评论中提到的,字典是存储这些全局变量的不错选择。
首先转到工具>>参考并选择 Microsoft Scripting Runtime
使用字典对象:
Private SlideDict As Dictionary
Sub getSlideNum()
Set SlideDict = New Scripting.Dictionary
SlideDict.Add "example1_SlideNum", 25
SlideDict.Add "example2_SlideNum", 26
SlideDict.Add "example3_SlideNum", 27
End Sub
Sub UsingTheDictionaryExample()
getSlideNum
Debug.Print SlideDict("example1_SlideNum")
'You can concatenate a variable into your dictionary key as well
Dim mySlideNum As Integer
mySlideNum = 2
Debug.Print SlideDict("example" & mySlideNum & "_SlideNum")
End Sub
运行 最后一个子例程将在 immediate
window 窗格中打印出“25”和“26”。
我在 PowerPoint 中使用 VBA,一张幻灯片上有 50 多个形状,所有形状都已命名。为了更新形状的颜色,我在演示文稿后面引用了一张幻灯片。幻灯片编号存储为全局变量并在子中分配(幻灯片编号保持不变):
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
returns 字符串 example1_SlideNum
而不是 25
。
有没有办法将字符串转换为变量,以便它使用存储的值而不是字符串文本?
最好有一个像上面这样的简短函数,而不是输入 50 个左右 Select 个 Case 语句。
正如我在评论中提到的,字典是存储这些全局变量的不错选择。
首先转到工具>>参考并选择 Microsoft Scripting Runtime
使用字典对象:
Private SlideDict As Dictionary
Sub getSlideNum()
Set SlideDict = New Scripting.Dictionary
SlideDict.Add "example1_SlideNum", 25
SlideDict.Add "example2_SlideNum", 26
SlideDict.Add "example3_SlideNum", 27
End Sub
Sub UsingTheDictionaryExample()
getSlideNum
Debug.Print SlideDict("example1_SlideNum")
'You can concatenate a variable into your dictionary key as well
Dim mySlideNum As Integer
mySlideNum = 2
Debug.Print SlideDict("example" & mySlideNum & "_SlideNum")
End Sub
运行 最后一个子例程将在 immediate
window 窗格中打印出“25”和“26”。