2014-09-04 63 views
-3

我的数据是Excel宏与集合实例

Person  City New City 
A   P 
B   Q 
C   R 

我想随机城市列表中指定新城的人(第2列)。但是,新城不应该与已经分配给该人的那个相同。

我试着创建一个Excel宏,但是,我无法获得相同的参考库。例如

Dim RandomClass As New Random() 
Dim RememberSet As New HashSet(Of Integer) 

Dim RandomNumber As Integer 

While RememberSet.Count < 5 
    RandomNumber = RandomClass.Next(0, 10) 
    If RememberSet.Add(RandomNumber) Then 
     MsgBox (RandomNumber) 
    End If 
End While 

在前两行给出编译时错误。任何人都可以帮忙吗?或者上传一个使用列表或集合的excel宏?

+1

你能请澄清这实际上是什么语言:它被标记为[tag:vba]和[tag:excel]和[tag:macros]然而在你的评论中,我怎么回答你说的“这是VB”。他们不一样,答案也会有所不同。我已经在我的答案中添加了两种语言的集合,但请澄清。另外如果可能的话,请考虑通过选择最佳答案来关闭一些其他未解决的问题。考虑哪些答案是有用的并且需要赞成。我们需要用户维护他们的问题,以便该网站可以成为有问题的下一个人的有效工具。 – RossC 2014-09-04 11:07:03

+0

由于代码已经改变,这对我来说不是VBA,而是VB,它们不一样。像“HashClass(Of Integer)”这样的东西不是VBA的一部分。我会选择一种语言并适当地学习语法/谷歌。 – RossC 2014-09-04 11:20:54

+0

@RossC,但OP说他正在用Excel编写.. :)它给出了一个语法错误,因为它不是正确的VBA语法......如果你愿意,我会让你处理这个问题;) – 2014-09-04 11:21:39

回答

1

问题是您正在使用语法来解决问题。 They are different languages,语法不同。你说的是另一种语言。 Excel使用,Visual Basic for Applications即Microsoft Applications。相应地调整您的代码和语法。

假设您按照您的问题使用VBA:您可以使用List ItemCollection来执行此操作。

Dim varCollection As Collection 

没有List类,我在知道这样存在


在VB(而不是VBA),您可以使用:

Dim varCollection As New Microsoft.VisualBasic.Collection() 
+0

其实我想在Excel中使用这个宏,我认为使用VB。然而,这给我编译时错误(语法错误)和我认为相同的原因是它没有得到参考库。所以我想知道应该标记哪个引用库来使用集合对象? – 2014-09-04 11:09:33

+1

@HardikPatel语法错误?有没有一些代码是你没有分享的? – 2014-09-04 11:11:15

+1

我没有任何这方面的参考资料库,它工作正常。字典需要脚本。运行时,但集合是VBA的一部分。尝试'Dim myCollection As VBA.Collection' **什么**语法错误?我们需要更多的细节,只是说错误对我们任何人都没有好处。 – RossC 2014-09-04 11:12:00