【问题标题】:Excel VBA - Runtime error 438 : Object doesn't support this property or methodExcel VBA - 运行时错误 438:对象不支持此属性或方法
【发布时间】:2018-04-30 03:01:01
【问题描述】:

我是 VBA 新手,我有以下代码。 如果文本框不是无效的,我想在变量 SumDef 中汇总用户窗体框架中所有文本框的值。

但我明白了

运行时错误 438:对象不支持此属性或方法

Private Sub CommandButton2_Click()

'PROBLEEEEEM


Dim SumDef As Integer
Dim txt As Control

SumDef = 0

For Each txt In Me.Frame3.Controls

    If TypeName(txt) = "TextBox" And IsNumeric(txt.Value) = True Then

    SumDef = SumDef + CInt(txt.Text)

    End If

Next txt

If TextBox2.Value <> vbNullString And CInt(TextBox2.Text) <= SumDef Then

    cell2.Offset(, 7).Value = TextBox2.Text
    cell2.Offset(, 19).Value = TextBox3.Text
    cell2.Offset(, 8).Value = TextBox4.Text
    cell2.Offset(, 9).Value = TextBox5.Text
    cell2.Offset(, 10).Value = TextBox6.Text
    cell2.Offset(, 11).Value = TextBox7.Text
    cell2.Offset(, 12).Value = TextBox8.Text
    cell2.Offset(, 13).Value = TextBox9.Text
    cell2.Offset(, 14).Value = TextBox10.Text
    cell2.Offset(, 15).Value = TextBox11.Text
    cell2.Offset(, 16).Value = TextBox12.Text
    cell2.Offset(, 17).Value = TextBox13.Text
    cell2.Offset(, 18).Value = TextBox14.Text

    MsgBox "Bac enregistré avec succes", vbInformation, "ENR FAB 07"


    Me.CommandButton3.Enabled = True
    Me.CommandButton2.Enabled = False

Else
    MsgBox "Nombre de gants défauts est invalide", vbExclamation, "ENR FAB 07"
    TextBox2.Value = vbNullString
End If

End Sub

【问题讨论】:

    标签: excel vba runtime


    【解决方案1】:

    像这样嵌套你的 If 语句,因为它试图在所有控件上评估 .Value 否则,并非所有控件都有 .Value 属性:

    If TypeName(txt) = "TextBox" Then
        If IsNumeric(txt.Value) = True Then
            SumDef = SumDef + CInt(txt.Text)
        End If
    End If
    

    【讨论】:

    • 谢谢您,先生,它有效。你能告诉我帽子有什么不同吗?
    • 按照您的编码方式,必须对两个表达式进行评估以确定真/假,而第二个表达式由于缺少 .Value 属性而无法在某些控件上进行评估。如果第一个为假,它不会评估第一个,然后不评估第二个。这(短路)可以在 VB.NET 中完成(使用AndAlso),但不能在 VBA 中完成。
    猜你喜欢
    • 2019-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多