我试图在名为q1,q2,q3 ... q11的几个activeX文本框上执行循环。这是我尝试过的,但它没有用:
For i = 1 To 11
myValue(i) = ActiveDocument.q & i.Value
Next
我还尝试了"q" & i
,(q & i)
,("q" & i)
等,但它们都没有用。
然而,当我具体时,它确实有效:
ActiveDocument.q1.Value
我错过了什么?
答案 0 :(得分:1)
看来我们做不到这么简单。以下子项适用于我。
Sub tst()
Dim myValue(1 To 3)
Dim shp As InlineShape
Dim i As Long 'counter
On Error Resume Next
For i = 1 To 3
For Each shp In ActiveDocument.InlineShapes
If Not shp.OLEFormat Is Nothing And _
shp.OLEFormat.ClassType = "Forms.TextBox.1" And _
shp.OLEFormat.Object.Name = "q" & i Then
myValue(i) = shp.OLEFormat.Object.Text
End If
Next
Next
End Sub
如果不起作用,请尝试打开立即窗口( Ctrl + G ),然后进入子( F8 ),转到If
语句并尝试在立即窗口中单独检查每个If
子句,如下所示:
?Not shp.OLEFormat Is Nothing
对于所有这三个条款,您应该获得True
。
如果这部分没问题,那么看一下将值放到数组中的行会发生什么。