ActiveX 文本框值循环
ActiveX textbox value looping
我正在尝试在几个名为 q1、q2、q3 ... q11 的 activeX 文本框上执行循环。这是我尝试过的方法,但没有用:
For i = 1 To 11
myValue(i) = ActiveDocument.q & i.Value
Next
我也尝试了 "q" & i
、(q & i)
、("q" & i)
等,但 none 也有效。
但是当我具体时它确实有效:
ActiveDocument.q1.Value
我错过了什么?
看来我们不能简单地做到这一点。以下子项适合我。
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
如果不行,试试打开立即window(Ctrl+G), 步入子 (F8), 移动到 If
语句并尝试在立即 [=29] 中分别检查每个 If
子句=] 像这样:
?Not shp.OLEFormat Is Nothing
所有三个子句都应该得到 True
。
如果这部分没问题,那么看看你将值放入数组的行会发生什么。
我正在尝试在几个名为 q1、q2、q3 ... q11 的 activeX 文本框上执行循环。这是我尝试过的方法,但没有用:
For i = 1 To 11
myValue(i) = ActiveDocument.q & i.Value
Next
我也尝试了 "q" & i
、(q & i)
、("q" & i)
等,但 none 也有效。
但是当我具体时它确实有效:
ActiveDocument.q1.Value
我错过了什么?
看来我们不能简单地做到这一点。以下子项适合我。
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
如果不行,试试打开立即window(Ctrl+G), 步入子 (F8), 移动到 If
语句并尝试在立即 [=29] 中分别检查每个 If
子句=] 像这样:
?Not shp.OLEFormat Is Nothing
所有三个子句都应该得到 True
。
如果这部分没问题,那么看看你将值放入数组的行会发生什么。