有阵列吗?
本人';我有一个程序;我正在努力,我需要创建一个信息列表 ;基于各种搜索I';我做完了,我';我现在可能比以前更困惑了 ;本人';我不知道最好的方法是什么(编写字典、数组、集合等),但我&35;039;我想学习如何使用arrray所以这里';s勺…
程序I';m将创建一系列图形,并向其中添加各种布局选项卡 ;对于初学者,我需要根据文件名以及与之相关联的布局选项卡来收集图形信息
例如:;图纸#039;A';可以有布局选项卡';A''B''C ;图纸#039;B#039;可以有布局选项卡';A1和039'A2''A3和039'A4和#039'A5和039;等等等等
I';我目前正在从我的程序的listview框中收集信息(请参阅随附的DVB) ;当你点击;“创建项目文件”;按钮,它循环浏览listview中的条目 ;但我需要做的是收集以下信息:绘图#039;A'
布局选项卡';A'
布局选项卡';B#039
布局选项卡';C#039
图纸';B#039
布局选项卡';A1和039
布局选项卡';A2和039
布局选项卡';A3和039
布局选项卡';A4和039
布局选项卡';A5和039
等等…
那么我需要做一个数组吗(就好像一个简单的数组没有给我足够的悲伤) ;我希望这有意义。
**** Hidden Message ***** 一种方法是收集 ;可以创建具有名称的DwgInfo对象(图a);并且有一个集合,您可以在其中存储布局名称
类似这样的内容:在名为DwgInfo的类模块中[代码然后在代码模块中:
Public Sub Test()
Dim dwg1 As DwgInfo
Dim dwg2 As DwgInfo
Dim colDwg As Collection
Dim i As Integer
Set colDwg = New Collection
Set dwg1 = New DwgInfo
Set dwg2 = New DwgInfo
dwg1.Name = "Drawing A"
dwg1.add ("A")
dwg1.add ("B")
dwg1.add ("C")
dwg2.Name = "Drawing B"
dwg2.add ("A1")
dwg2.add ("A2")
dwg2.add ("A3")
For i = 1 To dwg1.Count
'do your stuff here
Debug.Print dwg1.Item(i)
Next i
For i = 1 To dwg2.Count
'do your stuff here
Debug.Print dwg2.Item(i)
Next i
End Sub
此外,在您的代码模块中,您可以有另一个集合来保存dwgInfo对象,然后迭代该集合来发挥您的魔力
如果使用数组,则必须调整其大小以添加集合速度可能较慢但更易于用于动态大小数据的元素
只有我的2美分。 本人';我不确定收藏会是一种方式,因为1)图形/布局选项卡的数量会因情况而异,2)如何确定某个项目是否已经在收藏中 ;不存在函数 ;这是一个单独的函数吗
I';我真的很想弄清楚这个数组 ;It#039;他快把我逼疯了
谢谢你的意见。 托妮:这里';是“创建项目文件”按钮后面的代码
Private Sub cmdSetup_Click()
Dim i As Integer
Dim intFileNumber As Integer
Dim strLayout As String, strFileName As String
For i = 1 To lvTech.ListItems.Count
intFileNumber = lvTech.ListItems(i)
strLayout = lvTech.ListItems(i).ListSubItems(1)
strFileName = lvTech.ListItems(i).ListSubItems(3)
Debug.Print strFileName
Debug.Print strLayout
Next i
End Sub 这就是它在即时窗口中吐出的内容
这是基于你在我第一篇帖子中看到的图片。 如果我';我理解你';重新瞄准正确的目标(我可能不是…)David Blackmon发布的代码似乎完全符合您的要求-对于每个图形,创建一个新的DwgInfo对象,将布局添加到其中,然后将其添加到集合 ;如果需要,您可以编写一个exists属性,该属性在集合中循环?
收藏是最好的方式吗 ;还是阵列更好 ;只是好奇。 还有一个问题 Dim dwg1 As DwgInfo
Dim dwg2 As DwgInfo 提供的代码有2个变暗 ;我想,我怎么能这样呢;dim“;当我遇到更多的图画时,更多的在飞
It';已经很久了,我';我已经盯着这个代码好几个小时了,它35;039;一切都变得模糊了,请原谅我';我在问“你是谁?”;“愚蠢”;问题  ;
收藏是最好的方式吗 ;还是阵列更好 ;只是好奇
实际上,这取决于你想用它们做什么 ;与数组相比,集合有两个优点-添加到集合中非常简单,与不使用的数组不同';不要担心它有多满,你是否有空间,空间在哪里 ;其次,您可以通过索引或键引用集合中的项目,数组只能使用索引;收集理论上比数组慢,但我怀疑你35;039;d通知 ;不过,要记住的一件事是,收藏#039;索引从1开始,而不是从0开始 您应该能够在循环中创建对象,如下所示:(注意,未测试)Public Sub Test()
Dim dwg As DwgInfo
Dim colDwg As Collection
Dim i As Integer
Dim j As Integer
Set colDwg = New Collection
For i = 1 To lvTech.ListItems.Count
Set dwg = new DwgInfo
dwg.Name = lvTech.ListItems(i).ListSubItems(3)
For j = 1 To dwg.Count
dwg.add( -insert the code for the layout in here- )
Next j
colDwg.add(dwg)
Next i
End Sub
无论如何,是这样的 ;你';我需要做一些健全的检查-再次,未经测试 你可以调暗一个变量,并反复使用它Public Sub Test()
Dim dwg1 As DwgInfo
Dim dwg2 As DwgInfo
Dim colDwg As Collection
Dim i As Integer
Dim j As Integer
Set colDwg = New Collection
Set dwg1 = New DwgInfo
Set dwg2 = New DwgInfo
'loop thru the possible drawing names here and add them to the colDwg
For i = 1 To 5
Set dwg1 = New DwgInfo
'add another loop here to add each layout to the dwg1 object
dwg1.Name = "Drawing A" + Str(i)
dwg1.add ("A" + Str(i))
dwg1.add ("B" + Str(i))
dwg1.add ("C" + Str(i))
colDwg.add dwg1
Set dwg1 = Nothing
Next i
For i = 1 To 5
Set dwg2 = colDwg.Item(i)
For j = 1 To dwg2.Count
Debug.Print dwg2.Item(j)
Next j
Next i
End Sub
页:
[1]
2