Sub test()
Dim MyArray(2) As String
MyArray(0) = "Test1"
MyArray(1) = "Test2"
MyArray(2) = "Test3"
Dim i As Integer
For i = 0 To UBound(MyArray)
Debug.Print MyArray(i)
Next
End Sub
现在,我更喜欢你展示的方式,让你知道较低的&;上界,但它';不是强制性的
Tim,
关于对象的错误是由于您使用此格式造成的Set Data(0) = Str1
Set Data(1) = Str2
Set DataType(0) = 1
Set DataType(1) = 2
只有在投射某种类型的对象时才使用Set。在这种情况下,字符串和整数不是对象,因此请丢失集合….但会出现另一个错误,因为Autocad希望DXF代码是整数,并且数组必须按此进行尺寸标注….请确保更改第一个函数/子以接受整数数组
因此,对于使用DXF代码的任何内容,例如Xrecords、SelectionSet过滤器等,您需要使用以下格式:
Dim DataType(1) As Integer
Dim Data(1) As Variant
Data(0) = Str1
Data(1) = Str2
DataType(0) = 1
DataType(1) = 2
HTH 谢谢杰夫 ;即#039;这就是我快速回答而不是集中注意力的结果 ; 谢谢杰夫和鲍勃 ;现在我';我犯了另一个错误,我不知道;我不明白为什么 ;这是代码
Public Sub AddXRec(ByRef XrecName As String, DataType As Variant, Data As Variant)
Dim DictCol As Collection
Dim MyDict As Object
Dim Xrec As AcadXRecord
Set DictCol = This.Drawing.Dictionaries
MyDict = DictCol.Add("VBAtoLisp")
Xrec = MyDict.AddXRecord(XrecName)
Xrec.SetXRecordData DataType, Data
End Sub
这里出错了
MyDict = DictCol.Add("VBAtoLisp")
说它是;预期函数或变量;。。它想要什么 ;我想我可以用add添加一本新词典,但它没有#039;我似乎不喜欢它 ;它正在突出显示;。添加;代码的一部分,如果有帮助的话
编辑:;如果我使用Set MyDict=DictCol,它甚至会出错。添加(“VBAtoLisp”)[根据Jeff关于使用Set for objects的评论尝试。]
Public Sub AddXRec(ByRef XrecName As String, DataType As Variant, Data As Variant)
Dim DictCol As Collection
Dim MyDict As AcadDictionary
'you want this to be a dictionary so no reason not to Dim it as such
Dim Xrec As AcadXRecord
Set DictCol = This.Drawing.Dictionaries
Set MyDict = DictCol.Add("VBAtoLisp")
'if you are setting an object, you need Set X = Y
Set Xrec = MyDict.AddXRecord(XrecName)
Xrec.SetXRecordData DataType, Data
'if you are setting the properties of an object, you don't
End Sub 我也试过了,鲍勃 ;也许你没有';看不到我对其他帖子的编辑 ;我将继续查看帮助,看看是否能够理解正在发生的事情;再次感谢。
页:
1
[2]