vb中把变量中的内容取出来作为对象名
动态创建的一些textbox控件,创建的时候给了相应的名称,但是现在要引用这个控件,因为控件很多,所以要这样,代码给出来PrivateSubCommand5_Click(...
动态创建的一些textbox控件,创建的时候给了相应的名称,但是现在要引用这个控件,因为控件很多,所以要这样,代码给出来
Private Sub Command5_Click()
Dim str As String
Dim i, j As Integer
For i = 0 To N - 1
For j = 0 To M - 1
str = "text" & CStr(i) & CStr(j) ‘str中是对象名text...
If str.Text = "" Then '这句是错的,但就是要实现这样的功能
MsgBox "没有填满!"
Exit Sub
End If
Next
Next
End Sub 展开
Private Sub Command5_Click()
Dim str As String
Dim i, j As Integer
For i = 0 To N - 1
For j = 0 To M - 1
str = "text" & CStr(i) & CStr(j) ‘str中是对象名text...
If str.Text = "" Then '这句是错的,但就是要实现这样的功能
MsgBox "没有填满!"
Exit Sub
End If
Next
Next
End Sub 展开
2个回答
2013-08-20
展开全部
我不知道你为什么那样做,但是我想你可不可以用这样的方法!
因为你动态控件的名字是固定的只是后面的标号不同。如你的控件名为TEXT1 那么你动态创建的控件应该是TEXT1(0)TEXT1(1)TEXT(2)...TEXT(N)这里的N不是你程序里的哦
把你定义变量这句
Dim str As String 改为 Dim str As integer
和这两句
str = "text" & CStr(i) & CStr(j) ‘str中是对象名text...
If str.Text = "" Then '这句是错的,但就是要实现这样的功能
改为
str=n * i + (j + 1)
if text1(str).text="" then 'text1 是你那个控件数组的名字 你根据你的实际情况改
我不知道你说的是不是我上面那个意思
下面给你个我写的例子 包括了动态创建控件 和给控件填写字符 两个按钮COMMAND1 和COMMAND2 创建一个textbox数组 就是把text1的index属性改为0 command1是创建控件 command2是填写字符
程序代码如下
Private Sub Command1_Click()
Dim i As Integer
Dim j As Integer
Dim a As Integer
Dim n As Integer
Dim m As Integer
n = 4
m = 4
For i = 0 To n - 1
For j = 0 To m - 1
a = n * i + (j + 1)
Load Me.Text1(a)
Text1(a).Top = Text1(0).Top + 2 * Text1(0).Height * (j + 1)
Text1(a).Left = Text1(0).Left + Text1(0).Width * (i + 1)
Text1(a).Visible = True
Next
Next
End Sub
Private Sub Command2_Click()
Dim i As Integer
Dim j As Integer
Dim a As Integer
Dim n As Integer
Dim m As Integer
n = 4
m = 4
For i = 0 To n - 1
For j = 0 To m - 1
a = n * i + (j + 1)
Text1(a).Text = "text" + CStr(i) + CStr(j)
Next
Next
End Sub
最后提示下 如果你建立的控件属于同一类型 使用控件数组 很容易操作这些控件。
如果我的回答无法满足要求请继续补充问题
因为你动态控件的名字是固定的只是后面的标号不同。如你的控件名为TEXT1 那么你动态创建的控件应该是TEXT1(0)TEXT1(1)TEXT(2)...TEXT(N)这里的N不是你程序里的哦
把你定义变量这句
Dim str As String 改为 Dim str As integer
和这两句
str = "text" & CStr(i) & CStr(j) ‘str中是对象名text...
If str.Text = "" Then '这句是错的,但就是要实现这样的功能
改为
str=n * i + (j + 1)
if text1(str).text="" then 'text1 是你那个控件数组的名字 你根据你的实际情况改
我不知道你说的是不是我上面那个意思
下面给你个我写的例子 包括了动态创建控件 和给控件填写字符 两个按钮COMMAND1 和COMMAND2 创建一个textbox数组 就是把text1的index属性改为0 command1是创建控件 command2是填写字符
程序代码如下
Private Sub Command1_Click()
Dim i As Integer
Dim j As Integer
Dim a As Integer
Dim n As Integer
Dim m As Integer
n = 4
m = 4
For i = 0 To n - 1
For j = 0 To m - 1
a = n * i + (j + 1)
Load Me.Text1(a)
Text1(a).Top = Text1(0).Top + 2 * Text1(0).Height * (j + 1)
Text1(a).Left = Text1(0).Left + Text1(0).Width * (i + 1)
Text1(a).Visible = True
Next
Next
End Sub
Private Sub Command2_Click()
Dim i As Integer
Dim j As Integer
Dim a As Integer
Dim n As Integer
Dim m As Integer
n = 4
m = 4
For i = 0 To n - 1
For j = 0 To m - 1
a = n * i + (j + 1)
Text1(a).Text = "text" + CStr(i) + CStr(j)
Next
Next
End Sub
最后提示下 如果你建立的控件属于同一类型 使用控件数组 很容易操作这些控件。
如果我的回答无法满足要求请继续补充问题
2013-08-20
展开全部
这样语法是错误的,变量是不能做为对像处理的
有两种方法可以解决
1。动态创建控件数组,即创建text()
每次只要用text(i)即可指定这个控件
例如,text(1)就是标识为1的控件
2。用循环来做
把窗体中全部的Text控件列出来
For Each Contrl In Me
If InStr(1, Contrl.Name, "Text") <> 0 Then Debug.Print Contrl.Name
Next
有两种方法可以解决
1。动态创建控件数组,即创建text()
每次只要用text(i)即可指定这个控件
例如,text(1)就是标识为1的控件
2。用循环来做
把窗体中全部的Text控件列出来
For Each Contrl In Me
If InStr(1, Contrl.Name, "Text") <> 0 Then Debug.Print Contrl.Name
Next
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询