VBA中给空值得文本框赋值为1下面怎么改

For i = 16 To 49
If (TextBox & i = "") Then "TextBox & i.text"= 1

   For Each obj In Me.Controls
    For i = 1 To 4
        If obj.Name = "TextBox" & i Then
            If obj.Text = "" Then obj.Text = 1
        End If
    Next i
    Next

建议学习一下控件数组(VBA中比VB中麻烦一些)参考:

http://www.360doc.com/content/10/0112/14/406571_13343606.shtml

追问

再问一下如果我是把textbox值赋在c1 ~c49这些变量中如何将其中变量为零的赋值为1

追答

你赋值的时候为啥不赋值给变量数组?改一下

   Dim C(1 to 34) as Double
   For Each obj In Me.Controls
    For i = 1 To 34
        If obj.Name = "TextBox" & i Then
            C(i) =Val(obj.Text)
        End If
    Next i
    Next
    
    For i=1 To 34
        If C(i)=0 Then C(i)=1
    Next i

   

或者如果TextBox和变量都要改,可以写在一起:

Dim C(1 to 34) as Double
   For Each obj In Me.Controls
    For i = 1 To 34
        If obj.Name = "TextBox" & i Then
            If obj.Text="" Then obj.Text=1
            C(i) =Val(obj.Text)
        End If
    Next i
    Next

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-06-19
我不清楚你的代码用途,我只知道代码中的IF后面不用加()括号的,TextBox & i.text用法也不对
For i = 16 To 49
If OLEObjects("TextBox" & i).Object.Value = "" Then
OLEObjects("TextBox" & i).Object.Value = 1
End If
Next追问

我就是想用text输入的参数相乘让空值不影响结果,再问一下如果我是把textbox值赋在c1 c2~c49如何将其中变量为零的赋值为1

本回答被网友采纳
第2个回答  2015-06-19
If (TextBox & i = "") Then "TextBox" & i.text= 1追问

还是出错

追答If (Controls("TextBox" & i)) = "" Then Controls("TextBox" & i).Text = 1

If (Controls("TextBox" & i)) = "" Then Controls("TextBox" & i).Text = 1

如果不在userform中运行,还需要增加userform

追问

再问一下如果我是把textbox值赋在c1 ~c49变量如何将其中变量为零的赋值为1

追答
for i=1 to 49
if cells(i,3)=0 then
cells(i,3).value=1
end if
next

追问

不是在单元中就是变量名c1

追答for i=1 to 49
if "c" & i=0 then
"c" & i=1
end if
next

相似回答