Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 5521|回复: 22

[已解决]EXCEL VBA,有没有办法将值转变成是变量名?

[复制链接]
发表于 2013-9-14 21:02 | 显示全部楼层 |阅读模式
Sub text()
dim a$,b$,张三李四 $

a = "张三"
b = "李四"
张三李四 = "dfdafdsf"
MsgBox a & b
End Sub

结果是 张三李四,而非dfdafdsf
如何通过a,b,得到dfdafdsf?
即如何能让程序,将a & b的结果“张三李四”,看成是变量,而非值
请教高手,谢谢
最佳答案
2013-9-14 21:40
  1. Sub text()
  2.     Dim a$, b$, 张三李四$
  3.    
  4.     Dim obj As Object
  5.     Set obj = CreateObject("scripting.dictionary")

  6.     a = "张三"
  7.     b = "李四"
  8.     张三李四 = "dfdafdsf"
  9.    
  10.     obj.Add "a", a
  11.     obj.Add "b", b
  12.     obj.Add "张三李四", 张三李四

  13.     MsgBox obj.Item(a & b)
  14.     Set obj = Nothing
  15. End Sub
复制代码
发表于 2013-9-14 21:31 | 显示全部楼层
这冒失不能吧 只有是你那个默认就是把A和b连接起来啊
回复

使用道具 举报

发表于 2013-9-14 21:32 | 显示全部楼层
回复

使用道具 举报

发表于 2013-9-14 21:33 | 显示全部楼层
换成字典是可以的,但没有多大的意义呀。
回复

使用道具 举报

 楼主| 发表于 2013-9-14 21:38 | 显示全部楼层
hwc2ycy 发表于 2013-9-14 21:32
想实现类似INDIRECT的想法?

对呀,我这样做是有目的的。
a和b都有很多个选择,当a=张一,b=李一 时,C=AAA  
                                         a=张二,b=李二 时,C=BBB
                                          a=张三,b=李三 时,C=CCC
                  。。。   。。。
即a若有m个值,b有n个,就有m*n个组合。我不想一个个地用IF去赋值。于是就想把C变量的名称,改为a&b的值。不知道我这样地投机取巧,E是否能做得到。刚百度了一轮,也没有找到答案......

回复

使用道具 举报

发表于 2013-9-14 21:40 | 显示全部楼层    本楼为最佳答案   
  1. Sub text()
  2.     Dim a$, b$, 张三李四$
  3.    
  4.     Dim obj As Object
  5.     Set obj = CreateObject("scripting.dictionary")

  6.     a = "张三"
  7.     b = "李四"
  8.     张三李四 = "dfdafdsf"
  9.    
  10.     obj.Add "a", a
  11.     obj.Add "b", b
  12.     obj.Add "张三李四", 张三李四

  13.     MsgBox obj.Item(a & b)
  14.     Set obj = Nothing
  15. End Sub
复制代码
回复

使用道具 举报

发表于 2013-9-14 21:40 | 显示全部楼层
lan8930 发表于 2013-9-14 21:38
对呀,我这样做是有目的的。
a和b都有很多个选择,当a=张一,b=李一 时,C=AAA  
                     ...

也许其他办法也能达到 传个附件来看看
回复

使用道具 举报

 楼主| 发表于 2013-9-14 21:42 | 显示全部楼层
hwc2ycy 发表于 2013-9-14 21:33
换成字典是可以的,但没有多大的意义呀。

我明白你的意思了。你是说,将a&b所有可能的组合,装进字典的keys里面,将C的值装进items里,对吧。谢谢你的思路。
回复

使用道具 举报

发表于 2013-9-14 21:44 | 显示全部楼层
hwc2ycy 发表于 2013-9-14 21:40

教我字典 师父 我不会字典
回复

使用道具 举报

发表于 2013-9-14 21:47 | 显示全部楼层
用集合也是可以的。
  1. Sub text1()
  2.     Dim a$, b$, 张三李四$
  3.     Dim obj As New Collection

  4.     a = "张三"
  5.     b = "李四"
  6.     张三李四 = "dfdafdsf"
  7.     obj.Add Item:=a, Key:="a"
  8.     obj.Add Item:=b, Key:="b"
  9.     obj.Add Item:=张三李四, Key:="张三李四"
  10.     MsgBox obj.Item(a & b)
  11. End Sub
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-26 21:08 , Processed in 0.380281 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表