Mohammed Zegui
Mohammed Zegui

Reputation: 83

Excel VBA - Runtime error 438 : Object doesn't support this property or method

I'm new to VBA and I have the following code. I want to sum in the variable SumDef the values of all the textboxes in a frame of a userform, if the textbox is not void.

But I get

runtime error 438 : Object doesn't support this property or method

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

Upvotes: 1

Views: 2341

Answers (1)

braX
braX

Reputation: 11755

Nest your If statement like this instead as it's trying to evaluate the .Value on all controls otherwise, and not all controls have a .Value property:

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

Upvotes: 2

Related Questions