Excel 使用loop-VBA创建结构
我试图循环遍历一个表,并为每一行创建一个结构实例。我遇到的问题是每个结构的命名都不同。这就是我目前所拥有的。我还没有启动单个结构,因为我一直坚持用不同的名称命名它们。。。怎么做Excel 使用loop-VBA创建结构,excel,vba,Excel,Vba,我试图循环遍历一个表,并为每一行创建一个结构实例。我遇到的问题是每个结构的命名都不同。这就是我目前所拥有的。我还没有启动单个结构,因为我一直坚持用不同的名称命名它们。。。怎么做 Public Type Suggestion Person As String Suspect As String Weapon As String Room As String Refuted As String Card As String End Type
Public Type Suggestion
Person As String
Suspect As String
Weapon As String
Room As String
Refuted As String
Card As String
End Type
Do While Application.WorksheetFunction.IsText(CCell)
Dim Name As String
Name = "Suggestion" & CStr(NSelections + 1)
Dim Name As Suggestion
//Initiate struct instance
NSelections = NSelections + 1
CCell = Cells(3 + NSelections, 9)
Loop
不幸的是,你的意图并不完全清楚。但是,下面的代码将使您走上正确的道路。请试一试
Public Type Suggestion
Person As String
Suspect As String
Weapon As String
Room As String
Refuted As String
Card As String
End Type
Sub Macro()
Dim Temp As Suggestion ' instance of 'Suggestion' type
Dim R As Long ' loop counter: rows
For R = 2 To Cells(Rows.Count, "A").End(xlUp).Row
With Temp
.Person = Cells(R, 1).Value
.Suspect = Cells(R, 2).Value
.Weapon = Cells(R, 3).Value
.Room = Cells(R, 4).Value
.Refuted = Cells(R, 5).Value
.Card = Cells(R, 6).Value
End With
Next R
With Temp
MsgBox .Person & vbCr & _
.Suspect & vbCr & _
.Weapon & vbCr & _
.Room & vbCr & _
.Refuted & vbCr & _
.Card
End With
End Sub
我的代码的目的是演示如何使用您创建的类型。它显示了如何将工作表中的值分配给类型的每个成员。然后,它将向您展示如何检索指定的值
对于它的其余部分,它没有意义,因为只有变量Temp
的一个实例。来自每一行的数据都会被写入其中,每一个新行都会覆盖上一行,因此最后只保留最后一行的数据。现在,您可以创建一个数组,比如Temp(10),为每个元素分配一个不同的Suggestion
实例,并使用Temp(2).Person这样的语法调用成员。这项工作做得很好,但问题是怎么做。您最好使用表或将表复制到其中的数组。类型
数据类型可能不是处理需要内存中所有内容的数据的最有效方法
我从来没有机会在我的项目中使用类型。但我认为它的最佳用途是保存单个数据集,正如上面的代码所示。不要创建多个Temp
实例,而是查找所需的原始数据,并将该行中的数据分配给Temp
。然后,如果您想要另一个实例,请为下一次创建它。当您Dim Name As Suggestion
时,您只需覆盖刚才在该变量中填充的内容。如果您想按名称引用结构,则考虑将它们存储在字典中。